如何关闭所有程序中的“鼠标中键粘贴”功能?

der*_*khh 81 xorg mouse

我不喜欢粘贴鼠标中键,因为我经常在 Eclipse 中得到无法编译的代码。如何关闭此功能(在所有程序中)?我正在运行 Fedora。

小智 66

该解决方案将在全球范围内工作并保留 Xorg 下的鼠标中键功能。

  1. 安装 xbindkeys xsel xdotool

  2. 把这个放在 ~/.xbindkeysrc

    "echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
    b:2 + Release
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新加载 xbindkeys -p

xbindkeys启动时运行,pkill xbindkeys停止。

  • 谢谢!!!我不敢相信唯一可行的解​​决方案竟然是 0 票已经整整 2 年了。 (9认同)
  • 通过单击并按住中间按钮滚动不再适用于此解决方案:/ (6认同)
  • @spiil 我试过这个解决方案,它达到了你想要的效果。我在文本字段中单击鼠标中键,但没有任何反应,但是在 Chromium、Firefox 和 Waterfox(我测试过的三个浏览器)中,中间单击链接并单击鼠标中键关闭选项卡。 (5认同)
  • 最后,一个在 Ubuntu Mate 17.10 上对我有用的解决方案。谢谢! (4认同)
  • 你是个传奇。我使用轨迹球上的中间按钮进行滚动,但粘贴功能让我的生活很痛苦。现在它又变成了全亮的颜色,谢谢! (3认同)
  • 为了让它工作,我必须删除“+ Release”。因此,如果人们在使用上述解决方案时遇到困难,请尝试一下。(也许这可以添加到答案中)。 (2认同)

小智 21

在 Fedora 24 中,您可以gnome-tweak-tool使用以下命令进行安装:

$ sudo dnf install gnome-tweak-tool
Run Code Online (Sandbox Code Playgroud)

打开gnome-tweak-tool并转到“键盘和鼠标”选项卡并禁用“中键粘贴”。

  • 这只会影响一些程序,例如 gedit、gnome-terminal 和其他一些程序。另请参阅 https://askubuntu.com/questions/4507/how-do-i-disable-middle-mouse-button-click-paste 上的评论。 (7认同)
  • 这也适用于 Ubuntu 16.04:sudo apt-get install gnome-tweak-tool (5认同)
  • 在 Fedora 33 中,虽然在调整工具中禁用,但在 google chrome 中仍然启用中键单击粘贴。 (2认同)

Sur*_*dar 19

滚轮鼠标在按下滚轮时支持中键单击事​​件。这是一个很棒的功能,但您可能会觉得它很烦人。幸运的是,它可以被禁用。

首先,您需要知道鼠标的 id,如下所示:

$ xinput list | grep 'id='
Run Code Online (Sandbox Code Playgroud)

打印出类似的东西

? Virtual core pointer                      id=2    [master pointer  (3)]
? Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
? PixArt Dell MS116 USB Optical Mouse       id=12   [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)]
  Video Bus                                 id=7    [slave  keyboard (3)]
  Power Button                              id=8    [slave  keyboard (3)]
  Sleep Button                              id=9    [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=10   [slave  keyboard (3)]
  Dell KB216 Wired Keyboard                 id=11   [slave  keyboard (3)]
  Eee PC WMI hotkeys                        id=13   [slave  keyboard (3)]
Run Code Online (Sandbox Code Playgroud)

我的戴尔 Usb 鼠标已在此处打印,其 id=12

所以,我可以查看我的鼠标按钮映射,如:

$ xinput get-button-map 12
Run Code Online (Sandbox Code Playgroud)

哪个打印

1 2 3 4 5 6 7 8 9 10 11 12
Run Code Online (Sandbox Code Playgroud)

这里只有前三个数字对我有意义。它们代表鼠标左键、中键和右键。

我可以通过将其设置为 0 来关闭鼠标中键:

$ xinput set-button-map 12 1 0 3
Run Code Online (Sandbox Code Playgroud)

或者我可以通过将鼠标中键设置为 1 来将鼠标中键变成鼠标左键:

$ xinput set-button-map 12 1 1 3
Run Code Online (Sandbox Code Playgroud)

参考 链接https://wiki.ubuntu.com/X/Config/Input

它对我有用(kubuntu 18.04 LTS)

  • 这会杀死中键单击,而不是中键单击粘贴。 (4认同)
  • 这比上面任何以“下载 XX”开头的都要好。我遇到的唯一问题是,对于“xinput set-button-map 12 1 0 3”,您设置了所有按钮(在本例中,“xinput set-button-map 12 1 0 3 4 5 6 7 8 9”为 1 - 12 10 11 12`) (3认同)

Gil*_*il' 12

中间按钮粘贴是一个 Unix 用户界面标准,比如让左键选择或激活,而右键执行其他操作(例如扩展、切换、启动菜单等)。您会发现它绑定到大多数 unix 应用程序中的粘贴。

如果您的问题是当您将手指放在滚轮上时鼠标过于敏感,我建议您购买更好的鼠标。有很多便宜的像样的老鼠。

您可以将鼠标按钮 2 重新分配给不同的编号。应用程序将鼠标左键、中键和右键分别标识为按钮 1、2 和 3。将此代码放在 X 会话开始时执行的脚本中(如何执行取决于您的桌面环境)。

echo 'pointer = 1 6 3 4 5' | xmodmap -
Run Code Online (Sandbox Code Playgroud)

  • 我打赌 OP 并不关心它是否是标准的(我知道我不关心)。没关系。鼠标按钮操作应该更容易定制。 (7认同)

fla*_*006 10

编辑:我刚刚发现我发布的解决方案存在问题:在某些程序中(gitk至少不确定它有多常见)这将阻止文本选择工作。因此,请尝试一下,但如果您在经常使用的程序中选择文本时遇到问题,那么解决方案就是停止使用它。

安装xsel,然后运行以下 shell 脚本:

#!/bin/sh
while true; do
    xsel -fin </dev/null
done
Run Code Online (Sandbox Code Playgroud)

只要此脚本正在运行(您可以将其设置为在登录时运行),鼠标中键就不会粘贴到任何应用程序中。所以从技术上讲它仍然会粘贴,但总是没有什么可粘贴的。

它的工作方式是运行xsel并复制 ( -i) 的内容/dev/null,而不分叉到后台 ( -n),并在缓冲区中实际保留该空字符串,而不是仅仅清除它并退出 ( -f)。每次退出时,它都会xsel使用相同的选项再次调用。由于xsel它将继续运行,直到另一个程序通过复制其他内容来“解除其职责”,因此它不会不断创建新进程,而是保持单个进程精确运行,直到再次需要它。(除非您有多个正在运行的脚本实例,但没有必要这样做。)

也不会,这不会干扰常规复制/粘贴,因为中键单击粘贴使用单独的剪贴板。


Ces*_*ian 7

如果您想保持中间点击功能(例如,单击以在新标签中打开链接)而不粘贴内容,您可以执行以下操作。

首先安装sxhkdxsel

然后像这样配置~/.config/sxhkd/sxhkdrc

~button2
    echo -n | xsel -n -i
~control + c
    echo -n | xsel -n -i
~control + shift + c
    echo -n | xsel -n -i
~control + x
    echo -n | xsel -n -i
Run Code Online (Sandbox Code Playgroud)

基本上就是这样。

现在启动 sxhkd(或将其配置为在启动时启动)。现在,鼠标中键将不再粘贴任何内容,但会正常工作。


wno*_*ise 1

这是许多程序都遵守的通用约定。没有全局方法可以将其关闭,您必须逐个程序进行关闭。

编辑:(正如 Gilles 所说,禁用鼠标按钮 2。但有些程序确实对鼠标按钮 2 有其他用途,所以我不推荐这样做。)