마우스의 앞으로/뒤로 버튼을 비활성화하는 방법

마우스의 앞으로/뒤로 버튼을 비활성화하는 방법

내 마우스에는 불행한 특성이 있습니다. 제가 사용했을 때 엄지손가락이 살짝 닿는 왼쪽, 오른쪽에는 매우 민감한 버튼이 두 개 있는데, 브러시를 가볍게 누르는 것만으로도 딸깍 소리가 납니다.

물론, 브라우저에서 누르면 한 시간 분량의 YouTube 동영상을 시청하기가 더 어려워질 수 있는 성가신 앞으로/뒤로 버튼에 대해 이야기하고 있습니다. 비활성화할 수 있는 방법이 있나요? 이 문제는 X가 처리할 것인가?

답변1

xev터미널에서 프로그램을 시작합니다. 창 안쪽으로 마우스를 움직이면 xev스크롤되는 많은 내용을 볼 수 있습니다. 각 버튼을 차례로 누릅니다. 그런 다음 터미널 창으로 다시 전환하고 Ctrl+를 누릅니다 C. xev각 입력 이벤트에 대한 설명, 특히 마우스 클릭 이벤트에 대한 설명을 표시합니다 ButtonPress( 마우스 이동 및 기타 이벤트에 대한 ButtonRelease일부 설명도 볼 수 있음 ).MotionNotify

앞으로 및 뒤로 버튼은 아마도 마우스 버튼(아마도 8번과 9번 버튼)에 매핑되어 있을 것입니다.

ButtonPress event, serial 29, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100159, (166,67), root:(1769,98),
    state 0x0, button 8, same_screen YES

이 경우 가능하다면 이 버튼을 브라우저의 다른 작업에 다시 매핑하십시오. 또는 브라우저가 반응하지 않는 다른 버튼 번호로 버튼을 다시 매핑하거나 시스템 수준에서 버튼을 완전히 비활성화할 수 있습니다. 이렇게 하려면 다음 줄을 다음이라는 파일에 넣으세요 ~/.Xmodmap.

! Remap button 8 to 10 and disable button 9.
pointer = 1 2 3 4 5 6 7 10 0

명령을 사용하여 테스트하십시오 xmodmap ~/.Xmodmap. 대부분의 데스크탑 환경과 창 관리자는 로그인할 때 자동으로 이 명령을 실행합니다. 그렇지 않은 경우 X가 시작될 때 실행되도록 예약하십시오.

다음 버튼을 누르면 마우스가 키보드 이벤트를 보낼 수도 있습니다.

KeyPress event, serial 32, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100963, (957,357), root:(2560,388),
    state 0x0, keycode 166 (keysym 0x1008ff26, XF86Back), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

이 경우 다음과 같은 줄을 넣으십시오 ~/.Xmodmap.

keycode 166 = NoSymbol
keycode 167 = NoSymbol

답변2

문제를 해결하는 빠른 명령으로 다른 답변과 다르지 않습니다.

xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0" #the fix

시험

xmodmap -pp # check the changes
xterm -e xev # test the nullified buttons

# to restore in case you are going to play some game that uses them
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9 10 11 12 13"

시작 응용 프로그램에 복구 cmd를 넣을 수 있습니다.

더 나은 접근 방식은 xdotool을 사용하여 활성 창이 브라우저 중 하나인지 확인하고 xmodmap을 호출하여 필요에 따라 비활성화/활성화하는 것입니다. 그러나 여기에는 몇 가지 스크립팅이 필요합니다. >

7 이상의 버튼을 활성화할 이유가 없습니다. 이유가 있나요?

답변3

xev버튼이 매핑된 키를 찾고 아래 코드($HOME/.xsessionrc에 있음)를 사용하여 사용하지 않는 키에 매핑 할 수 있습니다 .

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

또는 Gnome/KDE 또는 기타 최신 데스크톱을 사용하여 GUI에서 이 작업을 수행할 수 있어야 합니다.

또 다른 옵션은 xorg.conf를 해킹하여 버튼 정의를 제거하는 것입니다.

답변4

이는 xorg 구성 파일을 사용하여 수행할 수 있습니다.

다음은 가로 스크롤을 비활성화하는 예입니다(새 파일을 저장하고 다시 시작).

nano/etc/X11/xorg.conf.d/40-libinput-mouse-left-right.conf

Section "InputClass"
        Identifier "Logitech catchall"
        MatchIsPointer  "on"
        Driver "libinput"
        Option "HorizontalScrolling" "false"
EndSection

기타 유용한 명령

xinput list
xinput list-props 15

이제 이 질문에 대해 xorg 구성 파일을 사용하여 버튼을 다시 매핑할 수 있습니다. 여기에 예가 있습니다.

Section "InputClass"
    # ...
    Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
    # ...
EndSection

관련 정보