GameInputDeviceInfo
说明关于输入设备的所有信息。
语法
typedef struct GameInputDeviceInfo {
uint32_t infoSize;
uint16_t vendorId;
uint16_t productId;
uint16_t revisionNumber;
uint8_t interfaceNumber;
uint8_t collectionNumber;
GameInputUsage usage;
GameInputVersion hardwareVersion;
GameInputVersion firmwareVersion;
APP_LOCAL_DEVICE_ID deviceId;
APP_LOCAL_DEVICE_ID deviceRootId;
GameInputDeviceFamily deviceFamily;
GameInputDeviceCapabilities capabilities;
GameInputKind supportedInput;
GameInputRumbleMotors supportedRumbleMotors;
uint32_t inputReportCount;
uint32_t outputReportCount;
uint32_t featureReportCount;
uint32_t controllerAxisCount;
uint32_t controllerButtonCount;
uint32_t controllerSwitchCount;
uint32_t touchPointCount;
uint32_t touchSensorCount;
uint32_t forceFeedbackMotorCount;
uint32_t hapticFeedbackMotorCount;
uint32_t deviceStringCount;
uint32_t deviceDescriptorSize;
GameInputRawDeviceReportInfo const * inputReportInfo;
GameInputRawDeviceReportInfo const * outputReportInfo;
GameInputRawDeviceReportInfo const * featureReportInfo;
GameInputControllerAxisInfo const * controllerAxisInfo;
GameInputControllerButtonInfo const * controllerButtonInfo;
GameInputControllerSwitchInfo const * controllerSwitchInfo;
GameInputKeyboardInfo const * keyboardInfo;
GameInputMouseInfo const * mouseInfo;
GameInputTouchSensorInfo const * touchSensorInfo;
GameInputMotionInfo const * motionInfo;
GameInputArcadeStickInfo const * arcadeStickInfo;
GameInputFlightStickInfo const * flightStickInfo;
GameInputGamepadInfo const * gamepadInfo;
GameInputRacingWheelInfo const * racingWheelInfo;
GameInputUiNavigationInfo const * uiNavigationInfo;
GameInputForceFeedbackMotorInfo const * forceFeedbackMotorInfo;
GameInputHapticFeedbackMotorInfo const * hapticFeedbackMotorInfo;
GameInputString const * displayName;
GameInputString const * deviceStrings;
void const * deviceDescriptorData;
} GameInputDeviceInfo
成员
infoSize
类型:uint32_t
设备信息的大小。
vendorId
类型:uint16_t
标识输入设备的供应商。
productId
类型:uint16_t
将输入设备标识为产品。
revisionNumber
类型:uint16_t
设备修订号。
interfaceNumber
类型:uint8_t
设备接口号。
collectionNumber
类型:uint8_t
设备集合号。
usage
类型:GameInputUsage
说明所用输入的由两部分组成的索引。
hardwareVersion
类型:GameInputVersion
指定所使用的硬件版本。
firmwareVersion
类型:GameInputVersion
指定所使用的硬件版本。
deviceId
类型:APP_LOCAL_DEVICE_ID
输入设备的设备 ID。
deviceRootId
类型:APP_LOCAL_DEVICE_ID
输入设备的根 ID。
deviceFamily
类型:GameInputDeviceFamily
指定输入设备所属的输入设备系列。
capabilities
类型:GameInputDeviceCapabilities
说明游戏控制器可用的功能和能力。
supportedInput
类型:GameInputKind
说明设备支持的一种或多种输入类型。
supportedRumbleMotors
类型:GameInputRumbleMotors
说明设备上可使用的扳机键马达(如果有)。
inputReportCount
类型:uint32_t
设备的输入报告数量。
outputReportCount
类型:uint32_t
设备的输出报告数量。
featureReportCount
类型:uint32_t
设备的功能报告数量。
controllerAxisCount
类型:uint32_t
输入设备上的轴数量。
controllerButtonCount
类型:uint32_t
输入设备上的按钮数量。
controllerSwitchCount
类型:uint32_t
输入设备上的开关数量
touchPointCount
类型:uint32_t
设备上的触摸输入可同时读取的触摸输入数量。
touchSensorCount
类型:uint32_t
设备上的触摸传感器数量。
forceFeedbackMotorCount
类型:uint32_t
输入设备上力回馈马达的数量。
hapticFeedbackMotorCount
类型:uint32_t
输入设备上触觉回馈马达的数量。
deviceStringCount
类型:uint32_t
设备信息中包含的字符串数量。
deviceDescriptorSize
类型:uint32_t
设备说明的大小。
inputReportInfo
类型:GameInputRawDeviceReportInfo const *
输入报告信息对象。
outputReportInfo
类型:GameInputRawDeviceReportInfo const *
输出报告。
featureReportInfo
类型:GameInputRawDeviceReportInfo const *
功能报告。
controllerAxisInfo
类型:GameInputControllerAxisInfo const *
有关输入设备的所有轴的信息。
controllerButtonInfo
类型:GameInputControllerButtonInfo const *
有关输入设备上所有按钮的信息。
controllerSwitchInfo
类型:GameInputControllerSwitchInfo const *
有关输入设备上所有开关的信息。
keyboardInfo
类型:GameInputKeyboardInfo const *
有关键盘输入设备的信息。
mouseInfo
类型:GameInputMouseInfo const *
有关鼠标输入设备的信息。
touchSensorInfo
类型:GameInputTouchSensorInfo const *
有关输入设备上所有触摸传感器的信息。
motionInfo
类型:GameInputMotionInfo const *
有关动作信息的信息。
arcadeStickInfo
类型:GameInputArcadeStickInfo const *
有关街机摇杆输入设备的信息。
flightStickInfo
类型:GameInputFlightStickInfo const *
有关飞行摇杆输入设备的信息。
gamepadInfo
类型:GameInputGamepadInfo const *
有关游戏板输入设备的信息。
racingWheelInfo
类型:GameInputRacingWheelInfo const *
有关赛车方向盘输入设备的信息。
uiNavigationInfo
类型:GameInputUiNavigationInfo const *
有关输入设备的导航地图的信息。
forceFeedbackMotorInfo
类型:GameInputForceFeedbackMotorInfo const *
有关设备上所有力回馈马达的信息。
hapticFeedbackMotorInfo
类型:GameInputHapticFeedbackMotorInfo const *
有关设备上所有触觉回馈马达的信息。
displayName
类型:GameInputString const *
显示设备的名称。
deviceStrings
类型:GameInputString const *
设备的游戏输入字符串列表。
deviceDescriptorData
类型:void const *
说明设备的对象。
备注
deviceId 是应用程序本地 ID–唯一标识设备的 256 位哈希值。 此 ID 对于给定的设备(甚至跨运行的应用程序或系统重新启动)始终相同,前提是它连接到同一 USB 端口。 应用程序本地 ID 哈希值的一部分是使用特定于调用应用程序和系统的信息生成的。 因此,每次运行给定的应用程序时,应用程序本地 ID 都相同,但跨不同的应用程序则不同,或跨不同系统但在相同的应用程序中不同。 这是为了保护用户隐私,因此无法通过用户的设备跨应用程序/系统跟踪用户。 当若干完全相同的设备连接到系统时,应用程序使用应用程序本地 ID 创建稳定的输入映射。
deviceRootId 是另一个应用程序本地 ID,它标识复合设备的根设备节点。 这样,应用程序可以推理各设备之间的关系。 例如,某些游戏键盘使用多个键盘节点将其自身公开为复合设备,解决了旧版 USB 仅限 8 个同时按键操作的限制。 它们一起合并成“系统”键盘,这对用户通常是透明的。 但当通过 GameInput API 处理每个键盘输入时,了解这一点会让应用程序在将功能映射到按键操作时避免不适当的假设(例如,按键操作将始终来自某个特定设备)。 如果设备不是复合设备上的多个接口之一,则 deviceId 和 deviceRootId 相同。
displayName 字符串包含设备的“友好”名称。 此字符串适合显示在应用程序的 UI,但不能保证已经本地化。 这是因为 GameInput API 搜索多个位置来查找此字符串,并且最终回退之一来自此设备的固件。
GameInputDeviceInfo 结构中的最终字段是一些指针,指向有关此设备的信息的大小可变的数组,例如,各个控制器按钮的详细属性或有关力回馈和触觉回馈支持的信息。 NULL 指针表示相应的功能不可用或不受设备支持。 每个数组中的元素数量由结构中相应的字段指示(如 SAL 注释中所述)。
无任何一台输入设备将具有适用于所有特性的可读值。 一些输入设备将只具有适用于相关特性的值。
由 IGameInputDevice::GetDeviceInfo 返回。
要求
头文件:GameInput.h
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机