2016-06-30 9 views
2

Недавно я получил компьютер с операционной системой на базе ARM, который называется PocketCHIP. Это отличный маленький компьютер! Я работаю над написанием программы, использующей SDL 2.0.4 и мой iBuffalo USB gamepad. Однако SDL, похоже, не распознает контроллер на PocketCHIP. Я думаю, что это популярный контроллер, поэтому меня удивило бы, если SDL еще не поддержал его, что заставляет меня думать, что что-то не так с моей установкой/установкой. Контроллер действительно работает в других программах (mednafen).Почему SDL не обнаружит мой игровой контроллер iBuffalo на Linux (PocketCHIP)?

На моем 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/[email protected]/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?

+0

У вашей учетной записи пользователя есть [права на чтение файла джойстика] (https://bbs.nextthing.co/t/usb-controller-for-pico-8-on-pocketc-h-i-p/5077/11)? – genpfault

+0

@genpfault Вот и все !!! Я добавил пользователя чипа в группу ввода, и теперь SDL обнаруживает мой контроллер. Благодаря! – Andrew

+0

@genpfault: не стесняйтесь скопировать/вставить мой ответ ниже, и я приму его, чтобы дать вам кредит. – Andrew

ответ

2

Благодаря @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, чтобы сохранить файл и выйти из текстового редактора. Перезапуск PocketCHIP и SDL теперь смогут читать вход геймпада.