我有两个控制器,一个带无线接收器的 XBox 360 和一个复古 snes iBuffalo,每个控制器都连接到一个 USB 端口。
两者都运行良好,但 xbox 接收器会创建 4 个控制器实例,可能是因为它最多支持这么多的连接。问题是,当我启动 Crawl 或 Towerfall 等游戏时,这些实例会占用控制器插槽,并且无法检测到我的 snes USB 控制器。
有没有办法禁用附加实例?
答案1
至于问题本身,Xbox360 无线接收器支持四个控制器,即使没有连接控制器,内核驱动程序也会让所有控制器都可用。这可以视为驱动程序中的错误,但也有优点,例如允许您在游戏已运行时热插拔控制器。
无论如何,至于修复这种情况,暂时解决问题的快速而肮脏的方法是:
rm /dev/input/js1
rm /dev/input/js2
rm /dev/input/js3
mv /dev/input/js4 /dev/input/js1
这只会重命名输入设备并移开未使用的 Xbox360 设备。这不会在重新启动后继续存在,因为设备名称每次都会自动重新分配。
为了更永久的修复,您必须编写一些 udev 规则来更改设备插入时的命名方式: