> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GameInputGamepadInfo

> Référence de la structure GameInputGamepadInfo : décrit la disposition de la manette, les étiquettes physiques de chaque bouton, le nombre de boutons supplémentaires et le nombre d'axes supplémentaires.

# GameInputGamepadInfo

Décrit les propriétés d'une manette.

<a id="syntaxSection" />

## Syntaxe

```cpp theme={null}
struct GameInputGamepadInfo
{
    GameInputGamepadButtons supportedLayout;
    GameInputLabel          menuButtonLabel;
    GameInputLabel          viewButtonLabel;
    GameInputLabel          aButtonLabel;
    GameInputLabel          bButtonLabel;
    GameInputLabel          cButtonLabel;
    GameInputLabel          xButtonLabel;
    GameInputLabel          yButtonLabel;
    GameInputLabel          zButtonLabel;
    GameInputLabel          dpadUpLabel;
    GameInputLabel          dpadDownLabel;
    GameInputLabel          dpadLeftLabel;
    GameInputLabel          dpadRightLabel;
    GameInputLabel          leftShoulderButtonLabel;
    GameInputLabel          rightShoulderButtonLabel;
    GameInputLabel          leftThumbstickButtonLabel;
    GameInputLabel          rightThumbstickButtonLabel;
    uint32_t                extraButtonCount;
    uint32_t                extraAxisCount;
};
```

<a id="membersSection" />

### Membres

*supportedLayout*<br />
Type : [GameInputGamepadButtons](/fr-CA/reference/input/gameinput/enums/gameinputgamepadbuttons)

Décrit la disposition de la manette. Puisque les axes ont des traductions en boutons, celles-ci peuvent servir à déterminer quels axes sont présents sur la manette.

*menuButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton Menu.

*viewButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton Affichage.

*aButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton **A**.

*bButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton **B**.

*cButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton **C**.

*xButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton **X**.

*yButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton **Y**.

*zButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton **Z**.

*dpadUpLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique de la direction haut du pavé directionnel.

*dpadDownLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique de la direction bas du pavé directionnel.

*dpadLeftLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique de la direction gauche du pavé directionnel.

*dpadRightLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique de la direction droite du pavé directionnel.

*leftShoulderButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton supérieur gauche.

*rightShoulderButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bouton supérieur droit.

*leftThumbstickButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bâton analogique gauche.

*rightThumbstickButtonLabel*<br />
Type : [GameInputLabel](/fr-CA/reference/input/gameinput/enums/gameinputlabel)

Étiquette physique du bâton analogique droit.

*extraButtonCount*<br />
Type : uint32\_t

Le nombre de boutons du périphérique qui ne sont pas mappés à des boutons de manette.

*extraAxisCount*<br />
Type : uint32\_t

Le nombre d'axes du périphérique qui ne sont pas mappés à des axes de manette.

<a id="remarksSection" />

## Remarques

Cette structure est utilisée dans la structure [GameInputDeviceInfo](/fr-CA/reference/input/gameinput/structs/gameinputdeviceinfo).

`GameInputDeviceInfo` est utilisée par la méthode [IGameInputDevice::GetDeviceInfo](/fr-CA/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo).

Pour plus d'informations, consultez [Périphériques GameInput](/fr-CA/build/core-features/common/input/overviews/input-devices).

### Disposition de la manette

GameInput prend en charge une gamme de formats de manettes au lieu de limiter la prise en charge à une seule disposition standard. Cela est exposé par le membre `supportedLayout` de cette structure sous forme de champ de bits de type [GameInputGamepadButtons](/fr-CA/reference/input/gameinput/enums/gameinputgamepadbuttons). Les axes sont également présents dans cette énumération par l'intermédiaire des traductions d'axe en bouton, comme `GameInputGamepadLeftTriggerButton`. Pour plus d'informations sur ces traductions, consultez [GameInputGamepadButtons](/fr-CA/reference/input/gameinput/enums/gameinputgamepadbuttons#remarks).

Il n'existe aucune disposition minimale requise pour une manette, et celle-ci peut comporter n'importe quelle combinaison des axes et boutons pris en charge. Les boutons ou axes non pris en charge doivent être laissés de côté et accessibles en tant qu'axes ou boutons supplémentaires.

Nous avons défini sous forme de constantes certains regroupements courants d'éléments de manette et certaines dispositions courantes. Ceux-ci peuvent servir à identifier rapidement une disposition courante, à filtrer des entrées particulières ou à créer des dispositions personnalisées. Pour plus d'informations, consultez [GameInputGamepadButtons](/fr-CA/reference/input/gameinput/enums/gameinputgamepadbuttons#constantsSection).

Puisque l'éventail attendu de dispositions et de formats pris en charge est illimité, nous nous attendons à ce que les mappages et les utilisateurs de manettes respectent un petit ensemble de considérations et de comportements :

* Pour les éléments présents en double, comme les bâtons analogiques, les boutons supérieurs ou les gâchettes, si un seul est présent au centre, il doit par défaut être considéré comme l'élément gauche. S'il est placé à gauche ou à droite du périphérique, il doit être mappé en conséquence.

* Afin d'éviter toute ambiguïté due à des glyphes différents, les boutons frontaux doivent être mappés et lus selon leur position physique, quel que soit leur glyphe, comme suit :

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/input-gamepad-facebutton-layouts.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=37ae6f7821291d3118275f019d27685d" alt="Directives de disposition des boutons frontaux de la manette" height="600" data-path="images/input-gamepad-facebutton-layouts.png" />

L'exemple de code suivant montre comment déterminer si une manette prend en charge une disposition, une entrée particulière ou un module.

```cpp theme={null}
bool IsStandardLayout(const GameInputGamepadInfo& gamepadInfo) noexcept
{
    // Supports the standard layout and no more
    return (gamepadInfo.supportedLayout & GameInputGamepadLayoutStandard) == GameInputGamepadLayoutStandard;
}

bool IsDpadSupported(const GameInputGamepadInfo& gamepadInfo) noexcept
{
    // Supports the D-pad module and more
    return gamepadInfo.supportedLayout & GameInputGamepadModuleDpad;
}

bool IsXButtonSupported(const GameInputGamepadInfo& gamepadInfo) noexcept
{
    return gamepadInfo.supportedLayout & GameInputGamepadX;
}
```

L'exemple de code suivant montre comment créer une disposition personnalisée et déterminer si la manette la prend en charge.

```cpp theme={null}
bool IsCustomLayoutSupported(const GameInputGamepadInfo& gamepadInfo) noexcept
{
    static const GameInputGamepadButtons customLayout =
        GameInputGamepadA |
        GameInputGamepadB |
        GameInputGamepadC |
        GameInputGamepadX |
        GameInputGamepadY |
        GameInputGamepadZ |
        GameInputGamepadModuleShoulders |
        GameInputGamepadModuleDpad;

    return (gamepadInfo.supportedLayout & customLayout) == GameInputGamepadLayoutCustom;
}
```

<a id="requirementsSection" />

## Configuration requise

**En-tête :** GameInput.h

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

<a id="seealsoSection" />

## Voir aussi

[Vue d'ensemble de GameInput](/fr-CA/build/core-features/common/input/overviews/input-overview)\
[GameInput](/fr-CA/reference/input/gameinput/gameinput_members)

## Historique des versions

| Version | Modifications |
| - | - |
| **v3** | **Ajout** de `supportedLayout` (masque de bits GameInputGamepadButtons), `cButtonLabel`, `zButtonLabel`, `extraButtonCount` et `extraAxisCount`. |
| **v0** | Introduit. |

## Annexe : versions précédentes

### v0, v1, v2

```cpp theme={null}
struct GameInputGamepadInfo
{
    GameInputLabel menuButtonLabel;
    GameInputLabel viewButtonLabel;
    GameInputLabel aButtonLabel;
    GameInputLabel bButtonLabel;
    GameInputLabel xButtonLabel;
    GameInputLabel yButtonLabel;
    GameInputLabel dpadUpLabel;
    GameInputLabel dpadDownLabel;
    GameInputLabel dpadLeftLabel;
    GameInputLabel dpadRightLabel;
    GameInputLabel leftShoulderButtonLabel;
    GameInputLabel rightShoulderButtonLabel;
    GameInputLabel leftThumbstickButtonLabel;
    GameInputLabel rightThumbstickButtonLabel;
};
```


## Related topics

- [GameInputGamepadInfo](/reference/input/gameinput/structs/gameinputgamepadinfo.md)
- [GameInput](/reference/input/gameinput/gameinput_members.md)
- [GameInputDeviceInfo](/reference/input/gameinput/structs/gameinputdeviceinfo.md)
- [GameInputGamepadAxes](/reference/input/gameinput/enums/gameinputgamepadaxes.md)
- [IGameInputMapper::GetGamepadAxisMappingInfo](/reference/input/gameinput/interfaces/igameinputmapper/methods/igameinputmapper_getgamepadaxismappinginfo.md)
