我不喜欢粘贴鼠标中键,因为我经常在 Eclipse 中得到无法编译的代码。如何关闭此功能(在所有程序中)?我正在运行 Fedora。
小智 66
该解决方案将在全球范围内工作并保留 Xorg 下的鼠标中键功能。
安装 xbindkeys xsel xdotool
把这个放在 ~/.xbindkeysrc
"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
b:2 + Release
Run Code Online (Sandbox Code Playgroud)
重新加载 xbindkeys -p
xbindkeys启动时运行,pkill xbindkeys停止。
小智 21
在 Fedora 24 中,您可以gnome-tweak-tool使用以下命令进行安装:
$ sudo dnf install gnome-tweak-tool
Run Code Online (Sandbox Code Playgroud)
打开gnome-tweak-tool并转到“键盘和鼠标”选项卡并禁用“中键粘贴”。
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)
它对我有用(kubuntu 18.04 LTS)
Gil*_*il' 12
中间按钮粘贴是一个 Unix 用户界面标准,比如让左键选择或激活,而右键执行其他操作(例如扩展、切换、启动菜单等)。您会发现它绑定到大多数 unix 应用程序中的粘贴。
如果您的问题是当您将手指放在滚轮上时鼠标过于敏感,我建议您购买更好的鼠标。有很多便宜的像样的老鼠。
您可以将鼠标按钮 2 重新分配给不同的编号。应用程序将鼠标左键、中键和右键分别标识为按钮 1、2 和 3。将此代码放在 X 会话开始时执行的脚本中(如何执行取决于您的桌面环境)。
echo 'pointer = 1 6 3 4 5' | xmodmap -
Run Code Online (Sandbox Code Playgroud)
        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它将继续运行,直到另一个程序通过复制其他内容来“解除其职责”,因此它不会不断创建新进程,而是保持单个进程精确运行,直到再次需要它。(除非您有多个正在运行的脚本实例,但没有必要这样做。)
也不会,这不会干扰常规复制/粘贴,因为中键单击粘贴使用单独的剪贴板。
如果您想保持中间点击功能(例如,单击以在新标签中打开链接)而不粘贴内容,您可以执行以下操作。
首先安装sxhkd和xsel。
然后像这样配置~/.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(或将其配置为在启动时启动)。现在,鼠标中键将不再粘贴任何内容,但会正常工作。
这是许多程序都遵守的通用约定。没有全局方法可以将其关闭,您必须逐个程序进行关闭。
编辑:(正如 Gilles 所说,禁用鼠标按钮 2。但有些程序确实对鼠标按钮 2 有其他用途,所以我不推荐这样做。)