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

# GameInputGamepadInfo

> Referência da struct GameInputGamepadInfo: descreve o layout do gamepad, os rótulos físicos de cada botão, a contagem de botões extras e a contagem de eixos extras.

# GameInputGamepadInfo

Descreve as propriedades de um gamepad.

## Sintaxe

```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;
};
```

### Membros

*supportedLayout*\

Tipo: [GameInputGamepadButtons](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputgamepadbuttons.md)

Descreve o layout do gamepad. Como os eixos têm traduções para botões, elas podem ser usadas para determinar quais eixos estão presentes no gamepad.

*menuButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão Menu.

*viewButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão Exibir.

*aButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão **A**.

*bButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão **B**.

*cButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão **C**.

*xButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão **X**.

*yButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão **Y**.

*zButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão **Z**.

*dpadUpLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do direcional para cima.

*dpadDownLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do direcional para baixo.

*dpadLeftLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do direcional para a esquerda.

*dpadRightLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do direcional para a direita.

*leftShoulderButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão de ombro esquerdo.

*rightShoulderButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do botão de ombro direito.

*leftThumbstickButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do direcional analógico esquerdo.

*rightThumbstickButtonLabel*\

Tipo: [GameInputLabel](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputlabel.md)

Rótulo físico do direcional analógico direito.

*extraButtonCount*\

Tipo: uint32\_t

O número de botões do dispositivo que não estão mapeados para botões do gamepad.

*extraAxisCount*\

Tipo: uint32\_t

O número de eixos do dispositivo que não estão mapeados para eixos do gamepad.

## Comentários

Essa estrutura é usada na estrutura [GameInputDeviceInfo](https://docs.xbox.com/pt-BR/reference/input/gameinput/structs/gameinputdeviceinfo.md).

`GameInputDeviceInfo` é usada pelo método [IGameInputDevice::GetDeviceInfo](https://docs.xbox.com/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo.md).

Para obter mais informações, confira [Dispositivos GameInput](https://docs.xbox.com/pt-BR/build/core-features/common/input/overviews/input-devices.md).

### Layout do gamepad

O GameInput é compatível com uma variedade de formatos de gamepad, em vez de limitar o suporte a um único layout padrão. Isso é exposto por meio do membro `supportedLayout` dessa estrutura como um campo de bits do tipo [GameInputGamepadButtons](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputgamepadbuttons.md). Os eixos também estão presentes nessa enumeração por meio das traduções de eixo para botão, como `GameInputGamepadLeftTriggerButton`. Para obter mais informações sobre essas traduções, confira [GameInputGamepadButtons](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputgamepadbuttons.md#remarks).

Não há um layout mínimo obrigatório para um gamepad, e ele pode ter qualquer combinação dos eixos e botões compatíveis. Espera-se que os botões ou eixos não compatíveis sejam deixados de lado e acessados como eixos ou botões extras.

Definimos alguns agrupamentos comuns de elementos de gamepad e layouts comuns como constantes. Eles podem ser usados para identificar rapidamente um layout comum, filtrar entradas específicas ou criar layouts personalizados. Para obter mais informações, confira [GameInputGamepadButtons](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputgamepadbuttons.md#constantsSection).

Como a variedade esperada de layouts e formatos compatíveis é ilimitada, há um pequeno conjunto de considerações e comportamentos que esperamos que os mapeamentos e os usuários de gamepad sigam:

* Para elementos que existem em pares, como direcionais analógicos, botões de ombro ou gatilhos, se houver apenas um presente no centro, o padrão deve ser tratá-lo como o elemento esquerdo. Se ele estiver posicionado à esquerda ou à direita do dispositivo, deverá ser mapeado de acordo.

* Para evitar ambiguidade devido a glifos diferentes, espera-se que os botões frontais sejam mapeados e lidos de acordo com sua posição física, independentemente do glifo, da seguinte forma:

![Diretrizes de layout dos botões frontais do gamepad](https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/input-gamepad-facebutton-layouts.png?fit=max\&auto=format\&n=5IpvKlT-jmAaVkeY\&q=85\&s=37ae6f7821291d3118275f019d27685d)

O exemplo de código a seguir demonstra como determinar se um gamepad é compatível com um layout ou com uma entrada ou módulo específico.

```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;
}
```

O exemplo de código a seguir demonstra como criar um layout personalizado e determinar se o gamepad é compatível com ele.

```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;
}
```

## Requisitos

**Cabeçalho:** GameInput.h

**Plataformas compatíveis:** Windows, consoles da família XBOX One e consoles XBOX Series

## Confira também

[Visão geral do GameInput](https://docs.xbox.com/pt-BR/build/core-features/common/input/overviews/input-overview.md)\
[GameInput](https://docs.xbox.com/pt-BR/reference/input/gameinput/gameinput_members.md)

## Histórico de versões

| Versão | Alterações |
| - | - |
| **v3** | **Adicionados** `supportedLayout` (bitmask GameInputGamepadButtons), `cButtonLabel`, `zButtonLabel`, `extraButtonCount`, `extraAxisCount`. |
| **v0** | Introduzido. |

## Apêndice: versões anteriores

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

- [GameInputDeviceInfo](https://docs.xbox.com/pt-BR/reference/input/gameinput/structs/gameinputdeviceinfo.md)
- [Membros da API do GameInput](https://docs.xbox.com/pt-BR/reference/input/gameinput/gameinput_members.md)
- [GameInputGamepadAxes](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputgamepadaxes.md)
- [GameInputGamepadButtons](https://docs.xbox.com/pt-BR/reference/input/gameinput/enums/gameinputgamepadbuttons.md)
- [GameInputGamepadState](https://docs.xbox.com/pt-BR/reference/input/gameinput/structs/gameinputgamepadstate.md)
