linux - 为什么 SDL 在 Linux (PocketCHIP) 上检测不到我的 iBuffalo 游戏 Controller ?

标签 linux sdl sdl-2 gamepad gamecontroller

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

在我的 Mac 上,当我运行包含在SDL测试目录,都正确识别 Controller :

INFO: Joystick 0: USB,2-axis 8-button gamepad   (guid 83050000000000006020000000000000)
INFO: There are 0 game controller(s) attached (1 joystick(s))

但是,当我在 PocketCHIP 上运行相同的脚本时,它没有检测到 Controller 。

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 上的 Controller ?

最佳答案

感谢@genpfault,我了解到 SDL 使用 /dev/input/event* 进行游戏 handle 输入捕获。但是,我的用户 (chip) 没有访问这些权限的权限,因此失败了。

要授予 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 现在将能够读取游戏 handle 输入。

关于linux - 为什么 SDL 在 Linux (PocketCHIP) 上检测不到我的 iBuffalo 游戏 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38114432/

相关文章:

c++ - 如何在 OS X 上使用 SDL2 编译 C++ 程序?

linux - 如何限制 pppd 记录文件大小?

无法解决 SDL 中的段错误(核心转储)

java - 将 SDL 2.0 游戏移植到 Android

c++ - 来自 SDL Surface 的 openGL 纹理

c - SDL_Overlay 的 SDL2.0 替代方案

c++ - 使用 SDL2 渲染器绘制填充四边形/三角形的最快方法?

c - Linux 原始套接字权限问题

linux - rhel/centos 上的 VS Code 安装后应该出现在 Gnome 中

c - 如果进退两难