即使没有按下任何键,Linux 也会检测到按下的游戏手柄键

即使没有按下任何键,Linux 也会检测到按下的游戏手柄键

我的 Arch Linux 机器上出现了一个非常奇怪的问题。好吧,这个问题已经困扰我好几年了,但由于我很少使用游戏手柄,所以第一次遇到这个问题时就忽略了它。这是一个非常奇怪的问题,所以请仔细阅读。

不久前,我尝试使用 Xbox 360 手柄在模拟器上玩一些老的 PSX 游戏(不用担心,它们是原版光盘)。当我尝试配置手柄(使用 xpad 内核模块)时,模拟器(本地运行的 PCSX)一直告诉我右触发器一直被按下,因此无法配置其他按键(因为我尝试配置的每个按键都一直被分配给右触发器)。

我尝试了另一个模拟器,在 Wine 下运行的 ePSXe(然后是 ePSXe 原生),遇到了同样的问题。此时我已经非常怀疑了,我使用的是原装的、工作正常的 Xbox 360 有线控制器和 xpad,其他人都在使用,为什么它不起作用?然而,我没有放弃,尝试了其他解决方案,例如 xboxdrv 用户空间驱动程序。没有运气。然后我放弃了,因为我不想为此失眠。

最近,我买了一个用于 PS2 控制器的 USB 适配器。我将其插入,尝试在模拟器上配置它,结果……结果是什么?他们一直告诉我 R2 按钮(与 X360 控制器的右扳机处于同一位置)被按下了!两个完全正常工作的控制器在使用不同的驱动程序和不同的软件时出现相同问题的几率有多大?至少现在很清楚,这不是 X360 pad 的软件或 xpad 或模拟器的问题。

排除了所有这些嫌疑后,我能想到的解释只有一个,那就是内核的手柄模块出了问题。但我从未接触过任何与手柄有关的配置文件,我的内核是 Arch Linux 存储库中的原版内核。你能帮我解决我的问题吗?我在这个特定问题上投入了大量的时间和金钱。

为什么它总是检测到相同的键(右扳机/R2),即使这些键在技术上是来自使用不同驱动程序的不同游戏手柄的不同键(尽管我认为 xpad 只是“翻译”内核游戏手柄模块的输入)?请记住,其他键可以正常工作,我曾经设法手动分配它们,并且每个键都可以工作,只要我没有将右扳机/R2 分配给任何功能。

如果我没有使用修改过的内核,而且我从未接触过与游戏手柄相关的配置文件,为什么这个对我不起作用?还有人遇到过这个问题吗?我甚至不知道在搜索引擎上输入什么。非常感谢您的阅读。

答案1

看起来 xpad 模块可能有问题,但仅仅是它可能无法识别您的控制器,从而使其陷入“未知 pad”模式。

您可以使用三个参数修改模块的操作:
+dpad_to_buttons:将 D-PAD 映射到按钮而不是未知键的轴
+触发按钮:将触发器映射到按钮而不是未知垫的轴
+坚持到空:不要为未知的打击垫映射打击棒

通过在文件中添加或更改一行/etc/modprobe.d,您可以设置/重置这些参数。

在中创建文件/etc/modprobe.d,必须以 '配置文件',否则它将不会被识别为配置文件。

在此文件中,放置以下行:

options xpad {option} [{option}...]

根据需要添加或删除选项。我建议注释掉(#) 如果没有列出选项,则删除该行,或者直接删除整个文件。

你可能必须修改键盘模块,然后修改探针使用新选项重新加载。

如果这些选项似乎无法识别,你可能需要运行修改器-a重建模块依赖表。

您可以使用以下代码查看模块的有效参数修改信息命令。

相关内容