Сопоставление традиционных осей джойстиков Windows с HID - PullRequest
0 голосов
/ 29 марта 2010

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

Я не 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? Я видел, как один документ описывает это как «ось для педалей руля», заставляя меня поверить, что это будет Рай.
2) Может ли кто-нибудь более подробно описать типичное использование осей V и Vbr? Я понимаю, что описания - это «вектор» и «относительный вектор», соответственно, но мне сложно представить, что это означает с точки зрения физического устройства.

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

1 Ответ

0 голосов
/ 29 марта 2010

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

  • Position, (R) otation и / или (V) elocity для каждой из осей x, y, z
  • (R), (U), (V) оси

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

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

...