如何禁用鼠标上的前进/后退按钮


36

我的鼠标有一个不幸的功能。左侧,右侧是使用时我的拇指非常平稳地坐着的地方,有两个按钮非常敏感,仅用刷子就能使它们单击。

我说的当然是令人讨厌的前进/后退按钮,如果在浏览器中按下该按钮,可能会使观看一小时的youtube视频变得更加困难。我有办法禁用它们吗?X会处理吗?


2
我几乎可以确定您可以使用关闭它xinput,但我不知道详细信息……
pbm 2011年

这个问题和答案也适用于键盘上的后退/前进按钮,例如Thinkpad键盘上的
Daniel S. Sterling

Answers:


43

xev在终端中启动程序。在xev窗口内移动鼠标;您会看到很多东西滚动。依次按下每个按钮。然后切换回终端窗口,然后按Ctrl+ Cxev表示输入事件的描述,尤其是ButtonPressButtonRelease鼠标点击(你也看到了一些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

2
谢谢您的提问和回答。顺便提及,以减少的精神错乱xev输出,只是管它通过grep的:xev | grep -A2 ButtonPress; 这将保留所有鼠标移动事件,焦点事件等,仅显示ButtonPress事件,这就是您所需要的。
Lambart 2014年

谢谢!它在几秒钟内帮助了!:-)
Brian Haak '18

这在Wayland也适用!
Ray Foss

2

您可以xev用来查找按钮映射到哪个键,并使用下面的代码(在$ HOME / .xsessionrc中)将其映射到您不使用的对象。

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

另外,您应该能够在使用Gnome / KDE或任何其他现代台式机的GUI中进行此操作。

还有一种选择是修改xorg.conf来删除按钮定义。


1

只是一个快速的命令来修复它,与其他答案并没有什么不同:

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以上,是什么原因?


0

可以用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

0

如果你想在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。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.