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

# IGameInputDevice::GetGamepadInfo

> Retrieves the gamepad properties of the device, such as its supported button layout and the labels of its controls.

Retrieves the gamepad properties of the device, such as its supported button layout and the labels of its controls.

## Syntax

```cpp theme={null}
bool GetGamepadInfo(
    GameInputGamepadInfo* info
);
```

### Parameters

*info*   \_Out\_\
Type: [GameInputGamepadInfo](https://docs.xbox.com/reference/input/gameinput/structs/gameinputgamepadinfo.md)\*

Pointer to a `GameInputGamepadInfo` structure that receives the gamepad properties of the device. If the device doesn't support gamepad input, every member of the structure is set to zero.

### Return value

Type: bool

`true` if the device supports gamepad input and *info* was filled in; otherwise, `false`.

## Remarks

The `GetGamepadInfo` method copies the gamepad properties of the device into the caller-provided structure. A device supports gamepad input when the value returned by [GetSupportedInput](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getsupportedinput.md) includes `GameInputKindGamepad`. If the device doesn't support gamepad input, `GetGamepadInfo` zero-initializes *info* and returns `false`.

The `supportedLayout` member is a combination of [GameInputGamepadButtons](https://docs.xbox.com/reference/input/gameinput/enums/gameinputgamepadbuttons.md) flags that identifies which standard gamepad buttons the device has. The label members describe the markings printed on the corresponding controls, as [GameInputLabel](https://docs.xbox.com/reference/input/gameinput/enums/gameinputlabel.md) values, so you can show matching prompts in your UI. The `extraButtonCount` and `extraAxisCount` members report how many controller buttons and axes the device has beyond the standard gamepad mapping; use [GetExtraButtonIndexes](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextrabuttonindexes.md) and [GetExtraAxisIndexes](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getextraaxisindexes.md) to locate them in the controller state of a reading. Gamepad state is read from readings by using [IGameInputReading::GetGamepadState](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getgamepadstate.md).

The properties returned by this method are fixed for the lifetime of the device, so you can query them once (for example, when the device connects) and cache the result.

The following example shows how to query the gamepad properties of a device.

```cpp theme={null}
GameInputGamepadInfo info;
if (device->GetGamepadInfo(&info))
{
    if (info.aButtonLabel == GameInputLabelXboxA)
    {
        // Show XBOX-style button prompts.
    }
}
```

In GameInput v3 and earlier, this information was available from the `gamepadInfo` member of the [GameInputDeviceInfo](https://docs.xbox.com/reference/input/gameinput/deprecated/structs/gameinputdeviceinfo.md) structure returned by [IGameInputDevice::GetDeviceInfo](https://docs.xbox.com/reference/input/gameinput/deprecated/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo.md).

## Requirements

**Header:** GameInput.h

**Library:** gameinput.lib

**Supported platforms:** Windows, XBOX One family consoles and XBOX Series consoles

## See also

[Overview of GameInput](https://docs.xbox.com/build/core-features/common/input/overviews/input-overview.md)\
[GameInputGamepadInfo](https://docs.xbox.com/reference/input/gameinput/structs/gameinputgamepadinfo.md)\
[GetSupportedInput](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getsupportedinput.md)\
[GameInputKind](https://docs.xbox.com/reference/input/gameinput/enums/gameinputkind.md)\
[GameInputGamepadButtons](https://docs.xbox.com/reference/input/gameinput/enums/gameinputgamepadbuttons.md)\
[GameInputLabel](https://docs.xbox.com/reference/input/gameinput/enums/gameinputlabel.md)\
[IGameInputReading::GetGamepadState](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getgamepadstate.md)\
[IGameInputDevice](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/igameinputdevice.md)

## Version History

| Version | Changes |
| - | - |
| **v4** | Introduced. |


## Related topics

- [GameInputGamepadInfo](https://docs.xbox.com/reference/input/gameinput/structs/gameinputgamepadinfo.md)
- [IGameInputDevice::GetSupportedInput](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getsupportedinput.md)
- [IGameInputDevice::GetUsage](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getusage.md)
- [IGameInputDevice::GetInputReportInfo](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getinputreportinfo.md)
- [IGameInputDevice::GetKeyboardInfo](https://docs.xbox.com/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getkeyboardinfo.md)
