相关推荐
两个人能玩的游戏现实有哪些
2022世界杯赛制规则 一文带你了解预选赛+正赛规则
Windows 上的 XUSB 驱动程序实现 XINPUT DLL 的内核模式接口。 为了为将 DirectInput API 与通用控制器设备配合使用的旧游戏提供良好的体验,驱动程序还会导出 DirectInput 选取的 Human Interface Device (HID) 类接口。 我们根据原始 XINPUT 版本的一组游戏应用程序中的典型行为选择了 XUSB 到 HID 的映射,并更新了较新的子类型的映射。 本主题介绍映射。
人机接口设备 (HID)
HID 标准是通用串行总线(USB)委员会(最初由Microsoft提出的标准),用于通用化输入设备的协议。 它由字节代码描述语言组成,可以表达游戏板、鼠标、游戏杆、限制和陆路控件以及多轴控制器。 由于此标准已通用化,因此编写使用任意设备输入的软件可能很困难。 因此,对于以游戏为中心的 DirectInput API,我们开发了一种特定的类型子映射,以鼓励硬件制造商通过其驱动程序提供支持。
HID v1.11 的 USB 设备类定义
重要
还可以通过 RawInput API 访问 HID 输入设备,并通过低级别 HID API 处理输入报告,但振动反馈不适用于 DirectInput。
映射
XUSB 驱动程序为设备实现 XUSB 类接口和 HID 类接口,以支持 XINPUT 和 DirectInput 用法。 此映射基于 XUSB 子类型信息。 驱动程序实现四组不同的映射。
XUSB 子类型
映射
XINPUT_DEVSUBTYPE_GAMEPAD (子类型 1)
游戏板
XINPUT_DEVSUBTYPE_WHEEL (子类型 2)
轮子
XINPUT_DEVSUBTYPE_ARCADE_STICK (子类型 3)
街机摇杆/街机板
XINPUT_DEVSUBTYPE_FLIGHT_STICK (子类型 4)
飞行摇杆
XINPUT_DEVSUBTYPE_DANCE_PAD (子类型 5)
任何新子类型的默认值
XINPUT_DEVSUBTYPE_GUITAR (子类型 6)
吉他
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (子类型 7)
XINPUT_DEVSUBTYPE_DRUM_KIT (子类型 8)
XINPUT_DEVSUBTYPE_GUITAR_BASS (子类型 11)
XINPUT_DEVSUBTYPE_ARCADE_PAD (子类型 19)
注意
以下 HID 映射是静态的。 这意味着,即使设备功能报告指示不支持特定按钮或轴,映射仍将包含它,但始终报告状态或中心值。
游戏板
这是默认映射,围绕标准游戏板设计,并作为 游戏板 HID 使用类型公开。
控制
HID 用法名称
使用情况页
使用情况 ID
左摇杆
X、Y
0x01
0x30、0x31
右摇杆
Rx、Ry
0x01
0x33,0x34
左触发器 + 右触发器
Z*
0x01
0x32
D-Pad 向上、向下、向左、向右
Hat Switch
0x01
0x39
一个
按钮 1
0x09
0x01
B
按钮 2
0x09
0x02
X
按钮 3
0x09
0x03
Y
按钮 4
0x09
0x04
LB (左保险杠)
按钮 5
0x09
0x05
RB (右保险杠)
按钮 6
0x09
0x06
返回
按钮 7
0x09
0x07
开始
按钮 8
0x09
0x08
LSB (左摇杆按钮)
按钮 9
0x09
0x09
RSB (右摇杆按钮)
按钮 10
0x09
0x0A
注意
\: 这组合在一起,使 Z 呈现大多数游戏预期旋转的中心行为;这意味着无法通过 directInput 和 HID 查看所有可能的触发器组合值。
街机摇杆/街机板
这是围绕街机摇杆控制器设计的映射,作为 游戏板 HID 使用类型公开。 街机板非常类似于街机摇杆,但在较小的外形规格中。 这些设计将模拟左触发器和右触发器替换为数字按钮,用于报告最小和最大轴值。
控制
HID 用法名称
使用情况页
使用情况 ID
D-Pad 向上、向下、向左、向右
Hat Switch
0x01
0x39
一个
按钮 1
0x09
0x01
B
按钮 2
0x09
0x02
X
按钮 3
0x09
0x03
Y
按钮 4
0x09
0x04
LB (左保险杠)
按钮 5
0x09
0x05
RB (右保险杠)
按钮 6
0x09
0x06
返回
按钮 7
0x09
0x07
开始
按钮 8
0x09
0x08
左触发器
按钮 9
0x09
0x09
右触发器
按钮 10
0x09
0x0A
这些设备可能或可能不支持其他控件,但这些控件不受 HID 映射公开:左摇杆、右摇杆、LSB(左摇杆按钮)和 RSB(右摇杆按钮)。
轮子
此映射围绕赛车方向盘设计,并作为 游戏板 HID 使用类型公开。
控制
HID 用法名称
使用情况页
使用情况 ID
滚轮 (左摇杆 X)
X
0x01
0x30
加速器踏板 (右扳机) + 刹车踏板 (左扳机)
Z*
0x01
0x32
D-Pad 向上、向下、向左、向右
Hat Switch
0x01
0x39
一个
按钮 1
0x09
0x01
B
按钮 2
0x09
0x02
X
按钮 3
0x09
0x03
Y
按钮 4
0x09
0x04
LB (左保险杠)
按钮 5
0x09
0x05
RB (右保险杠)
按钮 6
0x09
0x06
LSB (左摇杆按钮)
按钮 7
0x09
0x07
RSB (右摇杆按钮)
按钮 8
0x09
0x08
返回
按钮 9
0x09
0x09
开始
按钮 10
0x09
0x0A
注意
•:这组合在一起,使 Z 显示大多数游戏预期为刹车和加速器控件预期的居中行为:这意味着不可能通过 DirectInput查看所有可能的踏板组合值。
飞行摇杆
此映射围绕飞行杆设计,并作为 游戏杆 HID 使用类型公开。
控制
用法名称
使用情况页
使用情况 ID
飞行棒 (左摇杆)
X、Y
0x01
0x30、0x31
POV 帽子 (右摇杆)
Rx、Ry
0x01
0x33,0x34
限制(右触发器)
Z
0x01
0x32
陆克(左扳机)
Rz
0x01
0x35
D-Pad 向上、向下、向左、向右
Hat Switch
0x01
0x39
主要武器 (A)
按钮 1
0x09
0x01
辅助武器 (B)
按钮 2
0x09
0x02
X
按钮 3
0x09
0x03
Y
按钮 4
0x09
0x04
LB (左保险杠)
按钮 5
0x09
0x05
RB (右保险杠)
按钮 6
0x09
0x06
返回
按钮 7
0x09
0x07
开始
按钮 8
0x09
0x08
LSB (左摇杆按钮)
按钮 9
0x09
0x09
RSB (右摇杆按钮)
按钮 10
0x09
0x0A
注意
这是基于最终飞行棒设计。 由于这不同于早期飞行摇杆定义,因此许多设备都有一个支持旧模型和新模型的模式开关。 此映射假定新模型。