마우스에서 앞으로 / 뒤로 단추를 비활성화하는 방법


36

내 마우스에는 불행한 기능이 있습니다. 왼쪽을 사용할 때 엄지 손가락이 너무 부드럽게 앉아있는 오른쪽에는 브러시가 너무 민감하여 클릭하는 소리가 매우 민감한 두 개의 버튼이 있습니다.

브라우저에서 누르면 한 시간 동안의 YouTube 비디오를 훨씬 더 힘들게 볼 수있는 성가신 앞으로 / 뒤로 버튼에 대해 이야기하고 있습니다. 비활성화 할 수있는 방법이 있습니까? 이것이 X에 의해 처리됩니까?


2
나는 당신 xinput
이을

이 질문과 답변은 키보드 (예 : Thinkpad 키보드)의 뒤로 / 앞으로 버튼에도 적용됩니다
Daniel S. Sterling

답변:


43

xev터미널 에서 프로그램 을 시작하십시오 . xev창 안에서 마우스를 움직이십시오 . 많은 것들이 스크롤되는 것을 보게 될 것입니다. 각 버튼을 차례로 누릅니다. 그런 다음 터미널 창으로 다시 전환하고 Ctrl+를 누릅니다 C. xev쇼는 각 입력 이벤트에 대한 설명, 특히 ButtonPressButtonRelease마우스 클릭을 위해 (당신은 또한 다수의 볼 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
질문과 답변 모두 감사합니다. 또한 xev출력 의 광기를 줄이려면 grep을 통해 출력하십시오 xev | grep -A2 ButtonPress. 이것은 모든 마우스 모션 이벤트, 포커스 이벤트 등을 남기고 ButtonPress여기에 필요한 모든 이벤트를 보여줍니다 .
Lambart

고맙습니다! 몇 초 만에 도움이되었습니다! :-)
Brian Haak

이것은 Wayland에서도 작동합니다!
Ray Foss

2

당신이 사용할 수있는 xev키에 매핑 버튼을 매핑하는 찾아 사용하지 않는 무언가에 매핑 ($ HOME / .xsessionrc에서) 아래의 코드를 사용 할 수 있습니다.

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

또는 GUI에서 Gnome / KDE 또는 다른 최신 데스크탑을 사용하여이를 수행 할 수 있어야합니다.

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


1

다른 답변과 크게 다르지 않은 간단한 명령입니다.

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 이상으로 유지해야 할 이유가 없습니다. 어떤 이유입니까?


0

xorg 설정 파일로 수행 가능

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

나노 /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

0

당신이하려는 경우 xmodmap(X에,하지 Weyland) 명령을하고 오류가 발생하는 BadValue (integer parameter out of range for operation)X_SetPointerMapping, 당신은 사용해야 할 수도 있습니다 xinput대신. xinput장치 ID를 얻기 위해 매개 변수없이 실행 한 다음 (포인터를 찾습니다)

xinput set-button-map [pointer-device-id] 1 2 3 4 5 0 0 0 0

필자의 경우, 마우스는 장치 # 4 였고 버튼 6과 7을 8과 9로 만들어 작업을 계속 진행할 수 있도록해야했습니다.

xinput set-button-map 4 1 2 3 4 5 8 9 8 9

( 마우스를 바꿨을 때 버튼 8과 9 8과 9 매핑했습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.