禁用鼠标中键

禁用鼠标中键

因此我尝试查看其他各种问题,但它们主要集中于禁用鼠标中键粘贴。

基本上,我的 Logitech G500s 上的鼠标中键坏了,它一直在随机“点击”,所以它搞砸了任何工作的机会。

有什么方法可以禁用它吗?或者将其映射为空?

谢谢,如果这是重复的,请见谅。

xinput list输出:

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜   ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜   ↳ Turtle Beach Turtle Beach PX3 (XBOX) id=8 [slave pointer (2)]
⎜   ↳ Logitech G500s Laser Gaming Mouse id=9 [slave pointer (2)]
⎜   ↳ Logitech G500s Laser Gaming Mouse id=10 [slave pointer (2)]
⎜   ↳ Razer Razer DeathStalker id=12 [slave pointer (2)]
⎜   ↳ Razer Razer DeathStalker id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
    ↳ Power Button id=6 [slave keyboard (3)]
    ↳ Power Button id=7 [slave keyboard (3)]
    ↳ Razer Razer DeathStalker id=11 [slave keyboard (3)]

答案1

执行这些命令:

xinput set-button-map 9 1 0 3
xinput set-button-map 10 1 0 3

解释(由@Yehosef):

第一个数字是指针的标识符(通常只有一个,在这种情况下有两个,9 和 10)。

接下来的数字是你用第一、第二和第三(即左、中、右)鼠标按钮执行的操作。1 0 3告诉它左键应该执行左键单击(操作 1),中键不执行任何操作,右键应该执行右键单击(操作 3)。如果你想让中键也执行左键单击,你可以使用1 1 3。如果你想切换左右操作,你可以使用3 0 1。请参阅https://wiki.ubuntu.com/X/Config/Input了解更多信息。

答案2

以下说明基于以下信息Ubuntu 维基 (向下滚动到标题“示例:禁用滚轮鼠标上的中键粘贴功能”)。

首先,通过列出输入设备确定指针的 id:

xinput list | grep 'id='

找到包含指针名称的行,在“id=”后面还应该有设备的 id。例如,此设备的 id 为 10:

Lenovo ThinkPad Compact USB Keyboard with TrackPoint    id=10   [slave  pointer  (2)]

接下来,获取该设备的当前按钮映射(我将使用我的设备的 ID,即 10):

xinput get-button-map 10

输出:

1 2 3 4 5 6 7 8 9

这是指针按钮到动作的映射,其中数字代表动作代码,位置代表按钮。

我们对第二张地图感兴趣 - 数字 2 对应于操作“中间按钮单击”,它的位置对应于实际的中间按钮。

要禁用中间按钮触发任何操作,我会使用xinput set-button-map带有设备 ID 和更新地图的命令(新操作代码为 0 - 无操作)。无需放置整个地图 - 直到感兴趣的按钮足够为止的地图(其余的将不会更新):

 xinput set-button-map 10 1 0

就是这样。

答案3

这是我在 Ubuntu 20.04(默认使用 Wayland)上所做的,禁用我的中间按钮或重新映射我的中间按钮。

要查找我的设备 ID:

$ xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ xwayland-pointer:17                       id=6    [slave  pointer  (2)]
⎜   ↳ xwayland-relative-pointer:17              id=7    [slave  pointer  (2)]
⎜   ↳ xwayland-touch:17                         id=9    [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ xwayland-keyboard:17                      id=8    [slave  keyboard (3)]

我必须进行几次测试才能找到正确的 ID。对我来说,它是 6。

查看当前按钮图:

$ xinput get-button-map 6
1 2 3 4 5 6 7 8 9 10 

要禁用中间按钮:

$ xinput set-button-map 6 1 0 3 4 5 6 7 8 9 10

要将中间按钮重新映射到左键单击:

$ xinput set-button-map 6 1 1 3 4 5 6 7 8 9 10

为了在启动时运行,创建一个文件并确保它是可执行的(chmod a + x):

#!/bin/bash
xinput set-button-map 6 1 1 3 4 5 6 7 8 9 10

Ubuntu 和其他基于 GNOME 的发行版都带有应用程序简称为“启动应用程序”。它可用于管理在系统重启或登录时运行的应用程序和脚本。因此,只需搜索它,打开它并添加您刚刚创建的文件即可。

答案4

set-button-map禁用中键单击功能。要使用左键+右键单击模拟中键单击(以便您可以使用鼠标粘贴和在选项卡中打开等)但禁用鼠标滚轮单击,您可以修补 libinput:

--- a/src/evdev.c   2019-09-22 17:15:13.498880044 +0300
+++ a/src/evdev.c   2019-09-22 17:15:18.062860221 +0300
@@ -1861,6 +1861,8 @@
    /* Logitech Marble Mouse claims to have a middle button */
    if (device->model_flags & EVDEV_MODEL_LOGITECH_MARBLE_MOUSE)
        libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
+
+   libevdev_disable_event_code(device->evdev, EV_KEY, BTN_MIDDLE);
 }

 static void
  • mkdir deb; cd deb; apt source libinput; sudo apt build-dep libinput
  • 将上述补丁另存为libinput-1.XX.Y/debian/patches/middle.diff
  • 添加middle.diffdebian/patches/series
  • dpkg-buildpackage -us -uc -b
  • sudo dpkg -i ../libinput10_*.deb
  • 重新启动 Xorg 或者重新启动机器

并使用xinput listxinput set-prop 11 "libinput Middle Emulation Enabled" 1启用左+右模拟。11是设备编号xinput list,您可以将set-prop命令添加到~/.xstartup

或者,为了避免重建,使用 libinput .quirks 文件(未经测试):

[My Mouse]
MatchUdevType=mouse
AttrEventCodeDisable=BTN_MIDDLE;

相关内容