Определите, к какому типу геймпада подключен Linux - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь написать скрипт, который определит, какой тип геймпада подключен к системе Linux (в частности, в Ubuntu).

Я попытался просмотреть файлы в папке /sys/class/input/js*, но не смог найтичто-нибудь определенное, чтобы определить, какой тип контроллера подключен (Switch против Xbox против PS3 против PS4).Большая часть информации относится к этому контроллеру.

Я бы хотел, чтобы это работало на Python или BASH, и с этой целью я попробовал модули pynput, pygame и inputs Python.Все из которых либо не имеют документации метода для этого, чтобы работать, либо не имеют такого метода.

Для попыток BASH, я попытался:

sudo cat /sys/kernel/debug/usb/devices | grep -E "^([TSPD]:.*|)$" | grep 'Product='

в то время как этот методГоворит ли я, что подключен какой-то геймпад, а для контроллеров Xbox мне даже говорят, что это для Xbox One или 360, я думаю, что не все контроллеры будут делать это.И контроллеры PlayStation и Switch, которые я тестировал, на самом деле этого не делают.

Я также проверил /sys/class/input/js*/device/capabilities/abs, но я понятия не имею, насколько это окончательно.

По сути, я хочу что-то, что будет либо возвращать число или строку, либо какой-то другойметод определения, какой тип контроллера я подключил. Если есть способ сделать это на файловой системе с помощью скрипта BASH или с помощью какого-либо модуля Python, то в любом случае будет работать.

Спасибо впередвремени!Если есть лучший способ обнаружить это, пожалуйста, дайте мне знать!Я открыт для предложений!

1 Ответ

0 голосов
/ 03 июня 2019

Вы пробовали evdev?В документации есть хороший пример списка устройств ввода , который успешно отображает список моих Gamesir-G3s через USB и беспроводной контроллер Xbox через Bluetooth.

import evdev
devices = [evdev.InputDevice(path) for path in evdev.list_devices()]
for device in devices:
    print(device.path, device.name, device.phys)
...