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

# GetExtraButtonIndexes

> GetExtraButtonIndexes

# GetExtraButtonIndexes

Obtém os índices de botão do controle dos botões extras no dispositivo para um determinado tipo de entrada.

## Sintaxe

```cpp theme={null}
HRESULT GetExtraButtonIndexes(
    GameInputKind inputKind,
    uint32_t extraButtonCount,
    uint8_t* extraButtonIndexes
);
```

### Parâmetros

*inputKind*   \_In\_\
Tipo: GameInputKind

O tipo de entrada cujos índices de botões extras estão sendo solicitados.

*extraButtonCount*   \_In\_\
Tipo: uint32\_t

Contagem esperada de índices de botão para botões extras.
Esse número pode ser recuperado chamando  [GetExtraButtonCount](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextrabuttoncount).

*extraButtonIndexes*   \_Out\_writes\_(extraButtonCount)\_\
Tipo: uint8\_t\*

Ponteiro para a matriz de índices de botão.

### Valor retornado

Tipo: HRESULT

Resultado da função.

## Comentários

Botões extras são botões do controle que existem no dispositivo físico, mas não fazem parte do mapeamento padrão para o tipo de entrada especificado.

Antes de chamar este método, você deve primeiro chamar [GetExtraButtonCount](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextrabuttoncount) para determinar quantos botões extras estão disponíveis e passar essa contagem como o parâmetro extraButtonCount.

O trecho de código a seguir demonstra como usar os botões extras de um gamepad:

```cpp theme={null}
bool GetGamepadExtraButtonValues(
    std::vector<bool>* extraButtons,
    IGameInputReading* reading) noexcept
{
    Mwrl::ComPtr<IGameInputDevice> device;
    reading->GetDevice(&device);

    uint32_t extraButtonCount = 0;
    if (FAILED(device->GetExtraButtonCount(GameInputKindGamepad, &extraButtonCount)))
    {
        return false;
    }

    std::vector<uint8_t> buttonIndexes(extraButtonCount);
    extraButtons->resize(extraButtonCount);
    if (FAILED(device->GetExtraButtonIndexes(
        GameInputKindGamepad,
        extraButtonCount,
        buttonIndexes.data())))
    {
        return false;
    }

    std::vector<bool> buttonStates(reading->GetControllerButtonCount());
    reading->GetControllerButtonState(static_cast<uint32_t>(buttonStates.size()), buttonStates.data());

    for (size_t i = 0; i < buttonIndexes.size(); ++i)
    {
        if (buttonIndexes[i] < buttonStates.size())
        {
            (*extraButtons)[i] = buttonStates[buttonIndexes[i]];
        }
    }

    return true;
}
```

## Requisitos

**Cabeçalho:** GameInput.h

**Biblioteca:** gameinput.lib

**Plataformas com suporte:** Windows, consoles da família XBOX One e consoles XBOX Series

## Confira também

[GameInputKind](/pt-BR/reference/input/gameinput/enums/gameinputkind)<br />
[GetExtraButtonCount](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextrabuttoncount)<br />
[GetExtraAxisIndexes](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextraaxisindexes)<br />
[IGameInputDevice](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/igameinputdevice)

## Histórico de versões

| Versão | Alterações |
| - | - |
| **v3** | Introduzido. |


## Related topics

- [GetExtraButtonCount](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextrabuttoncount.md)
- [GetExtraAxisIndexes](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextraaxisindexes.md)
- [IGameInputDevice](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/igameinputdevice.md)
- [GetExtraAxisCount](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextraaxiscount.md)
- [GameInputRacingWheelInfo](/pt-BR/reference/input/gameinput/structs/gameinputracingwheelinfo.md)
