说明关于输入设备的所有信息。
语法
struct GameInputDeviceInfo
{
uint16_t vendorId;
uint16_t productId;
uint16_t revisionNumber;
GameInputUsage usage;
GameInputVersion hardwareVersion;
GameInputVersion firmwareVersion;
APP_LOCAL_DEVICE_ID deviceId;
APP_LOCAL_DEVICE_ID deviceRootId;
GameInputDeviceFamily deviceFamily;
GameInputKind supportedInput;
GameInputRumbleMotors supportedRumbleMotors;
GameInputSystemButtons supportedSystemButtons;
GUID containerId;
const char* displayName;
const char* pnpPath;
const GameInputKeyboardInfo* keyboardInfo;
const GameInputMouseInfo* mouseInfo;
const GameInputSensorsInfo* sensorsInfo;
const GameInputArcadeStickInfo* arcadeStickInfo;
const GameInputFlightStickInfo* flightStickInfo;
const GameInputGamepadInfo* gamepadInfo;
const GameInputRacingWheelInfo* racingWheelInfo;
const GameInputUiNavigationInfo* uiNavigationInfo;
uint32_t controllerAxisCount;
const GameInputControllerAxisInfo* controllerAxisInfo;
uint32_t controllerButtonCount;
const GameInputControllerButtonInfo* controllerButtonInfo;
uint32_t controllerSwitchCount;
const GameInputControllerSwitchInfo* controllerSwitchInfo;
uint32_t forceFeedbackMotorCount;
const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;
};
成员
vendorId 类型:uint16_t
标识输入设备的供应商。
productId 类型:uint16_t
将输入设备标识为产品。
revisionNumber 类型:uint16_t
设备的硬件修订版号(如果有)。
usage 类型:GameInputUsage
说明所用输入的由两部分组成的索引。
hardwareVersion 类型:GameInputVersion
设备的硬件版本(如果有)。
firmwareVersion 类型:GameInputVersion
设备的固件版本(如果有)。
deviceId 类型:APP_LOCAL_DEVICE_ID
输入设备的设备 ID。
deviceRootId 类型:APP_LOCAL_DEVICE_ID
输入设备的根 ID。
deviceFamily 类型:GameInputDeviceFamily
指定输入设备所属的输入设备系列。
supportedInput 类型:GameInputKind
说明设备支持的一种或多种输入类型。
supportedRumbleMotors 类型:GameInputRumbleMotors
说明设备上可使用的扳机键马达(如果有)。
supportedSystemButtons 类型: GameInputSystemButtons
描述用于控制系统的可用按钮,通常位于游戏外部。
containerId 类型:GUID
输入设备的容器 ID。
displayName 类型:const char*
描述设备的友好名称。
pnpPath 类型:const char*
描述设备的即插即用;此路径可用于通过其他 API 引用基础设备。
keyboardInfo 类型:GameInputKeyboardInfo const *
有关键盘输入设备的信息。
mouseInfo 类型:GameInputMouseInfo const *
有关鼠标输入设备的信息。
sensorsInfo 类型: GameInputSensorsInfo const *
有关设备上的传感器的信息。
arcadeStickInfo 类型:GameInputArcadeStickInfo const *
有关街机摇杆输入设备的信息。
flightStickInfo 类型:GameInputFlightStickInfo const *
有关飞行摇杆输入设备的信息。
gamepadInfo 类型:GameInputGamepadInfo const *
有关游戏板输入设备的信息。
racingWheelInfo 类型:GameInputRacingWheelInfo const *
有关赛车方向盘输入设备的信息。
uiNavigationInfo 类型:GameInputUiNavigationInfo const *
有关输入设备的导航地图的信息。
controllerAxisCount 类型:uint32_t
输入设备上的轴数量。
controllerAxisInfo 类型:GameInputControllerAxisInfo const *
有关输入设备的所有轴的信息。
controllerButtonCount 类型:uint32_t
输入设备上的按钮数量。
controllerButtonInfo 类型:GameInputControllerButtonInfo const *
有关输入设备上所有按钮的信息。
controllerSwitchCount 类型:uint32_t
输入设备上的开关数量
controllerSwitchInfo 类型:GameInputControllerSwitchInfo const *
有关输入设备上所有开关的信息。
forceFeedbackMotorCount 类型:uint32_t
输入设备上力回馈马达的数量。
forceFeedbackMotorInfo 类型:GameInputForceFeedbackMotorInfo const *
有关设备上所有力回馈马达的信息。
备注
deviceId是应用程序本地 ID - 唯一标识设备的 256 位哈希值。 此 ID 对于给定的设备(甚至跨运行的应用程序或系统重新启动)始终相同,前提是它连接到同一 USB 端口。 应用程序本地 ID 哈希值的一部分是使用特定于调用应用程序和系统的信息生成的。
deviceRootId是另一个应用程序本地 ID,用于标识复合设备的根设备节点。 这样,应用程序可以推理各设备之间的关系。 例如,某些游戏键盘通过将自身公开为具有多个键盘节点的复合设备来绕过 8 个同时击键的传统 USB 限制。 它们一起合并成“系统”键盘,这对用户通常是透明的。 但是,当通过 GameInput API 处理每键盘输入时,了解这一点可让应用程序避免 (例如,在将功能映射到击键时,击键始终来自特定设备) 。 如果设备不是复合设备上的许多接口之一,则 deviceId 和 deviceRootId 是相同的。
字符串 displayName 包含设备的“友好”名称。 此字符串适合显示在应用程序的 UI,但不能保证已经本地化。 这是因为 GameInput API 搜索多个位置来查找此字符串,并且最终回退之一来自此设备的固件。
结构中的 GameInputDeviceInfo 最后一个字段是指向有关设备的信息的可变大小数组的指针,例如各个控制器按钮的详细属性,或有关力回馈和触觉反馈支持的信息。 NULL 指针表示相应的功能不可用或不受设备支持。 每个数组中的元素数量由结构中相应的字段指示(如 SAL 注释中所述)。
无任何一台输入设备将具有适用于所有特性的可读值。 某些输入设备将仅具有相关属性的值。 由 IGameInputDevice::GetDeviceInfo 返回。
要求
头文件:GameInput.h
支持的平台: 窗户