有没有办法禁用 gnome 上默认的鼠标中键粘贴行为?
我有一个敏感的鼠标滚轮,每当我滚动文本时,有时它会将内容随机粘贴到文本中。当我将一个文件发送给其他人并且粘贴了随机文本片段时,我会失去很多可信度。
我见过一个解决方案,将鼠标的中间按钮映射到一个不存在的鼠标按钮,但这意味着完全摆脱鼠标中间按钮(即不关闭标签,自动打开链接到新标签等) . 我想保持鼠标中键处于活动状态,只需禁用粘贴行为。
当我用触摸板滚动文本时也会发生这种情况(不小心碰到两个手指而没有移动,bam。)
因此,仅通过更换新鼠标并不能解决问题(事实上,我相信触摸板比鼠标更常发生这种情况)。
我使用 gnome-tweak-tool 在 Ubuntu 16.04 中禁用中间按钮粘贴。
安装它
通过在已安装的应用程序中搜索“调整工具”来运行它,或者只需
gnome-tweak-tool
在终端中输入。关掉。
而已。
或者只使用 CLI
在 16.04 测试。
我意识到这不是您想要的答案,但是您可以在 Firefox 中将其关闭(例如,如果您不介意其他地方的功能,但仍希望在 Firefox 中单击鼠标中键以在新选项卡中打开链接)
在 about:config 中,设置
不是你问的,但由于这个问题与几个地方有关,我希望有人觉得这个答案有用。
Jared Robinson 提供了一个适用于我的机器的简单解决方案:
运行以下命令:
要保持此行为,请编辑 ~/.Xmodmap 并添加
这目前是不可能的——不过,正如你所提到的,有一些方法可以禁用鼠标 3 按钮——或者重新映射它——这些方法都不是问题的根源。X11 主要选择。
虽然这不是一个解决方案,但希望这个解释能说明为什么。在 Ubuntu 中,有两个剪贴板在工作。一个是大家都熟悉的 freedesktop.org 剪贴板(捕获Ctrl+C命令) 第二个是一个剪贴板管理器,它在 Ubuntu 存在之前就一直在发挥作用 - X11。X 服务器 (X11) 管理其他三个剪贴板:Primary Selection、Secondary Selection和Clipboard. 当您使用指针选择文本时,它会被复制到 XServer 中的缓冲区,即主选择,并等待通过鼠标 3 按钮进行粘贴。另外两个旨在供其他应用程序使用,以在应用程序之间共享公共剪贴板。在这种情况下,Ubuntu 中的 freedesktop.org 剪贴板管理器已经为我们完成了这项工作。
根据我的研究范围,我找不到禁用 X11 选择管理器的方法。没有可以禁用此功能的编译标志、应用程序或配置值。在每个应用程序的基础上,有多种解决方法(这些应用程序中的大多数是命令行应用程序) - 但在全球范围内没有任何方法。
我意识到这不是一个理想的解决方案 - 但似乎是问题的真相。我可以召集的唯一相关解决方案实际上是一个 hack,创建一个执行无限 while 循环的脚本,该循环只是将 Primary Selection 替换为 null 值。
首次安装
xsel
(用于操作 X 选择的工具)sudo apt-get install xsel
代码如下:
如果您将其放在脚本中并将其添加到您的启动脚本中,这应该不是问题。
不知何故,我最终在我的 Ubuntu 安装上没有任何 xmodmap 文件,所以我不得不找到一种不同的方法来解决这个问题。
看一下xinput命令。
其中列出了有关您的鼠标的信息。它显示我的鼠标是“Dell Premium USB Optical Mouse”,而且我有“Macintosh mouse button emulation”。有了这些信息,我可以
这给了我一个看起来像的列表
这是有用的,必需的知识。我的鼠标理论上有 18 个按钮。每个按钮的默认操作与其按钮编号具有相同的名称。换句话说,按钮 1 执行操作 1,按钮 4 执行操作 4,等等。操作 0 表示“关闭”。
列表中的位置显示分配给该按钮的功能。所以如果我的按钮图读到
这意味着按钮 1(位置 1)执行操作 1(普通左按钮),按钮 2(位置 2)执行操作 3(中间按钮),按钮 3(位置 3)执行操作 2(右键)。
要制作左手鼠标,您只需要一个按钮映射即可
或者,在您的情况下,您似乎希望中间按钮与按钮 1(左按钮)执行相同的操作,因此您的地图需要启动
我会因此重置我的鼠标按钮映射:
在您的情况下,您可能有不同数量的映射按钮,并且已经定义了一些特殊的按钮映射。Likwely,您的鼠标也有不同的名称。首先,获取鼠标的“名称”。然后,使用get-button-map操作找到您的基本按钮映射。最后,使用set-button-map选项,修改按钮 2 以执行操作 1。
这不是永久性的变化。我将必要的代码添加到我的.bashrc中,这样每次我登录或打开终端时它都会执行。
希望这可以帮助。
有关问题的解决方案,请查看我写的本指南:
或者,更直接地说,这是在 GTK 中禁用“鼠标中键粘贴”功能的补丁:
对我有用的唯一答案是在https://unix.stackexchange.com/a/277488/288916 Radivarig 上给出的(所有学分归他所有)。请注意,我必须进行一项更改才能使其正常工作:
安装 xbindkeys:
使用以下文本为 xbindkeys 创建一个配置文件
~/.xbindkeysrc
:使用加载配置文件
添加此行,
~./bashrc
以便xbindkeys
始终在启动时加载。这对我有用,但 Radivarig 建议改用这条线
最后一个对我不起作用,但如果其中一个版本不起作用,我建议尝试另一个。
经过长时间的寻找,这是我发现对我有用的唯一解决方案,它可以普遍关闭鼠标中键粘贴按钮,而无需完全禁用鼠标中键。
请注意,对于现有的投票答案,要么他们不回答问题,而是告诉您如何完全禁用鼠标中键,或者他们提供仅适用于少数程序的解决方案(仅在 gedit 和gnome 终端和其他少数人)或者他们只是说这是不可能的。
spawn 的回答具有类似的精神,也可能有效,在我找到这个解决方案之前我没有看到它。
编辑:在我看来,以下答案是比我更好的解决方案:https ://unix.stackexchange.com/a/501445/72554
这是我发现的最简单的解决方案,可以在不粘贴内容的情况下保持中间点击功能。
首先安装sxhkd和xsel。
然后像这样配置~/.config/.sxhkd/sxhkdrc
基本上就是这样。
现在启动 sxhkd(或将其配置为在启动时启动)。现在,鼠标中键将不再粘贴任何内容,但会正常工作。(只要你只使用 ctrl+c 和 ctrl+x 来复制东西,如果你用鼠标复制东西,它可以在恢复正常之前粘贴一次。)
对于 Gnome 应用程序,您可以在“键盘和鼠标”选项卡下使用
gnome-tweaks
(gnome-tweak-tool
包的新名称)有“中键单击粘贴”选项或直接编辑 org.gnome.desktop.interface/gtk-enable-primary-paste Gnome 选项。对于 KDE 应用程序,似乎有一个等效的解决方案。
对于整个 X(包括非 Gnome 应用程序),您可以安装XMousePasteBlock,然后它必须运行(用户就足够了,不需要 root)才能工作。这将完全禁用中间点击粘贴,而不会禁用其他中间点击功能。
我建议使用其中一种,这对我来说最有效:
使用 xbindkeys:每当按下中间按钮时,清除主剪贴板。至少在我的系统上,在粘贴之前它被清除了。详细信息:创建 xbindkeys-config:
粘贴以下新热键:
重新加载 xbindkeys(例如 killall xbindkeys;xbindkeys)。完毕。
使用 xdotool:在窗口焦点更改时清除剪贴板(应该适用于大多数窗口管理器)。详细信息:执行以下命令:
请注意,使用此命令,您仍然可以在同一窗口中使用主剪贴板,或者在聚焦之前将鼠标中键按到另一个窗口上(如果您没有激活“焦点跟随鼠标”或其他功能)。