Почему SDL не может обнаружить мой игровой контроллер iBuffalo в Linux (PocketCHIP)?
Недавно я приобрел компьютер Linux на базе ARM под названием PocketCHIP. Это отличный маленький компьютер! Я работаю над написанием программы, которая использует SDL 2.0.4 и мой геймпад iBuffalo USB. Однако SDL, похоже, не распознает контроллер на PocketCHIP. Я думаю, что это популярный контроллер, поэтому я бы удивился, если бы SDL его еще не поддерживал, что заставляет меня думать, что что-то не так с моей установкой / установкой. Контроллер работает в других программах (mednafen).
На моем Mac, когда я запускаю testgamecontroller.c
, testjoystick.c
, а также controllermap.c
скрипты, которые включены в тестовый каталог SDL, все они правильно распознают контроллер:
INFO: Joystick 0: USB,2-axis 8-button gamepad (guid 83050000000000006020000000000000)
INFO: There are 0 game controller(s) attached (1 joystick(s))
Однако когда я запускаю те же скрипты на PocketCHIP, он не обнаруживает контроллер.
INFO: There are 0 game controller(s) attached (0 joystick(s))
Linux, похоже, распознает устройство как подключенное:
$ cat /proc/bus/input/devices
...
I: Bus=0003 Vendor=0583 Product=2060 Version=0110
N: Name="USB,2-axis 8-button gamepad "
P: Phys=usb-1c14400.usb-1/input0
S: Sysfs=/devices/platform/soc@01c00000/1c14400.usb/usb2/2-1/2-1:1.0/0003:0583:2060.0003/input/input5
U: Uniq=
H: Handlers=js0 event2
B: PROP=0
B: EV=1b
B: KEY=ff 0 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10
Что мне нужно сделать, чтобы SDL распознал мой контроллер на PocketCHIP?
1 ответ
Благодаря @genpfault я узнал, что SDL использует /dev/input/event*
для захвата ввода геймпада. Тем не менее, мой пользователь (chip
) не было разрешения на доступ к ним, поэтому он молча терпел неудачу.
Чтобы предоставить chip
доступ пользователя, добавьте пользователя чипа в input
группа.
В Debian Linux вы можете просто запустить:
sudo adduser chip input
Или вы можете сделать это вручную, отредактировав /etc/group
:
sudo nano /etc/group
Стрелка вниз до строки, которая говорит:
input:x:101:
чтобы:
input:x:101:chip
Тип control+x
, выходить. Он предложит вам сохранить файл. Тип y
, затем return
чтобы сохранить файл и выйти из текстового редактора nano. Перезапустите ваш PocketCHIP, и SDL теперь сможет читать ввод с геймпада.