【问题标题】:Correlating traditional Windows joystick axes with HID将传统的 Windows 操纵杆轴与 HID 相关联
【发布时间】:2010-03-28 23:26:24
【问题描述】:

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

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

我们都知道常见的前三个轴:
X
是的
Z

我的理解是,在游戏端口风格的界面中,其他三个轴是:
R
U

但是,查看我的 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 轴的典型用法?我理解描述分别是“矢量”和“相对矢量”,但我很难想象这对于物理设备的含义。

欢迎所有的启蒙和文档指针。

【问题讨论】:

    标签: usb hid joystick


    【解决方案1】:

    这里有 2 种不同的约定,命名方式很相似:

    • 每个 x、y、z 轴的位置、(R) 旋转和/或 (V) 速度
    • (R)、(U)、(V) 轴

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      • 2015-08-14
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      相关资源
      最近更新 更多