![joystick.conf 不会阻止所有游戏手柄在 Xubuntu Studio 22.04 上充当鼠标+键盘](https://linux22.com/image/1190379/joystick.conf%20%E4%B8%8D%E4%BC%9A%E9%98%BB%E6%AD%A2%E6%89%80%E6%9C%89%E6%B8%B8%E6%88%8F%E6%89%8B%E6%9F%84%E5%9C%A8%20Xubuntu%20Studio%2022.04%20%E4%B8%8A%E5%85%85%E5%BD%93%E9%BC%A0%E6%A0%87%2B%E9%94%AE%E7%9B%98.png)
我的设备是一台游戏电脑,配有多个控制器和模拟器 + Steam。目前它有这些:-
js0 - Xbox 控制器 (24C6:581A) - 操纵杆有时控制鼠标
js1 - PS4 Dualshock4 红色 (054C:054C) - 无法控制鼠标
js2 - PS4 Dualshock4 白色 (054C:054C) - 无法控制鼠标 [相同的供应商和产品 ID]
js3 - PS4 Dualshock4 黑色 (054C:09CC) - 触摸板始终控制鼠标
我已经编辑了两个 joystick.conf 文件:- /usr/share/X11/xorg.conf.d/50-joystick.conf /etc/X11/xorg.conf.d/51.joystick.conf
以下内容:-
```Section "InputClass"
Identifier "joystick catchall"
MatchIsJoystick "on"
MatchDevicePath "/dev/input/event*"
Driver "joystick"
# These Two Lines Disable the mouse emulation
Option "StartKeysEnabled" "off"
Option "StartMouseEnabled" "off"
EndSection```
这里推荐的是:-
===
我对此有 3 个问题:-
为什么规则似乎只能阻止两个控制器接管鼠标+键盘?
系统是否可能在其他地方保存这些规则?这台电脑最初是 Ubuntu Studio,并在其上安装了 XfCE
自从我关闭 StartKeysEnabled 和 StartMouseEnabled 后,某些游戏(例如 ToeJam& Earl)就完全停止检测控制器了。这些游戏是否依赖 X 将控制器视为鼠标+键盘?同样的游戏经常有两个控制器完全重叠,两个玩家由两个游戏手柄控制 - 这可能是因为两个控制器恰好具有相同的供应商和产品 ID。
答案1
我有一个具有相同 ID 的黑色 PS4 控制器。
Bus 003 Device 002: ID 054c:09cc Sony Corp. DualShock 4 [CUH-ZCT2x]
我通过 udev 规则完成了此操作。
cat /etc/udev/rules.d/51-disable-PS4-touchpad.rules
SUBSYSTEM=="input", ATTRS{name}=="*Controller Touchpad", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
这将删除触摸板的设备节点,也可以与其他控制器一起工作,这个我无法检查。
注意:完全忘记了。请恢复之前在文件 /usr/share/X11/xorg.conf.d/50-joystick.conf 和 /etc/X11/xorg.conf.d/51.joystick.conf 中的更改。
答案2
我自己已经部分解决了这个问题(如果我设法完全解决这个问题,我会编辑这个答案,如果这是正确的礼仪):-
- 我的黑色 Playstation 控制器在“应用程序”>“设置”>“鼠标和触摸板”>“设备”下拉菜单下打开。红色和白色 Playstation 控制器关闭,这肯定是只有黑色控制器工作的原因。似乎在 Xfce 上(或至少在此系统上),joystick.conf 规则被忽略,而支持此 UI,并且可能 UI 正在系统上我尚未看到的其他地方编辑配置文件。
仔细检查后,Xbox 控制器似乎被 Steam 改造成了鼠标+键盘,而不是从启动时就以这种方式运行。Xbox 控制器没有列在我上面提到的“鼠标和触摸板”下拉菜单中。
如果 Steam 关闭,Xbox 控制器将继续充当鼠标+键盘。但据传闻,我认为 Steam 在关闭时可能不会将所有设备完全恢复到以前的状态。我不打算调试 Steam,我可以忍受关闭 Steam 后重新启动,或者我可以找到一些脚本来重置所有鼠标+键盘设备。
==
编辑(2022 年 10 月 26 日 - 19:30 GMT)
- 除上述内容外,我还制定了额外的 udev 规则,尝试将每个游戏手柄修复到特定的 js# 设备 ID,并遵循此页面上的建议:https://ubuntuforums.org/showthread.php?t=1595666
我还安装了 Xbox 控制器驱动程序https://github.com/paroj/xpad
在此之后,对于各种无法检测到控制器的游戏,我发现可以通过重新安装它们或更改它们使用的 Wine 或 Proton 版本来解决这个问题。虽然我仍然对设置保存在多少个不同的地方以及不同游戏处理游戏手柄支持的方式的多样性感到困惑(例如,它们是指事件编号还是 js# 编号),但我认为 Ubuntu 方面的困难现在基本已经解决了。
- 各个论坛推荐的 udev 规则对我的系统完全没有效果。在我的系统上,重要的是 (i) Steam 是否已打开并允许将其桌面设置应用于控制器,以及 (ii) Xfce 应用程序菜单中的“鼠标和触摸板”UI。