DirectInput 和 XUSB 设备 - Win32 apps

DirectInput 和 XUSB 设备 - Win32 apps

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

注意

这是基于最终飞行棒设计。 由于这不同于早期飞行摇杆定义,因此许多设备都有一个支持旧模型和新模型的模式开关。 此映射假定新模型。

相关推荐

合作伙伴