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


43

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


4
单击鼠标中键以插入选择内容基本上是X11工作方式的一部分;参见http://www.jwz.org/doc/x-cut-and-paste.html
短暂

1
@吉尔斯:在所有程序中。:)
derekhh 2011年

4
我还没有看到任何简单的方法来完全不对鼠标中键进行操作,也不会对普通鼠标剪贴板进行X破解或拧紧操作,因此,我建议的“解决方案”只是学习正确使用鼠标中键。能够在任何地方突出显示文本URL并通过在我的(FF)浏览器窗口中单击鼠标中键来访问它,这是非常方便的。
jw013

4
@ephemient“单击鼠标中键来进行选择基本上是X11运作方式的一部分”……早在我们使用Sun光电鼠标时,需要在中间按钮上施加约1磅的压力才能获得信号。如今,中间按钮位于发夹器上,而且还用作转盘,这种“基本原理”必须
去掉

3
我觉得禁用所需功能的能力是Linux的一个更基本的方面。
韦恩·布鲁斯

Answers:


24

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

安装 xbindkeys xsel xdotool

放在这里 ~/.xbindkeysrc

"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
b:2 + Release

重装 xbindkeys -p

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


7
谢谢!!!我简直无法相信唯一可行的解​​决方案是在2年内以0票获得通过。
Retr0id

4
最后,一个适用于我的Ubuntu Mate 17.10解决方案。谢谢!
德米特里·弗兰克

5
@spiil我尝试过此解决方案,它可以达到您想要的效果。我在文本字段中单击鼠标中键,但没有任何反应,但在链接中单击鼠标中键,然后单击中键关闭Chromium,Firefox和Waterfox(我测试的三种浏览器)中的选项卡。
user7214865

4
通过单击并按住中间按钮滚动不再适用于此解决方案:/
Marc.2377

2
你真是传奇 我将轨迹球上的中间按钮用于滚动目的,但是粘贴功能使我的生活很痛苦。现在,它又恢复了全亮的颜色,谢谢!
redsPL

16

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

$ sudo dnf install gnome-tweak-tool

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


4
这在Ubuntu 16.04中也可用:sudo apt-get install gnome-tweak-tool
Tyranin

1
这只会影响一些程序,例如gedit,gnome-terminal和其他一些程序。另请参见askubuntu.com/questions/4507/…上的评论。
科沃斯

11

粘贴中间按钮是Unix用户界面的标准,例如选择或激活左边的按钮,以及右边的按钮执行其他操作(例如扩展,切换,启动菜单等)。您会发现它必须粘贴到大多数UNIX应用程序中。

如果您的问题是将手指放在方向盘上时鼠标过于敏感,建议您使用更好的鼠标。有很多便宜的体面的老鼠。

您可以将鼠标按钮2重新分配给另一个数字。应用程序将鼠标左键,鼠标中键和鼠标右键分别标识为按钮1、2和3。将此代码放在X会话启动时执行的脚本中(如何执行取决于您的桌面环境)。

echo 'pointer = 1 6 3 4 5' | xmodmap -


@巴尔基·韦德 当然对我有用。因此,要找出为什么它对您不起作用,请提出一个新问题。请务必提及您拥有的X.org(或其他X服务器)版本,在哪个版本上运行该X.org,以及连接了哪些输入设备。
吉尔(Gilles)'所以

2
我敢打赌,OP不在乎它是否是标准的(我知道我不是)。没关系 鼠标按钮操作应更易于自定义。
Marc.2377

7

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

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

$ xinput list | grep 'id='

打印类似

⎡ 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)]

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

因此,我可以像下面这样查看我的鼠标按钮映射:

$ xinput get-button-map 12

哪个打印

1 2 3 4 5 6 7 8 9 10 11 12

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

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

$ xinput set-button-map 12 1 0 3

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

$ xinput set-button-map 12 1 1 3

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

它对我有用(kubuntu 18.04 LTS)


非常适合Slackware 14.2(KDE)中的触摸板。
Firelord

这比上面以“下载XX”开头的任何内容都要好。我唯一遇到的问题是为xinput set-button-map 12 1 0 3您设置了所有按钮(本例中为1-12 xinput set-button-map 12 1 0 3 4 5 6 7 8 9 10 11 12
瞎了

3

如果您要保持中键功能(例如单击以打开新选项卡中的链接)而不粘贴内容,可以执行以下操作。

首先安装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

基本上就是这样。

现在启动sxhkd(或将其配置为在启动时启动)。现在,鼠标中键将不再粘贴任何东西,但将正常运行。


这仍然允许您使用鼠标中键进行滚动。好的解决方案!对我来说,文件存放在~/.config/sxhkd/sxhkdrc
Atnas

1

这是许多程序都遵守的惯例。没有全局关闭它的方法,您必须逐个程序地将其关闭。

编辑:(缺少,正如吉尔斯说的那样,禁用鼠标按钮2。但是某些程序的确确实有鼠标按钮2的其他用途,所以我不建议这样做。)


1

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

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

#!/bin/sh
while true; do
    xsel -fin </dev/null
done

只要该脚本正在运行(您可以将其设置为登录时运行),鼠标中键就不会粘贴到任何应用程序中。因此,从技术上讲,它仍然会粘贴,但始终不会粘贴任何内容。

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

同样也不会,这不会影响常规的复制/粘贴,因为单击鼠标中键使用的是单独的剪贴板。


谢谢!我使用KDE,并且该解决方案是唯一适用于我的解决方案。
阿洛索

@Aloso不客气,请紧记顶部的警告。如果您发现自己无法在程序中选择文本,那么这很可能是罪魁祸首。
flarn2006

是的,我在Firefox的“保存文件”对话框中注意到了此问题。现在,我仅在编程时打开此脚本。
阿洛索

@Aloso好吧;很高兴它仍然对您
有用

0

这是我的剧本。您可能需要调整

#!/bin/bash 
clear
echo
echo
echo
echo -----Now fixing your scroll button --- -hold onto pants
echo
xinput --list|grep "Virtual core XTEST pointer"
echo ---------------------------------------------------------------------------------
echo


id=$(
xinput --list|grep "Virtual core XTEST pointer" |awk '{
        for(i=1; i<=NF; i++) {
                tmp=match($i, /id=[0-9]+/)
                if(tmp) {
                        print $i
                }
        }
}' $1 |  tr -d '[:alpha:]='
)

echo fixing $id:

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

echo
echo
xinput get-button-map $id
echo ---------------------------------------------------------------------------------
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.