为什么 SDL 在 Linux (PocketCHIP) 上检测不到我的 iBuffalo 游戏控制器?
Why won't SDL detect my iBuffalo game controller on Linux (PocketCHIP)?
我最近获得了一台基于 ARM 的 Linux 计算机,名为 PocketCHIP. It's a great little computer! I'm working on writing a program which uses SDL 2.0.4 and my iBuffalo USB gamepad。但是,SDL 似乎无法识别 PocketCHIP 上的控制器。我认为这是一个流行的控制器,所以如果 SDL 尚未支持它,我会感到惊讶,这让我觉得我的 setup/installation 有问题。控制器确实可以在其他程序中使用 (mednafen)。
在我的 Mac 上,当我 运行 SDL 测试目录中包含的 testgamecontroller.c
、testjoystick.c
和 controllermap.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
用户访问权限,请将 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 现在将能够读取游戏手柄输入。
我最近获得了一台基于 ARM 的 Linux 计算机,名为 PocketCHIP. It's a great little computer! I'm working on writing a program which uses SDL 2.0.4 and my iBuffalo USB gamepad。但是,SDL 似乎无法识别 PocketCHIP 上的控制器。我认为这是一个流行的控制器,所以如果 SDL 尚未支持它,我会感到惊讶,这让我觉得我的 setup/installation 有问题。控制器确实可以在其他程序中使用 (mednafen)。
在我的 Mac 上,当我 运行 SDL 测试目录中包含的 testgamecontroller.c
、testjoystick.c
和 controllermap.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
用户访问权限,请将 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 现在将能够读取游戏手柄输入。