2010-03-28 3 views
0

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

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

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

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

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

ответ

0

Есть 2 различные конвенции здесь с смешения подобного именования:

  • Позиция, (R) otation и/или (V), elocity для каждой из х, у, г осей
  • (R), (U) (V)

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

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