因此我尝试查看其他各种问题,但它们主要集中于禁用鼠标中键粘贴。
基本上,我的 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.diff
debian/patches/series
dpkg-buildpackage -us -uc -b
sudo dpkg -i ../libinput10_*.deb
- 重新启动 Xorg 或者重新启动机器
并使用xinput list
和xinput set-prop 11 "libinput Middle Emulation Enabled" 1
启用左+右模拟。11
是设备编号xinput list
,您可以将set-prop命令添加到~/.xstartup
。
或者,为了避免重建,使用 libinput .quirks 文件(未经测试):
[My Mouse]
MatchUdevType=mouse
AttrEventCodeDisable=BTN_MIDDLE;