> ## 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/reference/input/gameinput/enums/gameinputgamepadbuttons)

Décrit la disposition de la manette. Comme les axes ont des traductions en boutons, celles-ci peuvent être utilisées pour déterminer quels axes sont présents sur la manette.

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

Étiquette physique du bouton Menu.

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

Étiquette physique du bouton Affichage.

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

Étiquette physique du bouton **A**.

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

Étiquette physique du bouton **B**.

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

Étiquette physique du bouton **C**.

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

Étiquette physique du bouton **X**.

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

Étiquette physique du bouton **Y**.

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

Étiquette physique du bouton **Z**.

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

Étiquette physique du pavé directionnel vers le haut.

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

Étiquette physique du pavé directionnel vers le bas.

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

Étiquette physique du pavé directionnel vers la gauche.

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

Étiquette physique du pavé directionnel vers la droite.

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

Étiquette physique du bouton bombé gauche.

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

Étiquette physique du bouton bombé droit.

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

Étiquette physique du joystick gauche.

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

Étiquette physique du joystick droit.

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

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

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

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/reference/input/gameinput/structs/gameinputdeviceinfo).

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

Pour plus d'informations, consultez [Périphériques GameInput](/fr/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 la forme d'un champ de bits de type [GameInputGamepadButtons](/fr/reference/input/gameinput/enums/gameinputgamepadbuttons). Les axes sont également présents dans cette énumération par le biais des traductions d'axe en bouton, comme `GameInputGamepadLeftTriggerButton`. Pour plus d'informations sur ces traductions, consultez [GameInputGamepadButtons](/fr/reference/input/gameinput/enums/gameinputgamepadbuttons#remarks).

Il n'existe aucune disposition minimale requise pour une manette, qui peut comporter n'importe quelle combinaison des axes et boutons pris en charge. Les boutons ou axes non pris en charge sont censés ê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 ainsi que des dispositions courantes. Ils peuvent être utilisés pour identifier rapidement une disposition courante, filtrer des entrées spécifiques ou créer des dispositions personnalisées. Pour plus d'informations, consultez [GameInputGamepadButtons](/fr/reference/input/gameinput/enums/gameinputgamepadbuttons#constantsSection).

Comme l'éventail attendu de dispositions et de formats pris en charge est illimité, il existe un petit ensemble de considérations et de comportements que nous attendons des mappages et des utilisateurs de manettes :

* Pour les éléments présents en double, tels que les joysticks, les boutons bombés 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 positionné à 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 en fonction de 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="Recommandations 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, ou une entrée ou un module spécifique.

```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/build/core-features/common/input/overviews/input-overview)\
[GameInput](/fr/reference/input/gameinput/gameinput_members)

## Historique des versions

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

## 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

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