OpenTK Определить контроллер PS4v2 (через USB)
Когда я запрашиваю имя подключенного контроллера PS4 v2 в моем приложении OpenTK, используя OpenTK.Input.GamePad.GetName(i)
Я получаю "Unmapped Controller" и значения осей и кнопок повсюду. Я хочу, чтобы мое приложение работало как с контроллерами Xbox 360/One, так и с контроллерами PS3/4, поэтому мне нужен способ различать их и применять сопоставление при необходимости.
Прежде всего, я думаю, что OpenTK не поддерживает такие контроллеры, и именно поэтому он сообщает о нем как о не отображенном контроллере (на самом деле я только что проверил исходный код OpenTK, и кажется, что для контроллера PS4 определено определенное отображение, и я удивлен, почему это не работает. Может ли это быть из-за версии v2?). Поэтому мне нужен способ сообщить, является ли подключенный контроллер контроллером PS4, чтобы применить к нему пользовательское сопоставление.
Есть ли способ получить настоящее имя устройства геймпада OpenTK вместо этого общего названия "Unmapped Controller"?
Я использую OpenTK 3.0.1.
1 ответ
OpenTK является кроссплатформенным, можете ли вы рассказать, на какой ОС вы его используете? Большая часть логики драйвера геймпада зависит от платформы. Если вы работаете в операционной системе Linux, версия ядра также важна, когда речь идет о проблемах совместимости геймпада.
Похоже, OpenTK может использовать SDL2 для ввода с геймпада. В этом случае вы захотите проверить, какая версия SDL2 используется, и, возможно, обновить файл конфигурации gamecontrollerdb.txt, добавив новую информацию о геймпаде:
https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
Геймпады Dualshock 4 сложны, и вам потребуется несколько записей для корректной поддержки всех его версий и режимов, особенно в Linux. Помимо различий V1/V2, было также обновлено драйвер hid-sony Linux, который изменил способ, которым устройство подвергается приложениям. SDL2 необходимо обновить для корректной работы с новым отображением.