OpenTK определяет контроллер PS4v2 (через USB)

Когда я запрашиваю имя подключенного контроллера PS4 v2 в моем приложении OpenTK, используя OpenTK.Input.GamePad.GetName(i), я получаю «Unmapped Controller», а значения осей и кнопок находятся повсюду. Я хочу, чтобы мое приложение работало как с контроллерами Xbox 360/One, так и с контроллерами PS3/4, поэтому мне нужен способ различать их и применять сопоставление, когда это необходимо.

Прежде всего, я думаю, что OpenTK не поддерживает такие контроллеры, и поэтому он сообщает об этом как о несопоставленном контроллере (на самом деле я только что проверил исходный код OpenTK, и кажется, что для контроллера PS4 определено конкретное сопоставление, и я удивлен, почему это не работает.Может ли это быть из-за версии v2?). Поэтому мне нужен способ узнать, является ли контроллер, который я подключил, контроллером PS4, чтобы применить к нему пользовательское сопоставление.

Есть ли способ получить реальное имя устройства OpenTK Gamepad вместо общего названия «Unmapped Controller»?

Я использую OpenTK 3.0.1.


person Greg K.    schedule 18.08.2018    source источник


Ответы (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 необходимо обновить для корректной работы с новым отображением.

person nondebug    schedule 20.08.2018
comment
Спасибо за ответ. Хотя я использую Windows x64 бит. Как определить, что используется SDL? - person Greg K.; 21.08.2018
comment
Попробуйте установить для переменной среды SDL_GAMECONTROLLERCONFIG известную рабочую строку конфигурации (возьмите соответствующую из файла gamecontrollerdb.txt) и посмотрите, исправит ли это ошибки вашего геймпада. В Windows с DS4 V2 вы должны использовать это: 030000004c050000cc09000000000000,Контроллер PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0 .1, направляющая: b12, левое плечо: b4, левый джойстик: b10, левый триггер: a3, левыйx: a0, левый: a1, правый плечо: b5, правый джойстик: b11, правый триггер: a4, правыйx: a2, правый: a5, начало: b9 ,x:b0,y:b3,платформа:Windows, - person nondebug; 23.08.2018
comment
Просто настройте эту переменную и запустите приложение, а не фиксированное:/ - person Greg K.; 26.08.2018