我的鼠标有一个不幸的功能。左侧,右侧是使用时我的拇指非常平稳地坐着的地方,有两个按钮非常敏感,仅用刷子就能使它们单击。
我说的当然是令人讨厌的前进/后退按钮,如果在浏览器中按下该按钮,可能会使观看一小时的youtube视频变得更加困难。我有办法禁用它们吗?X会处理吗?
我的鼠标有一个不幸的功能。左侧,右侧是使用时我的拇指非常平稳地坐着的地方,有两个按钮非常敏感,仅用刷子就能使它们单击。
我说的当然是令人讨厌的前进/后退按钮,如果在浏览器中按下该按钮,可能会使观看一小时的youtube视频变得更加困难。我有办法禁用它们吗?X会处理吗?
Answers:
xev
在终端中启动程序。在xev
窗口内移动鼠标;您会看到很多东西滚动。依次按下每个按钮。然后切换回终端窗口,然后按Ctrl+ C。xev
表示输入事件的描述,尤其是ButtonPress
和ButtonRelease
鼠标点击(你也看到了一些MotionNotify
鼠标移动和其他活动)。
您的前进和后退按钮可能已映射到鼠标按钮,可能是按钮8和9:
ButtonPress event, serial 29, synthetic NO, window 0x2e00001,
root 0x105, subw 0x0, time 2889100159, (166,67), root:(1769,98),
state 0x0, button 8, same_screen YES
在这种情况下,请尽可能将这些按钮重新映射到浏览器中的其他操作。或者,您可以将按钮重新映射到您的浏览器不响应的不同按钮编号,或者在系统级别完全禁用按钮。为此,请将这些行放在名为的文件中~/.Xmodmap
:
! Remap button 8 to 10 and disable button 9.
pointer = 1 2 3 4 5 6 7 10 0
使用命令对其进行测试xmodmap ~/.Xmodmap
。大多数桌面环境和窗口管理器在您登录时都会自动运行此命令。如果没有,请安排它在X开始时运行。
当您按下以下按钮时,鼠标还可能发送键盘事件:
KeyPress event, serial 32, synthetic NO, window 0x2e00001,
root 0x105, subw 0x0, time 2889100963, (957,357), root:(2560,388),
state 0x0, keycode 166 (keysym 0x1008ff26, XF86Back), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
在这种情况下,请将以下行放入~/.Xmodmap
:
keycode 166 = NoSymbol
keycode 167 = NoSymbol
xev
输出,只是管它通过grep的:xev | grep -A2 ButtonPress
; 这将保留所有鼠标移动事件,焦点事件等,仅显示ButtonPress
事件,这就是您所需要的。
您可以xev
用来查找按钮映射到哪个键,并使用下面的代码(在$ HOME / .xsessionrc中)将其映射到您不使用的对象。
xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'
另外,您应该能够在使用Gnome / KDE或任何其他现代台式机的GUI中进行此操作。
还有一种选择是修改xorg.conf来删除按钮定义。
只是一个快速的命令来修复它,与其他答案并没有什么不同:
xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0" #the fix
测试
xmodmap -pp # check the changes
xterm -e xev # test the nullified buttons
# to restore in case you are going to play some game that uses them
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9 10 11 12 13"
您可以将修复程序cmd放在启动应用程序中。
最好是使用xdotool检查活动窗口是否是您的浏览器中的任何一个,并按需调用xmodmap以禁用/启用'm,但这将需要一些脚本:>
我没有理由将按钮保持在7以上,是什么原因?
可以用xorg配置文件完成
这是一个禁用水平滚动的示例(保存新文件并重新启动)
纳米/etc/X11/xorg.conf.d/40-libinput-mouse-left-right.conf
Section "InputClass"
Identifier "Logitech catchall"
MatchIsPointer "on"
Driver "libinput"
Option "HorizontalScrolling" "false"
EndSection
其他有用的命令
xinput list
xinput list-props 15
现在对于这个问题,可以使用xorg配置文件来重新映射按钮,这里是一个示例
Section "InputClass"
# ...
Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
# ...
EndSection
如果你想在xmodmap
命令(在X,不韦兰),你所得到的错误BadValue (integer parameter out of range for operation)
中X_SetPointerMapping
,您可能需要使用xinput
来代替。xinput
不带参数运行以获取设备ID(为指针查找一个),然后运行
xinput set-button-map [pointer-device-id] 1 2 3 4 5 0 0 0 0
就我而言,我的鼠标是设备#4,我需要将按钮6和7分别设置为8和9才能向前和向后工作,所以我使用了
xinput set-button-map 4 1 2 3 4 5 8 9 8 9
(如果我换了鼠标,我还把按钮8和9 映射到了8和9。)
xinput
,但我不知道详细信息……