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

# GameInputGamepadButtons

> GameInputGamepadButtons

# GameInputGamepadButtons

枚举游戏手柄按钮，包括方向键 (D-pad) 以及从轴到按钮的转换。

## 语法

```cpp theme={null}
enum GameInputGamepadButtons
{
    GameInputGamepadNone                 = 0x00000000,
    GameInputGamepadMenu                 = 0x00000001,
    GameInputGamepadView                 = 0x00000002,
    GameInputGamepadA                    = 0x00000004,
    GameInputGamepadB                    = 0x00000008,
    GameInputGamepadC                    = 0x00004000,
    GameInputGamepadX                    = 0x00000010,
    GameInputGamepadY                    = 0x00000020,
    GameInputGamepadZ                    = 0x00008000,
    GameInputGamepadDPadUp               = 0x00000040,
    GameInputGamepadDPadDown             = 0x00000080,
    GameInputGamepadDPadLeft             = 0x00000100,
    GameInputGamepadDPadRight            = 0x00000200,
    GameInputGamepadLeftShoulder         = 0x00000400,
    GameInputGamepadRightShoulder        = 0x00000800,
    GameInputGamepadLeftTriggerButton    = 0x00010000,
    GameInputGamepadRightTriggerButton   = 0x00020000,
    GameInputGamepadLeftThumbstick       = 0x00001000,
    GameInputGamepadLeftThumbstickUp     = 0x00040000,
    GameInputGamepadLeftThumbstickDown   = 0x00080000,
    GameInputGamepadLeftThumbstickLeft   = 0x00100000,
    GameInputGamepadLeftThumbstickRight  = 0x00200000,
    GameInputGamepadRightThumbstick      = 0x00002000,
    GameInputGamepadRightThumbstickUp    = 0x00400000,
    GameInputGamepadRightThumbstickDown  = 0x00800000,
    GameInputGamepadRightThumbstickLeft  = 0x01000000,
    GameInputGamepadRightThumbstickRight = 0x02000000,
    GameInputGamepadPaddleLeft1          = 0x04000000,
    GameInputGamepadPaddleLeft2          = 0x08000000,
    GameInputGamepadPaddleRight1         = 0x10000000,
    GameInputGamepadPaddleRight2         = 0x20000000,
};

// Gamepad modules (Groupings of gamepad elements commonly found together)
const GameInputGamepadButtons GameInputGamepadModuleSystemDuo =
    GameInputGamepadMenu |
    GameInputGamepadView;

const GameInputGamepadButtons GameInputGamepadModuleDpad =
    GameInputGamepadDPadUp |
    GameInputGamepadDPadDown |
    GameInputGamepadDPadLeft |
    GameInputGamepadDPadRight;

const GameInputGamepadButtons GameInputGamepadModuleShoulders =
    GameInputGamepadLeftShoulder |
    GameInputGamepadRightShoulder;

const GameInputGamepadButtons GameInputGamepadModuleTriggers =
    GameInputGamepadLeftTriggerButton |
    GameInputGamepadRightTriggerButton;

const GameInputGamepadButtons GameInputGamepadModuleThumbsticks =
    GameInputGamepadLeftThumbstickUp |
    GameInputGamepadLeftThumbstickDown |
    GameInputGamepadLeftThumbstickLeft |
    GameInputGamepadLeftThumbstickRight |
    GameInputGamepadRightThumbstickUp |
    GameInputGamepadRightThumbstickDown |
    GameInputGamepadRightThumbstickLeft |
    GameInputGamepadRightThumbstickRight;

const GameInputGamepadButtons GameInputGamepadModulePaddles2 =
    GameInputGamepadPaddleLeft1 |
    GameInputGamepadPaddleRight1;

const GameInputGamepadButtons GameInputGamepadModulePaddles4 =
    GameInputGamepadPaddleLeft1 |
    GameInputGamepadPaddleLeft2 |
    GameInputGamepadPaddleRight1 |
    GameInputGamepadPaddleRight2;

// Commonly found gamepad layouts. Custom layouts are possible and encouraged.
const GameInputGamepadButtons GameInputGamepadLayoutBasic =
    GameInputGamepadModuleSystemDuo |
    GameInputGamepadModuleDpad |
    GameInputGamepadA |
    GameInputGamepadB;

const GameInputGamepadButtons GameInputGamepadLayoutButtons =
    GameInputGamepadLayoutBasic |
    GameInputGamepadX |
    GameInputGamepadY |
    GameInputGamepadModuleShoulders;

const GameInputGamepadButtons GameInputGamepadLayoutStandard =
    GameInputGamepadLayoutButtons |
    GameInputGamepadModuleTriggers |
    GameInputGamepadModuleThumbsticks |
    GameInputGamepadLeftThumbstick |
    GameInputGamepadRightThumbstick;

const GameInputGamepadButtons GameInputGamepadLayoutElite =
    GameInputGamepadLayoutStandard |
    GameInputGamepadModulePaddles4;
```

## 常量

| 常量 | 说明 |
| - | - |
| GameInputGamepadNone | 表示未按下任何按钮。 |
| GameInputGamepadMenu | 表示已按下菜单按钮。 |
| GameInputGamepadView | 表示已按下视图按钮。 |
| GameInputGamepadA | 表示已按下 A 按钮。 |
| GameInputGamepadB | 表示已按下 B 按钮。 |
| GameInputGamepadC | 表示已按下 C 按钮。 |
| GameInputGamepadX | 表示已按下 X 按钮。 |
| GameInputGamepadY | 表示已按下 Y 按钮。 |
| GameInputGamepadZ | 表示已按下 Z 按钮。 |
| GameInputGamepadDPadUp | 表示已按下方向键的顶部。 |
| GameInputGamepadDPadDown | 表示已按下方向键的底部。 |
| GameInputGamepadDPadLeft | 表示已按下方向键的左侧。 |
| GameInputGamepadDPadRight | 表示已按下方向键的右侧。 |
| GameInputGamepadLeftShoulder | 表示已按下左肩键。 |
| GameInputGamepadRightShoulder | 表示已按下右肩键。 |
| GameInputGamepadLeftTriggerButton | 表示已按下左扳机按钮。 |
| GameInputGamepadRightTriggerButton | 表示已按下右扳机按钮。 |
| GameInputGamepadLeftThumbstick | 表示已按下左摇杆。 |
| GameInputGamepadLeftThumbstickUp | 表示左摇杆指向上方。 |
| GameInputGamepadLeftThumbstickDown | 表示左摇杆指向下方。 |
| GameInputGamepadLeftThumbstickLeft | 表示左摇杆指向左方。 |
| GameInputGamepadLeftThumbstickRight | 表示左摇杆指向右方。 |
| GameInputGamepadRightThumbstick | 表示已按下右摇杆。 |
| GameInputGamepadRightThumbstickUp | 表示右摇杆指向上方。 |
| GameInputGamepadRightThumbstickDown | 表示右摇杆指向下方。 |
| GameInputGamepadRightThumbstickLeft | 表示右摇杆指向左方。 |
| GameInputGamepadRightThumbstickRight | 表示右摇杆指向右方。 |
| GameInputGamepadPaddleLeft1 | 表示已按下左侧第一个拨片按钮。 |
| GameInputGamepadPaddleLeft2 | 表示已按下左侧第二个拨片按钮。 |
| GameInputGamepadPaddleRight1 | 表示已按下右侧第一个拨片按钮。 |
| GameInputGamepadPaddleRight2 | 表示已按下右侧第二个拨片按钮。 |

### 手柄模块

模块表示手柄上通常一起出现的一组元素。

| 常量 | 说明 |
| - | - |
| GameInputGamepadModuleSystemDuo | 菜单和视图按钮。 |
| GameInputGamepadModuleDpad | 方向键按钮（上、下、左、右）。 |
| GameInputGamepadModuleShoulders | 左右肩键。 |
| GameInputGamepadModuleTriggers | 左右扳机。 |
| GameInputGamepadModuleThumbsticks | 左右摇杆。 |
| GameInputGamepadModulePaddles2 | 两个第一层拨片按钮（左 1 和右 1）。 |
| GameInputGamepadModulePaddles4 | 全部四个拨片按钮（左 1、左 2、右 1、右 2）。 |

### 手柄布局

常见的手柄布局。

| 常量 | 说明 |
| - | - |
| GameInputGamepadLayoutBasic | System duo（菜单和视图）、方向键，以及 A 和 B 按钮。 |
| GameInputGamepadLayoutButtons | 基础布局，加上 X、Y 按钮和肩键。 |
| GameInputGamepadLayoutStandard | 自 XBOX 360 起在手柄上常见的标准布局。 |
| GameInputGamepadLayoutElite | XBOX 精英手柄系列上的布局。 |

## 备注

此枚举在 [GameInputGamePadState](https://docs.xbox.com/zh-CN/reference/input/gameinput/structs/gameinputgamepadstate.md) 结构中使用。你可以组合多个值以同时读取多个按钮。

`GameInputGamepadLeftTriggerButton`、`GameInputGamepadRightTriggerButton`、`GameInputGamepadLeftThumbstickUp`、`GameInputGamepadLeftThumbstickDown`、`GameInputGamepadLeftThumbstickLeft`、`GameInputGamepadLeftThumbstickRight`、`GameInputGamepadRightThumbstickUp`、`GameInputGamepadRightThumbstickDown`、`GameInputGamepadRightThumbstickLeft` 和 `GameInputGamepadRightThumbstickRight` 是大多数手柄上相应模拟轴的数字化表示。例如，如果左摇杆被完全推到上方，`GameInputGamepadLeftThumbstickUp` 按钮和 `GameInputGamepadLeftThumbstickY` 轴都会显示值 1.0。

有关详细信息，请参阅 [GameInput 读数](https://docs.xbox.com/zh-CN/build/core-features/common/input/overviews/input-readings.md) 中的 [从读数获取数据](https://docs.xbox.com/zh-CN/build/core-features/common/input/overviews/input-readings.md#gettingStateSection) 部分。

此枚举还可与 [IGameInputMapper::GetGamepadButtonMappingInfo](https://docs.xbox.com/zh-CN/reference/input/gameinput/interfaces/igameinputmapper/methods/igameinputmapper_getgamepadbuttonmappinginfo.md) 方法配合使用，以检索特定手柄按钮的映射信息。

## 要求

**标头：** GameInput.h

**支持的平台：** Windows、XBOX One 系列主机和 XBOX Series 主机

## 另请参阅

[GameInput 概述](https://docs.xbox.com/zh-CN/build/core-features/common/input/overviews/input-overview.md)\
[GameInput](https://docs.xbox.com/zh-CN/reference/input/gameinput/gameinput_members.md)

## 版本历史

| 版本 | 变更 |
| - | - |
| **v3** | **新增 16 个标志常量**：`C`、`Z`、`LeftTriggerButton`、`RightTriggerButton`、四个 `LeftThumbstick` 方向、四个 `RightThumbstick` 方向、`PaddleLeft1`、`PaddleLeft2`、`PaddleRight1`、`PaddleRight2`。还新增了 11 个组合/布局常量。 |
| **v0** | 引入。 |

## 附录：以前的版本

### v0

```cpp theme={null}
enum GameInputGamepadButtons
{
    GameInputGamepadNone            = 0x00000000,
    GameInputGamepadMenu            = 0x00000001,
    GameInputGamepadView            = 0x00000002,
    GameInputGamepadA               = 0x00000004,
    GameInputGamepadB               = 0x00000008,
    GameInputGamepadX               = 0x00000010,
    GameInputGamepadY               = 0x00000020,
    GameInputGamepadDPadUp          = 0x00000040,
    GameInputGamepadDPadDown        = 0x00000080,
    GameInputGamepadDPadLeft        = 0x00000100,
    GameInputGamepadDPadRight       = 0x00000200,
    GameInputGamepadLeftShoulder    = 0x00000400,
    GameInputGamepadRightShoulder   = 0x00000800,
    GameInputGamepadLeftThumbstick  = 0x00001000,
    GameInputGamepadRightThumbstick = 0x00002000,
};
```


## Related topics

- [GameInput API 成员](https://docs.xbox.com/zh-CN/reference/input/gameinput/gameinput_members.md)
- [GameInputMouseButtons](https://docs.xbox.com/zh-CN/reference/input/gameinput/enums/gameinputmousebuttons.md)
- [GameInputSystemButtonCallback](https://docs.xbox.com/zh-CN/reference/input/gameinput/functions/gameinputsystembuttoncallback.md)
- [GetGamepadState](https://docs.xbox.com/zh-CN/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getgamepadstate.md)
- [GameInputFlightStickButtons](https://docs.xbox.com/zh-CN/reference/input/gameinput/enums/gameinputflightstickbuttons.md)
