为什么SDL不能在Linux上检测我的iBuffalo游戏控制器(PocketCHIP)?

我最近获得了一个名为PocketCHIP的基于ARM的Linux计算机。 这是一个伟大的小电脑! 我正在编写一个使用SDL 2.0.4和我的iBuffalo USB手柄的程序 。 但是,SDL似乎无法识别PocketCHIP上的控制器。 我认为这是一个很受欢迎的控制器,所以如果SDL不支持它,会让我感到惊讶,这让我觉得我的设置/安装有问题。 控制器确实在其他程序中工作(mednafen)。

在我的Mac上,运行包含在SDLtesting目录中的testgamecontroller.ctestjoystick.ccontrollermap.c脚本时,它们都能正确识别控制器:

 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上识别我的控制器?

感谢@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现在可以读取游戏手柄输入。