Путаница с HID-совместимым геймпадом в Windows

5387
AlexRamallo

У меня проблема с настройкой геймпада. Система устройств ввода Windows всегда смущала меня, но после некоторых исследований я собрал следующее:

  • XInput - это новейший / наиболее широко используемый API в DirectX для ввода с геймпада.
  • DirectInput - это более старый API, который не так популярен / используется (благодаря тому, что XInput проще и быстрее настраивается)
  • XInput поддерживает ТОЛЬКО контроллеры Xbox (Xbox 360 и, возможно, Xbox One)
  • DirectInput поддерживает все типы устройств ввода, в том числе общие HID-совместимые геймпады и контроллеры Xbox (хотя с меньшим количеством функций, чем через XInput, например, поддержка гарнитуры)

Моя проблема заключается в том, чтобы заставить геймпад Bluetooth ( игровой контроллер Amazon Fire TV ) работать в играх на Windows. Очевидно, что, поскольку это не контроллер Xbox 360, для его работы над игрой только для XInput потребуется обходной путь. Этот проект, кажется, делает свое дело почти идеально, поскольку он позволяет всем устройствам ввода эмулировать ввод Xbox360 и, следовательно, сделать их совместимыми с XInput.

Тем не менее, я столкнулся с несколькими препятствиями, и я не могу точно сказать, чья это вина или как их исправить. Одна из проблем заключается в том, что триггеры L / R вообще не обнаруживаются. Зайдя в меню «Устройства и принтеры» и нажав «Настройки игрового контроллера» для моего контроллера, я могу проверить входные данные с помощью знакомого экрана:

enter image description here

Нажатие на триггеры вообще ничего не делает. Кроме того, если вы заметили, есть 15 кнопок ввода. Это правильно, так как тестируемый мной контроллер имеет 15 кнопок, однако 4 из этих кнопок являются мультимедийными кнопками, которые сами управляют ОС. Например, нажатие кнопки «Домой» на контроллере откроет мой интернет-браузер и приведет меня на мою домашнюю страницу. Нажим других кнопок мультимедиа по-видимому ничего не делает.

Мои вопросы:

  1. Как заставить триггеры работать? Это проблема с драйверами? Я думал, что HID-совместимые устройства должны были просто работать. Если Windows обнаружила все 15 кнопок, два аналоговых джойстика и один D-Pad, почему она не может обнаружить два триггера? Поддерживают ли HID-совместимые игровые планшеты аналоговые триггеры, или это ошибка / проблема либо в самом контроллере, либо в драйвере геймпада Windows?

  2. Как я могу взять под контроль 4 мультимедийных кнопки на устройстве? Наличие кнопки на геймпаде, которая переводит меня в мой интернет-браузер, довольно бесполезно и раздражает.

  3. Если для этого абсолютно необходим специальный драйвер, можно ли написать его самостоятельно, не имея связи или помощи от производителя?

Спасибо!

3

1 ответ на вопрос

2
Manwithgun

You are correct about what directInput is vs Xinput, though one could argue that the directInput api allows for more diverse controls. If you have a controller that registers as a directInput device and you have a game that only accepts Xinput, I suggest x360ce (@ http://www.x360ce.com/ ). This converts directInput into Xinput for the game while masking the controllers actual input. Simply run x360ce.exe inside the game directory and follow the x360ce website's instructions. Unfortunately it is not compatible with all games, and also may not be compatible with your controller. It's worth a shot though, just be sure to leave feedback for the developers of x360ce afterward. I hope this helps!