禁用鼠标中键


17

因此,我尝试浏览了其他各种问题,但它们主要集中在禁用鼠标中键上。

基本上,我的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)]

执行此命令xinput list | grep 'id='并发布输出。
Helio

对于此鼠标,此鼠标有两个设备ID。运行xinput测试9后,我的鼠标中键的ID是2
Tom Hamilton Stubber

Answers:


24

执行这些命令:

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

说明(由@Yehosef捐赠 ):

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

下一个数字是您使用第一,第二和第三(即,左,中,右)鼠标按钮所做的操作。“ 1 0 3”告诉它,左按钮应该做左键单击(动作1),中间按钮应该什么都不做,右按钮应做右键单击(动作3)。如果要使中间按钮也单击左键,则可以使用“ 1 1 3”。如果要切换左右动作,可以使用“ 3 0 1”。有关更多信息,请参见https://wiki.ubuntu.com/X/Config/Input


非常感谢,尝试查找此内容非常令人沮丧。
汤姆·汉密尔顿·斯塔伯

1
谢谢!对于那些想知道的人-9/10是鼠标的输入ID,而1 0 3是第一个,第二个和第三个鼠标按钮的映射。如果你想所有的按钮做同样的事情,你可以使用111或者,如果你想切换左右键可以使用3 0 1
Yehosef

@Yehosef:谢谢!我没有解释OP运行命令时发生的情况。请创建一个新的详细答案,对我执行ping操作,然后我将进行投票。这是一个有趣的解释。
Helio

@Helio我没有不同的答案-对感兴趣的人更多的解释。也许您想编辑答案以包含此信息。我当时正在考虑编辑您的答案-但是当人们向我的答案中添加其他详细信息时,我通常不喜欢它-所以我避免了:)
Yehosef

2
那么我如何确定第一个数字。我跑步xinput list | grep 'id='寻找看起来最像鼠标/触摸板的东西吗?有什么明确的方法可以判断它是否正确?
Kvothe

2

以下说明基于Ubuntu Wiki上的信息 (向下滚动至标题“示例:在滚轮鼠标上禁用中间鼠标按钮粘贴”)。

首先,通过列出输入设备来确定指针的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对应于动作“ Middle Button Click”及其位置-对应于实际的中间按钮。

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

 xinput set-button-map 10 1 0

而已。


这个工作对我的触摸板上的联想Thinkpad T580与Ubuntu 18.04
拉塞尔英格兰

0

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;
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.