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

# GetKeyState

> IGameInputReading::GetKeyState

# IGameInputReading::GetKeyState

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

## 语法

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

### 参数

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

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

*stateArray*   \_Out\_writes\_(stateArrayCount)
类型：[GameInputKeyState\*](https://docs.xbox.com/zh-CN/reference/input/gameinput/structs/gameinputkeystate.md)

指向 [GameInputKeyState\*](https://docs.xbox.com/zh-CN/reference/input/gameinput/structs/gameinputkeystate.md) 结构的指针。

### 返回值

类型：uint32\_t

有效缓冲区条目的数量。

## 备注

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

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

## 要求

**头文件：** GameInput.h

[GameInput 高级主题](https://docs.xbox.com/zh-CN/build/core-features/common/input/advanced/input-advanced-topics.md)\
[GameInput 概述](https://docs.xbox.com/zh-CN/build/core-features/common/input/overviews/input-overview.md)\
[IGameInputReading](https://docs.xbox.com/zh-CN/reference/input/gameinput/interfaces/igameinputreading/igameinputreading.md)

## 版本历史

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


## Related topics

- [GetKeyCount](https://docs.xbox.com/zh-CN/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getkeycount.md)
- [PFLobbySendInviteCompletedStateChange](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/structs/pflobbysendinvitecompletedstatechange.md)
- [PartyChatControl::GetEntityId](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyChatControl/methods/partychatcontrol_getentityid.md)
- [PartyChatControl::GetEntityType](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyChatControl/methods/partychatcontrol_getentitytype.md)
- [PartyEndpoint::GetEntityId](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/networking/reference/classes/PartyEndpoint/methods/partyendpoint_getentityid.md)
