GameInputDeviceInfo (v1)

说明关于输入设备的所有信息。

语法

struct GameInputDeviceInfo
{
    uint16_t               vendorId;
    uint16_t               productId;
    GameInputUsage         usage;
    APP_LOCAL_DEVICE_ID    deviceId;
    APP_LOCAL_DEVICE_ID    deviceRootId;
    GameInputDeviceFamily  deviceFamily;
    GameInputKind          supportedInput;
    GameInputRumbleMotors  supportedRumbleMotors;
    GameInputSystemButtons supportedSystemButtons;
    const char*            displayName;
    const char*            pnpPath;

    const GameInputKeyboardInfo*     keyboardInfo;
    const GameInputMouseInfo*        mouseInfo;
    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

将输入设备标识为产品。

usage 类型:GameInputUsage

说明所用输入的由两部分组成的索引。

deviceId 类型:APP_LOCAL_DEVICE_ID

输入设备的设备 ID。

deviceRootId 类型:APP_LOCAL_DEVICE_ID

输入设备的根 ID。

deviceFamily 类型:GameInputDeviceFamily

指定输入设备所属的输入设备系列。

supportedInput 类型:GameInputKind

说明设备支持的一种或多种输入类型。

supportedRumbleMotors 类型:GameInputRumbleMotors

说明设备上可使用的扳机键马达(如果有)。

supportedSystemButtons 类型: GameInputSystemButtons

描述用于控制系统的可用按钮,通常位于游戏外部。

displayName 类型:const char*

描述设备的友好名称。

pnpPath 类型:const char*

描述设备的 PNP 路径;此路径可用于通过其他 API 引用基础设备。

keyboardInfo 类型:GameInputKeyboardInfo const *

有关键盘输入设备的信息。

mouseInfo 类型:GameInputMouseInfo 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,用于标识复合设备的根设备节点。 这样,应用程序可以推理各设备之间的关系。 例如,某些游戏键盘使用多个键盘节点将其自身公开为复合设备,解决了旧版 USB 仅限 8 个同时按键操作的限制。 它们一起合并成“系统”键盘,这对用户通常是透明的。 但当通过 GameInput API 处理每个键盘输入时,了解这一点会让应用程序在将功能映射到按键操作时避免不适当的假设(例如,按键操作将始终来自某个特定设备)。 如果设备不是复合设备上的许多接口之一,则 deviceIddeviceRootId 是相同的。

字符串 displayName 包含设备的“友好”名称。 此字符串适合显示在应用程序的 UI,但不能保证已经本地化。 这是因为 GameInput API 搜索多个位置来查找此字符串,并且最终回退之一来自此设备的固件。

结构中的 GameInputDeviceInfo 最后一个字段是指向有关设备的信息的可变大小数组的指针,例如各个控制器按钮的详细属性,或有关力回馈和触觉反馈支持的信息。 NULL 指针表示相应的功能不可用或不受设备支持。 每个数组中的元素数量由结构中相应的字段指示(如 SAL 注释中所述)。

无任何一台输入设备将具有适用于所有特性的可读值。 一些输入设备将只具有适用于相关特性的值。 由 IGameInputDevice::GetDeviceInfo 返回。

要求

头文件:GameInput.h

支持的平台: 窗户

另请参阅

输入 API 概述GameInputIGameInputDevice::GetDeviceInfo