该 API 将
GameInput 的鼠标和键盘设备分开定义。这些设备在 Windows 中有特殊含义,具体在其他文档中介绍。有关详细信息,请参阅开发键盘和鼠标 HID 客户端驱动程序。GameInput 表示各种各样的设备,包括控制器、游戏手柄、飞行操纵杆、街机摇杆、赛车方向盘和 UI 导航控制器。每种设备类型都有可用于与设备交互的独立接口。硬件设备是否会以其中一种接口的形式出现,取决于该设备是遵循现有的 Windows 游戏输入控制器驱动协议,还是通用 HID 设备。
对于兼容 XInput 的设备,GameInput API 将它们枚举为控制器、游戏手柄和 UI 导航控制器。这些设备的映射严格由协议规定,协议不支持额外的按键。这些设备还支持双振动或四振动效果。这些效果对应左右电机以及左右扳机。XInput 的主要有三种线路协议:XUSB、XInputHID 和 Game Input Protocol (GIP)。在主机上,系统仅支持 GIP 设备。有关所有这些协议的更多信息,请参阅针对硬件设备的 XInput API 文档。在 PC 上,设备应通过 XInputHID 驱动进行交互。除游戏手柄之外的其他 Game Input Protocol (GIP) 设备,GameInput API 会根据其在连接时呈现的元数据,将它们枚举为飞行操纵杆、街机摇杆、赛车方向盘或 UI 导航控制器。此行为在主机与 PC 上都成立。有关详细信息,请参阅 Game Input Protocol (GIP) 文档。
对于 HID 设备,GameInput 在设备呈现给操作系统的方式上提供更多的灵活性。这种灵活性意味着 HID 设备有可能公开标准游戏控制器协议所定义之外的广泛特性和能力。例如,一款赛车方向盘设备有可能将自身呈现给 GameInput 为游戏手柄和飞行操纵杆。该设备上可用的完整按键、开关和轴列表由设备的 HID 报告描述符定义,并通过 IGameInputReading 接口的 GetControllerButtonState、GetControllerButtonCount 以及用于获取轴或开关的同类调用公开。为将这些特性映射到诸如游戏手柄或赛车方向盘等其他接口,GameInput 使用了 Windows 注册表中的一系列映射。Windows.Gaming.Input (WGI) API 与其共享这些映射。有关详细信息,请参阅游戏控制器的注册表数据。独立硬件供应商 (IHV) 可以在其驱动程序安装过程中将它们的注册表映射添加到 HKLM\SYSTEM\CurrentControlSet\Control\GameInput\Devices 路径下。在随游戏一起分发的未来 API 版本中,GameInput API 会定期为常见设备添加默认映射。IHV 映射的优先级高于默认映射。可在 HKLM\SOFTWARE\Microsoft\GameInputRedist 找到随 API 一起打包的映射。
