Устройства 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, многие устройства имеют переключатель режима, поддерживающий старую и новую модель. Это сопоставление предполагает новую модель.