在 X11/Xorg 中禁用/修改中键单击粘贴

在 X11/Xorg 中禁用/修改中键单击粘贴

我使用 Slackware 13.1(内核 2.6)和 FVWM 作为我的桌面管理器。

我在编码时经常遇到问题,我的过度敏感的鼠标在使用鼠标滚轮滚动时记录了中键(鼠标滚轮)单击。

有没有办法修改快捷方式,以便中键单击不再使用 X11/Xorg/Xfree86 的内置剪贴板进行粘贴?我更希望将其重新映射到 +MiddleClick 或类似的东西。

我已经在论坛中进行了搜索,并找到了一些使用 XMODMAP 的建议,但到目前为止没有一个有效。

预先感谢大家的时间和帮助。

答案1

您可以修改 X 配置中的 ButtonMapping 选项:http://www.linuxquestions.org/questions/linux-newbie-8/disable-xorgs-highlight-to-copy-middle-click-to-paste-clipboard-647810/

选项“按钮映射”“1 1 3 4 5”

更新:在线程中:https://askubuntu.com/questions/4507/how-do-i-disable-middle-mouse-button-click-paste

gtk 的补丁已链接,这将禁用粘贴时的中间按钮: http://subversion.assembla.com/svn/slipstream/patches/gtk_disable_middle_mouse_button_paste.patch

不同图形库/应用程序中的中间按钮操作概述:http://os.livejournal.com/811721.html - 所以我可以假设 middleButton 操作作为 XA_PRIMARY Paste 没有在 Xorg/Xserver 本身中进行硬编码(在源中搜索一小时后)

这可能是 QT 中中间按钮的处理:

qt/src/gui/text/qtextcontrol.cpp

void QTextControlPrivate::mouseReleaseEvent (...
...
} else if (button == Qt::MidButton
           && (interactionFlags & Qt::TextEditable)
           && QApplication::clipboard()->supportsSelection()) {
    setCursorPosition(pos);
    const QMimeData *md = QApplication::clipboard()->mimeData(QClipboard::Selection);
    if (md)
        q->insertFromMimeData(md);

也可以在这里进行行编辑:qt/src/gui/widgets/qlineedit.cpp

void QLineEdit::mouseReleaseEvent(QMouseEvent* e)
...
    } else if (!d->readOnly && e->button() == Qt::MidButton) {
        d->deselect();
        insert(QApplication::clipboard()->text(QClipboard::Selection));

对于 qt3 兼容层可能在这里:qt/src/qt3support/text/q3textedit.cpp

void Q3TextEdit::contentsMouseReleaseEvent(QMouseEvent * e)
...
else if (e->button() == Qt::MidButton && !isReadOnly()) {
    // only do middle-click pasting on systems that have selections (ie. X11)
    if (QApplication::clipboard()->supportsSelection()) {

因此,您可以下载 QT 源代码并注释此 if 分支以禁用粘贴中键操作。

修补 QT 和 GTK 后,您应该只编译它们并安装系统的 gtk 和 QT(或放置在某个目录中,例如 /usr/local/lib 并将该目录放入 /etc/ld.so.conf 中)。然后,每个动态链接的应用程序都将使用修补的 gtk/QT 库,并且不会为按下中键粘贴任何内容。

如果应用程序是静态链接的,则应该使用修补的静态库重新编译它,或者将其重新编译为动态链接。

如果您需要修补更多图形工具包,只需说出工具包的名称,我将尝试找到中间按钮处理作为粘贴的源点。

答案2

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

首次安装sxhkd谢尔

然后配置./.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来复制东西,也就是说,如果你用鼠标复制东西,它就可以粘贴一次。)

相关内容