我使用 Debian 9(又名“Stretch”)x86_64。
$ uname -a:
Linux mypc 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
试图从我的设备 Logitech MU-007 映射我的额外按钮:
$ lsusb | grep Logitech
Bus 001 Device 023: ID 046d:c069 Logitech, Inc. M-U0007 [Corded Mouse M500]
x输入设备:
$ xinput | grep Logitech
⎜ ↳ Logitech USB Laser Mouse id=10 [slave pointer (2)]
xinput test 10
测试鼠标左侧两个按钮的返回 8 和 9的额外按钮。
$ xinput -version
xinput version 1.6.2
尝试了一个简单的:
xinput set-button-map 10 8 2 3
或者
$ xmodmap -e "pointer = 9 2 3"
Warning: Only changing the first 3 of 12 buttons.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 116 (X_SetPointerMapping)
Value in failed request: 0x9
Serial number of failed request: 9
Current serial number in output stream:
左边的按钮根本不起作用,不能像左键一样选择。
我也想保留左键单击和额外的按钮作为左键单击。
知道为什么xinput
命令没有选择任何东西吗?
编辑
最后:
id=$(xinput list | grep -oP 'Logitech USB Laser Mouse.*id=\K\d+')
xinput set-button-map $id 1 2 3 4 5 6 7 1 1 10 11 12
您假设此命令会将第一个鼠标按钮的功能映射到物理按钮 #8:
这个假设是不正确的。实际上,该命令的工作方式完全相反:您实际上将物理按钮 #1 设置为作为“按钮 8”的另一个实例发送事件,这实际上使“第一个鼠标按钮”操作不可用。
如果你想让物理按钮 #8 充当额外的“第一个鼠标按钮”,你必须这样做:
默认映射是
1 2 3 4 5 6 7 8 9 10 11 12
,因此如果您希望物理按钮 #8 与第一个鼠标按钮相同,请将8
映射中的数字替换为另一个1
。如果要完全禁用特定按钮,请使用
0
与该物理按钮对应的插槽。请注意,按钮 4 和 5 通常对应于鼠标滚轮向上/向下操作。
我找到了更好的解决方案。我可以通过这种方式保留其他解决方案无法实现的数字键盘。
我有一个键盘键可以在鼠标键模式之间切换,这样,我使用 F1 作为左键单击,F2 作为中键单击,F3 作为右键单击。然后我可以用特殊键切换回键盘。
特殊键触发此脚本(检查您的 WM 键盘快捷键首选项)。
启用鼠标手势后,系统托盘中有此图标: