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

# IGameInputReading::GetKeyState

> IGameInputReading::GetKeyState

# IGameInputReading::GetKeyState

检索键盘输入上处于活动状态的按键的状态。

## 语法

```cpp theme={null}
uint32_t GetKeyState(
    uint32_t stateArrayCount,
    GameInputKeyState* stateArray
);
```

### 参数

*stateArrayCount*   \_In\_\\
类型：uint32\_t

返回键盘上处于活动状态的按键数量。此值通过调用 [IGameInputReading::GetKeyCount](/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getkeycount) 方法获得。

*stateArray*   \_Out\_writes\_(stateArrayCount)
类型：[GameInputKeyState\*](/reference/input/gameinput/structs/gameinputkeystate)

指向 [GameInputKeyState\*](/reference/input/gameinput/structs/gameinputkeystate) 结构的指针。

### 返回值

类型：uint32\_t

有效缓冲区条目的数量。

## 备注

`IGameInputReading::GetKeyState` 方法检索游戏控制器输入上处于活动状态的按键的状态。基本的键盘状态仅适用于将键盘输入映射到游戏动作，例如移动或发射武器。它不适用于常规的文本输入。即使要实现像文本框这样简单的功能（更不用说 IME 等复杂功能），游戏也需要在此状态之上编写大量代码。如需此类功能，请使用其他 API。

每个按键的状态并不存储在数组中的固定索引位置。相反，随着按键被按下，数组中有效元素的数量会增加；随着按键被释放，数量会减少。新按键会添加到数组末尾，当一个按键被释放时，其后的所有元素会向下移动以填补空缺。数组中第一个 `scancode` 和 `vkey` 值都为零的元素表示数组中有效数据的结尾。标准键盘每次只能报告 4 到 6 个按键按下，即使是高端游戏键盘也很少支持一次超过 12-16 个按键。因此，这种方法通常使数组的最大尺寸保持较小（最大尺寸可以通过 `IGameInputDevice` 接口查询）。这比让应用程序在每次检查键盘状态时都要遍历一个包含 256 个值的数组要高效得多。

## 要求

**头文件：** GameInput.h

[GameInput 高级主题](/build/core-features/common/input/advanced/input-advanced-topics)\
[GameInput 概述](/build/core-features/common/input/overviews/input-overview)\
[IGameInputReading](/reference/input/gameinput/interfaces/igameinputreading/igameinputreading)

## 版本历史

| 版本     | 更改  |
| ------ | --- |
| **v0** | 引入。 |


## Related topics

- [IGameInputReading::GetKeyCount](/zh-CN/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getkeycount.md)
- [IGameInputReading::GetGamepadState](/zh-CN/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getgamepadstate.md)
- [IGameInputReading::GetMouseState](/zh-CN/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getmousestate.md)
- [IGameInputReading::GetMotionState](/zh-CN/reference/input/gameinput/deprecated/interfaces/igameinputreading/methods/igameinputreading_getmotionstate.md)
- [IGameInputReading::GetTouchState](/zh-CN/reference/input/gameinput/deprecated/interfaces/igameinputreading/methods/igameinputreading_gettouchstate.md)
