내 마우스에는 불행한 기능이 있습니다. 왼쪽을 사용할 때 엄지 손가락이 너무 부드럽게 앉아있는 오른쪽에는 브러시가 너무 민감하여 클릭하는 소리가 매우 민감한 두 개의 버튼이 있습니다.
브라우저에서 누르면 한 시간 동안의 YouTube 비디오를 훨씬 더 힘들게 볼 수있는 성가신 앞으로 / 뒤로 버튼에 대해 이야기하고 있습니다. 비활성화 할 수있는 방법이 있습니까? 이것이 X에 의해 처리됩니까?
내 마우스에는 불행한 기능이 있습니다. 왼쪽을 사용할 때 엄지 손가락이 너무 부드럽게 앉아있는 오른쪽에는 브러시가 너무 민감하여 클릭하는 소리가 매우 민감한 두 개의 버튼이 있습니다.
브라우저에서 누르면 한 시간 동안의 YouTube 비디오를 훨씬 더 힘들게 볼 수있는 성가신 앞으로 / 뒤로 버튼에 대해 이야기하고 있습니다. 비활성화 할 수있는 방법이 있습니까? 이것이 X에 의해 처리됩니까?
답변:
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
xev
출력 의 광기를 줄이려면 grep을 통해 출력하십시오 xev | grep -A2 ButtonPress
. 이것은 모든 마우스 모션 이벤트, 포커스 이벤트 등을 남기고 ButtonPress
여기에 필요한 모든 이벤트를 보여줍니다 .
당신이 사용할 수있는 xev
키에 매핑 버튼을 매핑하는 찾아 사용하지 않는 무언가에 매핑 ($ HOME / .xsessionrc에서) 아래의 코드를 사용 할 수 있습니다.
xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'
또는 GUI에서 Gnome / KDE 또는 다른 최신 데스크탑을 사용하여이를 수행 할 수 있어야합니다.
또 다른 옵션은 xorg.conf를 해킹하여 버튼 정의를 제거하는 것입니다.
다른 답변과 크게 다르지 않은 간단한 명령입니다.
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 이상으로 유지해야 할 이유가 없습니다. 어떤 이유입니까?
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
당신이하려는 경우 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 로 매핑했습니다.)
xinput