it-swarm.cn

如何禁用鼠标中键单击粘贴?

有没有办法禁用鼠标按钮粘贴行为,默认情况下在gnome上?

我有一个敏感的鼠标滚轮,每当我滚动文本时,有时它会随机粘贴到文本中。当我向其他人发送文件时,我会失去相当多的可信度。

我已经看到 解决方案 通过将鼠标的中间按钮映射到不存在的鼠标按钮,但这意味着完全摆脱鼠标中键(即没有关闭标签,打开链接到新标签自动等)。我想保持鼠标中键处于活动状态,只需禁用粘贴行为即可。

当我用触摸板滚动文本时也会发生这种情况(不小心碰到两根手指,bam。)

因此,仅通过更换新鼠标就无法解决问题(实际上我认为使用触摸板比使用鼠标更常见)。

129
levesque

要解决问题,请查看 本指南我写的

或者,更直接地, 这里是补丁 禁用GTK中的“鼠标中键粘贴”功能。

15
Jelle Geerts

我使用gnome-Tweak-tool来禁用Ubuntu 16.04中的中间按钮粘贴。

  1. 安装它

    Sudo apt install gnome-Tweak-tool
    
  2. 通过在已安装的应用中搜索“调整工具”来运行它,或者只需在终端中输入gnome-Tweak-tool即可。

  3. 转到“键盘和鼠标” - >“中键单击粘贴”
  4. 关掉。

    screenshot

而已。

或仅使用CLI

gsettings set org.gnome.desktop.interface gtk-enable-primary-paste false

测试于16.04。

41
Sunny127

Jared Robinson给出了一个简单的解决方案 在我的机器上运行:

运行以下命令:

xmodmap -e "pointer = 1 25 3 4 5 6 7 8 9"

要保持此行为,请编辑〜/ .Xmodmap并添加

pointer = 1 25 3 4 5 6 7 8 9
32
Jay Goldfarb

我意识到这不是你想要的答案,但你可以在Firefox中关闭它(例如,如果你不介意其他地方的功能,但仍希望在Firefox中点击以在新标签中打开链接)

在about:config,set

middlemouse.contentLoadURL false
middlemouse.paste false

不是你问的,但是因为这个问题与一些地方有关,我希望有人认为这个答案很有用。

28
Ben

这当前是不可能的 - 但是,正如您所提到的,有一些方法可以禁用鼠标3按钮 - 或重新映射 - 这些都不是问题的根源。 X11主要选择。

虽然这不是一个解决方案,但希望这个解释能够明确为什么。在Ubuntu中有两个剪贴板在工作。一个,每个人都熟悉,freedesktop.org剪贴板(捕获 Ctrl+C 命令)第二个是剪贴板管理器,它在Ubuntu存在之前一直处于运行状态 - X11。 X服务器(X11)管理其他三个剪贴板:主要选择次要选择,和剪贴板。当您使用指针选择文本时,它将被复制到XServer中的缓冲区,即主选择,并通过鼠标3按钮等待粘贴。另外两个被设计为由其他应用程序用于在应用程序之间共享公共剪贴板的手段。在这种情况下,Ubuntu中的freedesktop.org剪贴板管理器已经为我们做了这个。

通过我的研究范围,我找不到禁用X11选择管理器的方法。没有可以禁用此功能的编译标志,应用程序或配置值。在每个应用程序的基础上有很多种方法(大多数这些应用程序是命令行的) - 但在全球范围内没有任何东西。

我意识到这不是一个理想的解决方案 - 但似乎是问题的真相。我可以集合的唯一相关解决方案实际上是一个hack,创建一个执行无限while循环的脚本,只需用空值替换Primary Selection。

首先安装xsel(用于操纵X选择的工具)Sudo apt-get install xsel

代码如下:

while(true)
do
    echo -n | xsel -n -i
    sleep 0.5
done

如果将其放在脚本中并将其添加到启动脚本中,这应该不是问题。

21
Marco Ceppi

不知何故,我最终在我的Ubuntu安装上没有任何xmodmap文件,所以我不得不找到一个不同的方法来解决这个问题。

看看xinput命令。

xinput list | grep -i mouse

其中列出了有关鼠标的信息。它显示我的鼠标是“戴尔高级USB光学鼠标”,还有我的“Macintosh鼠标按钮仿真”。有了这些信息,我可以

xinput get-button-map "Dell Premium USB Optical Mouse"

这给了我一个看起来像的列表

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

这是有用的,必需的知识。理论上,我的鼠标有18个按钮。每个按钮的默认操作与其按钮编号的名称相同。换句话说,按钮1执行动作1,按钮4执行动作4等。动作0表示“关闭”。

清单中的位置显示分配给该按钮的功能。如果我的按钮地图读了

1 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

这意味着按钮1(位置1)执行动作1(正常左按钮),按钮2(位置2)执行动作3(中间按钮),按钮3(位置3)执行动作2(右按钮)。

要制作左手鼠标,您需要的只是一个开始的按钮地图

3 2 1 4 5 .....

或者,在您的情况下,看起来您希望中间按钮与按钮1(左按钮)执行相同的操作,因此您的地图需要启动

1 1 3 ....

我重置了我的鼠标按钮映射:

xinput set-button-map "Dell Premium USB Optical Mouse" 1 1 3 5 6 6 7 8 9 10 11 12 13 14 15 16 17 18

在您的情况下,您可能具有不同数量的映射按钮,并且已经定义了一些特殊的按钮映射。 Likwely,你的鼠标也有不同的名字。首先,获取鼠标的“名称”。然后,使用get-button-map操作查找基本按钮图。最后,使用set-button-map选项,修改按钮2来执行操作1。

这不是永久性的改变。我将必要的代码添加到我的。bashrc,所以每次登录或打开终端时都会执行。

希望这可以帮助。

19
Wes Miller

我建议使用其中一种,这对我来说非常有用:

使用xbindkeys:每按一次中键,清除主剪贴板。至少在我的系统上,它会在粘贴发生之前被清除。详细信息:create xbindkeys-config:

xbindkeys --defaults > $HOME/.xbindkeysrc

粘贴以下新热键:

"xclip -i /dev/null"    
    b:2``

重新加载xbindkeys(例如killall xbindkeys; xbindkeys)。完成。

使用xdotool:在窗口焦点更改时清除剪贴板(应该适用于大多数windowmanagers)。详细信息:执行以下命令:

xdotool search --onlyvisible . behave %@ focus exec xclip -i /dev/null

请注意,使用此命令,您仍然可以在同一窗口中使用主剪贴板,或者在聚焦之前将middlemouse按到另一个窗口上(如果您没有“焦点跟随鼠标”,或者激活某事物)。

5
spawn

到目前为止,我发现的最好的方法是使用EasyStroke,它可以全局拦截中键单击并允许仅在某些应用程序中表现为中键。

您可以在EasyStroke中添加“组”,以便立即在多个应用程序中应用此拦截。我已经设置在我的一些文本编辑器中禁用中键单击,IDE和MATLAB,并按预期工作。

参考: http://ubuntuforums.org/showpost.php?p=11811126&postcount=25

完成EasyStroke操作方法: http://sourceforge.net/apps/trac/easystroke/wiki/Documentation

3
dbdq

这是我发现的最简单的解决方案,可以在不粘贴东西的情况下保持中间点击功能。

首先安装 sxhkdxsel

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

~button2
    echo -n | xsel -n -i
~control + c
    echo -n | xsel -n -i
~control + x
    echo -n | xsel -n -i

这基本上就是它。

现在启动sxhkd(或将其配置为在启动时启动)。现在,中间的鼠标将不再粘贴任何东西,否则将正常运行。 (只要你只使用ctrl + c和ctrl + x来复制那些东西,如果你用鼠标复制东西,它可以在它恢复正常之前粘贴一次。)

2
Cestarian

这个鼠标中键粘贴行为是X服务器的一个功能(和文本控制台上的gpm),据我所知,至少X.org无法配置为禁用它 - 所有你能做的就是改变映射像其他人已经建议的物理鼠标按钮。

您可以配置触摸板以避免不必要的中间点击,如果您更喜欢使用编辑器进行配置,请参阅gpointing-device-settings(默认情况下未安装)或synaptics联机帮助页。

2
Florian Diesch

下面的链接为我解决了问题。

https://wiki.ubuntu.com/X/Config/Input#Example:_Disabling_middle-mouse_button_paste_on_a_scrollwheel_mouse

上面链接提到的页面有一个部分,用于如何禁用滚轮上的中间鼠标粘贴,通过执行一些命令,用户可以获取鼠标按钮映射,也可以更改映射。如页面中所述,我通过执行命令禁用了中间按钮:

$ xinput set-button-map 4 1 0 3
2
Ahmad Bawaneh

如果您正在使用带有接触点/触摸板的联想X,我可能会给您一个部分答案。 synaptics鼠标按钮存在“已知”错误。如果您尝试USB鼠标并没有问题,但使用触摸板/接触点鼠标(内置到键盘中),您确实有随机响应,可以在您键入时删除文本行,那么这可能是我正在谈论的错误。

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1506817

如果这符合您的情况,请在该错误报告中将您的姓名添加到已识别此错误的人员列表中。也许如果我们有更多的人报告这个问题,它会得到修复。

1
Jont Allen

我尝试了xinput-redirection技巧,改变了中心鼠标“按钮”(实际上是一个轮子),所以它就像鼠标左键一样。它仍然可以像一个轮子一样工作,当我滚动过去时,它(显然)已经停止将东西粘贴到源代码中间的随机位置。

在我的情况下命令是

xinput set-button-map "PixArt USB Optical Mouse" 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16

但YMMV是通过鼠标模型。

1
Stephen Bloch

几个月前我遇到了同样的问题,我通过改变鼠标来解决它!但是,就像你一样,我很沮丧,简单的按钮映射问题无法通过软件修复优雅地解决。幸运的是,我在我的工作计算机上遇到了问题,我的雇主拥有各种备用鼠标控制器。这是一个免费修复!

我认为正确的鼠标硬件实现不应该在滚动时发送随机的中间点击。最近我发现这种行为即使在使用Windows时也会变得烦人!

现在我已经用适当的硬件解决方案修改了硬件错误(更换鼠标)我甚至开始上瘾“粘贴中间点击”行为!

快乐的linuxing!

诚恳,

1
Jonathan

南方周末:Ubuntu 14.04,Gnome倒退了。 HW:我有一台笔记本电脑,因此中间按钮实际上是笔记本电脑上的鼠标。解决方案:访问Ubuntu SW中心并下载Unity Tweak Tool。启动调整工具。在鼠标设置下,它已切换为打开/关闭中间单击插入。祝你有个愉快的一天。

1
user2712329

它不仅仅是一个gnome功能,我认为它几乎可以在任何地方运行,它也可以在控制台中运行,我认为它甚至可以在我的“Linux from Scratch”中运行。

所以它真的是一个基本功能,甚至可能在内核中的某个地方。

顺便说一句:它真的很有用,它不是像Ctrl + V这样的常规粘贴,用光标标记的所有东西都放在第二个存储空间中,而middleclick可以粘贴你最后标记的内容。

0
phiphi

对于Gnome应用程序,您可以在“键盘和鼠标”选项卡下使用gnome-tweaksgnome-Tweak-tool包的新名称),这是“中间点击粘贴”选项或直接编辑org.gnome.desktop.interface/gtk-enable-primary-paste Gnome选项。

对于KDE应用程序似乎有一个 等效解决方案

对于整个X(包括非Gnome应用程序),您可以安装 XMousePasteBlock 然后必须运行(由用户足够,不需要root)才能工作。这将完全禁用中间单击粘贴而不禁用其他中间单击功能。

0
Ilario Gelmetti

您可能想尝试模拟双键鼠标。使用双键鼠标,您可以同时单击两个鼠标按钮(而不是滚轮)进行粘贴。

安装gpointing-device-settings:

Sudo aptitude install gpointing-device-settings

http://live.gnome.org/GPointingDeviceSettings

或者,如果您不希望安装gpointing-device-settings,并且不受命令行选项的困扰,请参阅 https://wiki.ubuntu.com/X/Config/Input 关于此wiki页面有几个命令行/配置选项,选择你喜欢的那个。

0
Panther

对我有用的唯一答案是 https://unix.stackexchange.com/a/277488/288916 Radivarig(所有学分归他所有)。请注意,我必须进行一项更改才能使其正常工作:

安装xbindkeys:

Sudo apt-get install xbindkeys xsel xdotool

使用以下文本为xbindkeys ~/.xbindkeysrc创建配置文件:

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

使用加载配置文件

xbindkeys -p

将此行添加到〜。/ bashrc,以便xbindkeys始终在启动时加载。

这对我有用,但Radivarig建议使用该线

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

这最后一个对我不起作用,但如果版本不起作用,我建议尝试另一个。

经过很长一段时间看,这是我发现为我工作的唯一解决方案,通用关闭鼠标中键按钮,而不必完全禁用鼠标中键。


请注意,对于现有的upvoted答案,要么他们不回答问题,而是告诉您如何完全禁用鼠标中键,或者他们提供的解决方案仅适用于少数程序(仅在gedit和gnome终端中的Tweak-solution)和其他人很少)或者他们只是说这是不可能的。


spawn的答案具有相似的精神,也可能有效,在找到这个解决方案之前我没有看到它。

0
Kvothe

使用我在上面的帖子中学到的,这个bash单行程对我来说非常适合......

mouse_id=$(xinput list | grep 'Mouse' | awk '{print $9}' | sed 's/[^0-9]//g') && xinput set-button-map "$mouse_id" 1 0 3
0
Scott