Сопоставление традиционных осей джойстика Windows с HID

Я немного запутался в описании осей джойстика, и я надеюсь, что у кого-то есть ссылка или документ, который может помочь прояснить мою путаницу.

Я не Windows-парень, поэтому попытка портировать какой-то традиционный код игрового порта Windows меня немного смутила.

Все мы знаем об общих первых трех осях:
X
Y
Z

Насколько я понимаю, в интерфейсе в стиле игрового порта три другие оси:
R
U
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? Я понимаю, что это «вектор» и «относительный вектор» соответственно, но мне трудно представить, что это значит с точки зрения физического устройства.

Приветствуются все указатели на просвещение и документацию.


person wadesworld    schedule 28.03.2010    source источник


Ответы (1)


Здесь есть 2 разных соглашения со схожими названиями:

  • Положение, (R) вращение и/или (V) скорость для каждой из осей x, y, z
  • Оси (R), (U), (V)

Возможно, оси R, U, V отображаются непосредственно на 3 слота HID, какими бы они ни были. Или может быть так, что драйверы делают что-то еще, в зависимости от того, какое именно это оборудование.

Лично я бы не стал тратить слишком много времени на беспокойство о том, что «означает» каждая ось или могут ли они быть отображены напрямую. Каждый джойстик имеет разные физические контроллеры, которые будут отображаться драйверами произвольным образом. Таким образом, помимо X и Y трудно предугадать, какие оси будут использоваться для каждой функции. И даже если вы можете угадать первоначальное намерение, вполне вероятно, что пользователь захочет переопределить значения по умолчанию. Поэтому, вероятно, лучше всего реализовать сопоставление осей с помощью файла настроек, который можно настроить для каждого устройства и каждого пользователя.

person Kylotan    schedule 29.03.2010