Поделиться через


Устройства DirectInput и XUSB

Драйвер XUSB в Windows реализует интерфейс режима ядра для библиотеки DLL XINPUT. Чтобы обеспечить хороший интерфейс для устаревших названий, использующих API DirectInput с общим устройством контроллера, драйвер также экспортирует интерфейс класса HiD, который выбирается DirectInput. Мы выбрали сопоставление XUSB с HID на основе типичного поведения в наборе игровых приложений для исходной версии XINPUT, и мы обновили сопоставление для новых подтипов. В этом разделе описывается сопоставление.

Устройство пользовательского интерфейса (HID)

Стандарт HID является стандартом комитета универсальной последовательной шины (USB), первоначально предлагаемого корпорацией Майкрософт для обобщения протоколов для устройств ввода. Он состоит из языка описания байтов кода и может выражать геймпады, мыши, джойстики, регулирование и контроль управления с несколькими осями, а также контроллеры с несколькими осями. Так как этот стандарт настолько обобщен, у вас может возникнуть проблема с написанием программного обеспечения, которое потребляет входные данные с произвольных устройств. Таким образом, для API DirectInput, ориентированного на игру, мы разработали конкретное подобобное сопоставление типов, чтобы поощрять производство оборудования для поддержки через их драйверы.

Внимание

Вы также можете получить доступ к устройствам ввода HID с помощью API RawInput и обработки входных отчетов с помощью API HID низкого уровня, но обратная связь вибрации не будет работать как с DirectInput.

Сопоставления

Драйвер XUSB реализует интерфейс класса XUSB и интерфейс класса HID для устройств, чтобы поддерживать использование XINPUT и DirectInput . Это сопоставление основано на данных подтипа XUSB. Драйвер реализует четыре отдельные группы сопоставлений.

Подтип XUSB Сопоставление
XINPUT_DEVSUBTYPE_GAMEPAD (подтип 1) Игровой планшет
XINPUT_DEVSUBTYPE_WHEEL (подтип 2) Колесико
XINPUT_DEVSUBTYPE_ARCADE_STICK (подтип 3) Аркадная палка/аркадная панель
XINPUT_DEVSUBTYPE_FLIGHT_STICK (подтип 4) Пролетная палка
XINPUT_DEVSUBTYPE_DANCE_PAD (подтип 5) По умолчанию для любого нового подтипа
XINPUT_DEVSUBTYPE_GUITAR (подтип 6) Гитара
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (подтип 7)
XINPUT_DEVSUBTYPE_DRUM_KIT (подтип 8)
XINPUT_DEVSUBTYPE_GUITAR_BASS (подтип 11)
XINPUT_DEVSUBTYPE_ARCADE_PAD (подтип 19)

Примечание.

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

Игровой планшет

Это сопоставление по умолчанию и предназначено для стандартной игровой панели и предоставляется в качестве типа использования HID gamepad .

Элемент управления Имя использования HID Страница использования Идентификатор использования
Левая палка X, Y 0x01 0x30, 0x31
Правая палка Rx, Ry 0x01 0x33, 0x34
Левый триггер + правый триггер Z* 0x01 0x32
D-Pad вверх, вниз, слева, справа Переключатель шляпы 0x01 0x39
а Кнопка 1 0x09 0x01
Б Кнопка 2 0x09 0x02
X Кнопка 3 0x09 0x03
Y Кнопка 4 0x09 0x04
LB (левый бампер) Кнопка 5 0x09 0x05
RB (правый бампер) Кнопка 6 0x09 0x06
НАЗАД Кнопка 7 0x09 0x07
НАЧАЛО Кнопка 8 0x09 0x08
LSB (левая кнопка палки) Кнопка 9 0x09 0x09
RSB (кнопка справа на палке) Кнопка 10 0x09 0x0A

Примечание.

(*): Это объединяется таким образом, чтобы Z отображал по центру поведение, ожидаемое большинством названий для поворота; Это означает, что невозможно просмотреть все возможные значения сочетания триггеров с помощью DirectInput и HID.

Аркадная палка/аркадная панель

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

Элемент управления Имя использования HID Страница использования Идентификатор использования
D-Pad вверх, вниз, слева, справа Переключатель шляпы 0x01 0x39
а Кнопка 1 0x09 0x01
Б Кнопка 2 0x09 0x02
X Кнопка 3 0x09 0x03
Y Кнопка 4 0x09 0x04
LB (левый бампер) Кнопка 5 0x09 0x05
RB (правый бампер) Кнопка 6 0x09 0x06
НАЗАД Кнопка 7 0x09 0x07
НАЧАЛО Кнопка 8 0x09 0x08
Левый триггер Кнопка 9 0x09 0x09
Правый триггер Кнопка 10 0x09 0x0A

Эти устройства могут или не поддерживают дополнительные элементы управления, но они не предоставляются сопоставлением HID: левая палка, правая палка, LSB (левая кнопка на палку) и RSB (кнопка справа на палку).

Колесико

Это сопоставление разработано вокруг гоночного колеса и предоставляется в качестве типа использования HID gamepad .

Элемент управления Имя использования HID Страница использования Идентификатор использования
Колесо (левая палка X) X 0x01 0x30
Педаль акселератора (правый триггер) + тормозной педаль (левый триггер) Z* 0x01 0x32
D-Pad вверх, вниз, слева, справа Переключатель шляпы 0x01 0x39
а Кнопка 1 0x09 0x01
Б Кнопка 2 0x09 0x02
X Кнопка 3 0x09 0x03
Y Кнопка 4 0x09 0x04
LB (левый бампер) Кнопка 5 0x09 0x05
RB (правый бампер) Кнопка 6 0x09 0x06
LSB (левая кнопка палки) Кнопка 7 0x09 0x07
RSB (кнопка справа на палке) Кнопка 8 0x09 0x08
НАЗАД Кнопка 9 0x09 0x09
НАЧАЛО Кнопка 10 0x09 0x0A

Примечание.

(*): Это объединяется таким образом, чтобы Z отображал центрирование поведения, ожидаемое большинством названий для элементов управления тормозом и акселератором; Это означает, что невозможно просмотреть все возможные значения сочетаний педалей через DirectInput.

Пролетная палка

Это сопоставление разработано вокруг пролетной палочки и предоставляется в качестве типа использования HID Джойстика.

Элемент управления Имя использования Страница использования Идентификатор использования
Полетная палка (левая палка) X, Y 0x01 0x30, 0x31
POV Hat (справа палка) Rx, Ry 0x01 0x33, 0x34
Регулирование (правый триггер) Z 0x01 0x32
Рудер (левый триггер) Rz 0x01 0x35
D-Pad вверх, вниз, слева, справа Переключатель шляпы 0x01 0x39
Основное оружие (A) Кнопка 1 0x09 0x01
Дополнительное оружие (B) Кнопка 2 0x09 0x02
X Кнопка 3 0x09 0x03
Y Кнопка 4 0x09 0x04
LB (левый бампер) Кнопка 5 0x09 0x05
RB (правый бампер) Кнопка 6 0x09 0x06
НАЗАД Кнопка 7 0x09 0x07
НАЧАЛО Кнопка 8 0x09 0x08
LSB (левая кнопка палки) Кнопка 9 0x09 0x09
RSB (кнопка справа на палке) Кнопка 10 0x09 0x0A

Примечание.

Это основано на окончательном дизайне Flight Stick. Так как это отличается от ранних определений Flight Stick, многие устройства имеют переключатель режима, поддерживающий старую и новую модель. Это сопоставление предполагает новую модель.