将传统Windows操纵杆轴与HID相关联

时间:2010-03-28 23:26:24

标签: usb hid joystick

我对操纵杆轴的描述有点困惑,我希望有人有一个链接或文件可以帮助我清除我的困惑。

我不是Windows用户,所以尝试移植一些传统的Windows游戏端口代码让我感到有些困惑。

我们都知道共同的前三个轴:
X
ÿ
ž

我的理解是,在游戏端口界面中,另外三个轴是:
[R
ü
V

但是,查看我的IOHIDUsageTables(OS X),我看到了:

kHIDUsage_GD_X  = 0x30, /* Dynamic Value */
kHIDUsage_GD_Y  = 0x31, /* Dynamic Value */
kHIDUsage_GD_Z  = 0x32, /* Dynamic Value */
kHIDUsage_GD_Rx = 0x33, /* Dynamic Value */
kHIDUsage_GD_Ry = 0x34, /* Dynamic Value */
kHIDUsage_GD_Rz = 0x35, /* Dynamic Value */

kHIDUsage_GD_Vx = 0x40, /* Dynamic Value */
kHIDUsage_GD_Vy = 0x41, /* Dynamic Value */
kHIDUsage_GD_Vz = 0x42, /* Dynamic Value */
kHIDUsage_GD_Vbrx   = 0x43, /* Dynamic Value */
kHIDUsage_GD_Vbry   = 0x44, /* Dynamic Value */
kHIDUsage_GD_Vbrz   = 0x45, /* Dynamic Value */
kHIDUsage_GD_Vno    = 0x46, /* Dynamic Value */

由于三个R轴(虽然看起来并不罕见)和缺少U轴,这让我有点困惑。

两个问题:

1)任何人都可以确认传统U轴的轴线是什么?我看到一个文件将其描述为“方向舵踏板的轴”,这让我相信它会是Ry 2)任何人都可以更详细地描述V和Vbr轴的典型用法吗?我理解这些描述分别是“矢量”和“相对矢量”,但我很难想象物理设备的意义。

欢迎所有启发和文档指示。

1 个答案:

答案 0 :(得分:0)

这里有两种不同的约定,令人困惑的命名相似:

  • 每个x,y,z轴的位置,(R)otation和/或(V)elocity
  • (R),(U),(V)轴

可能是R,U,V轴直接映射到3个HID槽中的情况,无论它们是哪个。或者可能是驱动程序执行其他操作的情况,具体取决于它是哪个硬件。

我个人不会花太多时间担心每个轴“意味着什么”或者是否可以直接映射它们。每个操纵杆都有不同的物理控制器,这些控制器将由驱动程序以任意方式映射。因此,除了X和Y之外,很难预测每个功能将使用哪些轴。即使您可以猜测原始意图,用户可能希望覆盖默认值。因此,最好通过可以按设备和每个用户配置的设置文件来实现轴映射。