我在 Ubuntu 18.10 LTS 上运行 Firefox 67 版。
我有一个带滚轮的罗技 M-UAG120 鼠标。滚轮有办法将其向左和向右侧向推动。我需要的是向左推的动作与 Firefox 的 Alt-LEFT 返回页面相同,而向右推滚轮则相反。目前,Firefox 不响应任何一个滚轮推送操作的 X 事件。(我将这些称为“推动操作”,因为这与通过垂直向下推动滚轮来单击鼠标中键不同,后者工作正常)。滚动操作也能正常工作。
我运行xev并确定它正在生成这些 X 事件:
- 左滚轮推动操作:按钮 6
- 右滚轮推动操作:按钮 7
我查看了http://kb.mozillazine.org/About:config并没有发现任何特定于这些事件的内容,搜索了网络并得出了结论。
我如何配置鼠标或 Firefox,使 X 事件保持一致,以便它们产生相同的行为?如果可能的话,我不想为这只鼠标安装特殊的驱动程序。
更新#1
在我的 Ubuntu 18.10 LTS 桌面上,它有一个Logitech M525 蓝牙鼠标,左右滚轮推动操作生成一组与我笔记本电脑上使用的有线鼠标不同的 X 事件,如xev 所示:
- 左滚轮推动操作:按钮 8
- 右滚轮推动操作:按钮 9
这个特殊鼠标的左/右滚轮推动操作按我预期的那样工作。
更新#2:
我在两台机器(我的笔记本电脑和台式机,都运行 Ubuntu 18.10 LTS)上再次测试了罗技 M-UAG120 鼠标,生成的X 事件始终不同于罗技 M525 蓝牙鼠标。
我推测特定的 X 事件在鼠标设备之间没有标准化,但这令人惊讶,因为这两种鼠标设备都来自罗技。
解决方案
我找到了以下解决方案:
我补充道
/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf
:并重新启动。
令我感到困惑的是,重新启动 gdm 显示管理器
sudo service gdm restart
无效:它阻止我登录(即使我没有打开 CAPSLOCK 或其他任何东西,也一直弹出密码提示),所以我不得不求助于重新启动。TL;DR 参考资料
我发现的参考资料有助于理解上述内容:
xinput 查找设备id和按钮参数
通过设备 ID,我指的是
id=10
下面的数字。ButtonMapping
“按钮参数”是指文件中使用的参数的含义/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf
。插入后grep查找设备:
看看系统认为按钮的含义是什么:
我推测带引号的字符串有对应于 的基于 1 的枚举值
ButtonMapping
,但我还没有这方面的证据。所以假设这是正确的,我们可以给它们编号:这种猜测似乎也与Logitech_Marble_Mouse - Basic_function 相吻合。
所以
ButtonMapping
8 和 9 的位置对应于我希望系统传递给 Firefox X 应用程序的“浏览器后退”和“浏览器前进”操作。由于我想保留所有其他行为,/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf
文件中的关键行是:(
^
仅标记 6 和 7 参数被更改)。按钮映射
libinput(4) 手册页按钮映射部分描述了该机制。
“libinput”是我偶然发现的,因为在Ubuntu 16.04 和 Logitech M570上它声明:
使用 xinput 命令动态更改按钮映射
input(1) 手册页有一个选项可以直接验证选项的按钮参数,
ButtonMapping
而无需重新启动显示管理器或 X 服务器:所以我可以使用的命令,无需重新启动/重新启动任何东西,是:
分配按钮
Logitech_Marble_Mouse——分配按钮是特定于 ArchLinux 和特定于设备的,但仍然很有帮助,特别是它指出:
除了我确实必须
ButtonMapping
为这个鼠标设备更改我的 6 和 7 参数。上面没有解释为什么写着“请勿改动”。xorg.conf(5) 手册页
xorg.conf(5) 手册页显示了 conf 文件的工作方式,但请注意,由于行为会因版本而异,请确保您使用的是正确的版本,如其网页顶部所示:
lsusb -d 供应商:设备
运行 lsusb 命令(lsusb(8) 手册页)帮助我识别供应商和设备 ID:
这就是我最终
MatchUSBID
在InputClass
.71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf
请参阅Govelius 对 Trouble assigning different layouts to multiple simultaneous input devices in Linux 的回答。/var/log/Xorg*.log 文件
查找最近修改的
/var/log/Xorg.*.log
文件:然后通过它查看我
ButtonMapping
的正在出现:Logitech Optical Tilt Wheel Mouse M-UAG120
出现和随后的ButtonMapping
。输入类配置
libinput (4) 手册页 InputClass 部分描述了所有选项,包括
MatchUSBID
选项。