我有 Microsoft Sculpt 人体工学桌面(键盘 + 鼠标),它在某些支持游戏手柄的游戏中造成了重大问题,因为不存在的虚拟操纵杆会让输入变得疯狂。如果我运行,rmmod joydev
问题就解决了,但我有真正的游戏手柄和方向盘,我想在游戏中将它们用作输入控制器。那么,如何才能仅禁用虚拟 Sculpt 操纵杆而不关闭游戏控制器支持?
$ udevadm info --attribute-walk /dev/input/js0
http://i.imgur.com/sAiQXAR.png - jstest-gtk screenshot
答案1
临时的强力解决方案是重命名/删除设备文件,即:
rm /dev/input/js0
mv /dev/input/js1 /dev/input/js0
但请注意,大多数现代游戏根本不使用界面/dev/input/js0
,因此您还需要照顾好/dev/input/eventX
文件。您可以使用它evtest
来找出哪个设备是您的键盘和操纵杆。下次重新启动时,设备将恢复到原来的顺序。
另一种不那么暴力的方法是通过环境变量:
SDL_JOYSTICK_DEVICE="/dev/input/js1"
export SDL_JOYSTICK_DEVICE
这会强制基于 SDL 的游戏使用 js1 而不是 js0。我认为这不适用于基于 SDL2 的现代游戏,并且它仅适用于单个操纵杆/游戏手柄,因此用途有限。
SDL2 确实提供了配置操纵杆和重新映射按钮的选项,但我认为它目前没有重新排序设备的功能。
最后,还有一种“清理”方法,即编写 udev 规则,这基本上与rm
/ mv
hack 的作用相同,但效果是永久的。这些规则/etc/udev/rules.d/
可以在网上找到,编写这些规则的教程散布在各处,也许这会有所帮助,但不确定它是否是最新的: