Почему 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 теперь сможет читать ввод с геймпада.

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