Изменить порядок игровых контроллеров в Windows 8.1

У меня игровой ПК под управлением Windows 8.1. Постоянно возникает проблема, когда порядок любых подключенных контроллеров постоянно меняется. Я настроил множество игр и эмуляторов для ожидания контроллеров в определенном порядке, но когда я открываю панель управления "Игровые контроллеры" (т.е. joy.cpl) или запускаю dxdiag, я вижу, что порядок контроллеров изменился. до всех моих привязок.

Это влияет только на игры, которые используют DirectInput для чтения ввода с контроллеров. Игры, использующие Xinput, работают правильно.

Мне ясно, что эти игры используют порядок, в котором контроллеры перечисляются DirectInput, чтобы определить их порядок в игре. Это тот же порядок, в котором они отображаются на панели управления "Игровые контроллеры".

Есть ли способ изменить этот порядок?

Единственное, что я обнаружил, так это то, что если я физически отсоединяю USB-устройство, которое либо является контроллером, либо предоставляет интерфейс для контроллера (например, беспроводной приемник Xbox 360 или USB-ключ Bluetooth), а затем снова подключаю его эти контроллеры будут перемещены в конец списка. Но это все, что у меня есть. И я не знаю, как сделать этот процесс автоматическим. Я пытался использовать команду devcon для автоматического удаления этих устройств и повторного сканирования, и, хотя иногда это работает, часто он сообщает, что необходимо перезагрузить компьютер для удаления устройств, что означает, что это не влияет на порядок перечисления DirectInput.

2 ответа

Решение

After years of having my controller bindings get messed up due to Windows 8.1's arbitrary ordering of controllers and there not being a way to reorder them, I took matters into my own hands and wrote this tool: devreorder

Есть игры, которые определяют порядок контроллеров по JoyID в реестре. Чтобы изменить JoyID, используйте программу JoyIDs:https://theairtacticalassaultgroup.com/forum/showthread.php?t=13009.

А еще есть игры, которые определяют порядок контроллеров в зависимости от того, как они перечислены в Game Controllers(joy.cpl) здесь:

Одна игра, которая делает это, - это Battlefield 2. Независимо от того, какие идентификаторы имеют ваши джойстики, какой контроллер по умолчанию вы выбрали в игровых контроллерах, она распознает только первые два джойстика из списка в игровых контроллерах, даже если их идентификаторы 20 и 21, и есть Еще 20 джойстиков подключены с идентификаторами 0–19.

В моем случае он распознает только Logitech Extreme 3D и vJoy Device, но не Arduino Leonardo, даже учитывая, что у меня Arduino Leonardo установлен в качестве устройства по умолчанию и на ID1:

Но если я изменю порядок в игровых контроллерах по своему усмотрению, он всегда распознает первые два контроллера. Проблема в том, что не совсем очевидно, как изменить порядок контроллеров в игровых контроллерах.

Я упорядочиваю список контроллеров в «Игровых контроллерах», удалив устройство в диспетчере устройств, а затем отключив устройство и снова подключив его. В случае vJoy вы удаляете устройства из диспетчера устройств, а затем снова включаете их с помощью инструмента «Настроить vJoy», который устанавливается вместе с vJoy. Видео-демонстрация:https://youtu.be/tZTfdY6cW1Q

Другие вопросы по тегам