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