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 - 따라서 XA_PRIMARY Paste와 같은 middleButton 작업이 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만 사용하는 한, 즉 마우스로 복사한 내용은 한 번만 붙여넣을 수 있습니다.)

관련 정보