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

有没有办法禁用gnome默认情况下中间的鼠标中键粘贴行为?

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

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

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

因此,只需更换新鼠标就不会解决问题(实际上我认为使用触摸板比使用鼠标更常见)。

有关此问题的解决方案,请查看我写的指南: http : //www.assembla.com/spaces/slipstream/wiki/Disabling_GTK’s_middle_mouse_button_functionality

或者,更直接地,这是在GTK中禁用“鼠标中键粘贴”function的补丁: http : //subversion.assembla.com/svn/slipstream/patches/gtk_disable_middle_mouse_button_paste.patch

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 

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

在about:config,set

 middlemouse.contentLoadURL false middlemouse.paste false 

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

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

 sudo apt install gnome-tweak-tool 

在已安装的应用中搜索“调整工具”。 运行。

或者只需在终端中键入gnome-tweak-tool

转到“键盘和鼠标” – >“中键单击粘贴”关闭。

而已。 在Ubuntu 16.04上测试过

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

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

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

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

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

代码如下:

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

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

不知何故,我最终在我的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表示“关闭”。

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

 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中,以便每次登录或打开终端时执行。

希望这可以帮助。

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

使用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按到另一个窗口上(如果您没有“焦点跟随鼠标”,或者激活某事物)。

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

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

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

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

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

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

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

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 

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

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

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

快乐的linuxing!

诚恳,

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

我尝试了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是通过鼠标模型。

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

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

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

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

首先安装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来复制那些东西,如果你用鼠标复制东西,它可以在它恢复正常之前粘贴一次。)

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

所以它甚至可能是内核中的某个基本function。

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

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

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

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

安装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,但是重新设置为1.这样,它会转到中间 – “单击”到左键单击,并且不会影响您的滚动条…这是迄今为止我能想到的最好的。

注意:此信息来自Ubuntu论坛 ,而不是我自己的noggin! 🙂

如果您使用的是Chrome / Chromium,则可以安装一个扩展程序,以便您在大多数网页中滚动。

AutoScroll扩展链接:

https://chrome.google.com/webstore/detail/occjjkgifpmdgodlplnacmkejpdionan

你们可以简单快速地解决这个问题,就像我刚刚拧下鼠标一样,拿一把尖嘴钳,然后将鼠标中键按下来。 保证解决问题 – 假设你从不使用它 – 就像我一样。

你看看gpm了吗? 有关更多信息,请访问http://manpages.ubuntu.com/manpages/lucid/man8/gpm.8.html 。 可以通过sudo aptitude install gpm on lucid。 我没有在ubuntu包中看到disable-paste程序,但-A选项可能值得一试。