스크롤 휠 수평 버튼 비활성화(뒤로/앞으로)

스크롤 휠 수평 버튼 비활성화(뒤로/앞으로)

최근에 Logitech M500을 구입했습니다.

버스 002 장치 004: ID 046d: c069 Logitech, Inc. M500 레이저 마우스

내가 인식할 수 있는 버튼은 9개입니다.

  • 왼쪽에 2개 있어요
  • ~에 대한
  • 휠 프레스
  • 휠이 위로 스크롤되고 휠이 아래로 스크롤됩니다.
  • 바퀴는 왼쪽으로 밀고, 바퀴는 오른쪽으로 밀고

마지막 두 개는 나를 미치게 만듭니다. 휠을 클릭하려고 할 때마다 실수로 왼쪽 휠 버튼을 클릭하여 Firefox가 마지막으로 방문한 페이지로 이동합니다. 이것은 매우 성가신 일입니다.

쉽지요? xev가 어떤 버튼을 표시하는지 찾아 비활성화하세요. 잘못된! xev는 "ButtonPress/ButtonRelease" 이벤트를 생성하지 않지만 대신 이상한 "LeaveNotify/EnterNotify/KeymapNotify" 쌍을 생성합니다.

LeaveNotify 이벤트, 시퀀스 번호 40, 합성 NO, 창 0x4a00001,
    루트 0x94, 하위 0x0, 시간 2344319, (104,86), 루트: (113,207),
    모드 NotifyGrab, 세부 정보 NotifyAncestor, same_screen YES,
    초점 예, 상태 0

EnterNotify 이벤트, 시퀀스 번호 40, 합성 NO, 창 0x4a00001,
    루트 0x94, 하위 0x0, 시간 2344319, (104,86), 루트: (113,207),
    모드 NotifyUngrab, 세부 정보 NotifyAncestor, same_screen YES,
    초점 예, 상태 0

KeymapNotify 이벤트, 시퀀스 번호 40, 합성 NO, 창 0x0,
    키: 4294967188 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   
           0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   

이제 4294967188(32비트 정수의 2의 보수 - 도움이 된다면 108)이 확실히 키코드가 될 것입니다. 그렇죠? 또 틀렸어! 수평 휠 왼쪽/오른쪽 버튼과 측면 후면/앞 버튼의 번호는 동일합니다.

이것은 내 장치 xinput 목록입니다.

로지텍 USB 레이저 마우스 ID=15 [슬레이브 포인터(2)]
    7개 수업에 등록하세요:
        다음에서 파생된 클래스: 15. 유형:XIButtonClass
        지원되는 버튼: 16
        버튼 라벨: "버튼 왼쪽" "버튼 중간" "버튼 오른쪽" "버튼 휠 위로" "버튼 휠 아래로" "버튼 수평 휠 왼쪽" "버튼 수평 휠 오른쪽" "버튼 측면" "버튼 추가" "버튼 앞으로" " 뒤로 버튼" "작업 버튼" "알 수 없는 버튼" "알 수 없는 버튼" "알 수 없는 버튼" "알 수 없는 버튼"
        버튼 상태:
        다음에서 파생된 클래스: 15. 유형: XIValuatorClass
        평가자 0의 세부정보:
          꼬리표:RelX
          범위: -1.000000 - -1.000000
          분해능: 1개 단위/미터
          모드: 상대
        다음에서 파생된 클래스: 15. 유형: XIValuatorClass
        평가자 1의 세부사항:
          꼬리표:Rel Y
          범위: -1.000000 - -1.000000
          분해능: 1개 단위/미터
          모드: 상대
        다음에서 파생된 클래스: 15. 유형: XIValuatorClass
        평가자 2의 세부사항:
          태그: 상대 수평 휠
          범위: -1.000000 - -1.000000
          분해능: 1개 단위/미터
          모드: 상대
        다음에서 파생된 클래스: 15. 유형: XIValuatorClass
        평가자 3의 세부사항:
          태그: 상대 수직 휠
          범위: -1.000000 - -1.000000
          분해능: 1개 단위/미터
          모드: 상대
        다음에서 파생된 클래스: 15. 유형: XIScrollClass
        롤링 평가자 2 정보
          유형: 2(가로)
          증분: 1.000000
          플래그: 0x0
        다음에서 파생된 클래스: 15. 유형: XIScrollClass
        롤링 평가자 3 정보
          유형: 1(수직)
          증분: -1.000000
          플래그: 0x2(선호)

버튼 매핑은 평소와 동일한 것으로 보입니다. 그렇다면 루프에서 "xinput query-state $DEVNO"를 호출하는 작은 스크립트를 작성하고 무서운 버튼을 누르면 어떻게 될까요? 당신은 그것을 짐작했다:

카테고리 2:
버튼 클래스
    버튼[1]=위
    버튼[2]=위
    버튼[3]=위
    버튼[4]=위
    버튼[5]=위
    버튼[6]=위
    버튼[7]=위
    버튼[8]=위
    버튼[9]=위
    버튼[10]=위
    버튼[11]=위
    버튼[12]=위
    버튼[13]=위
    버튼[14]=위
    버튼[15]=위
    버튼[16]=위
ValuatorClass 모드=상대적 친밀도=In
    평가자[0]=538
    평가자[1]=456
    평가자[2]=-2
    평가자[3]=-464

분명히 "아래"로 표시되어 있지만 항상 "위"로 표시됩니다. 올바른 ButtonPress 이벤트(예: 왼쪽/오른쪽)를 생성하는 마우스 버튼은 예상대로 광고를 '아래'로 표시합니다.

답변1

버튼 8과 9를 사용하여 휠을 왼쪽과 오른쪽으로 기울이는 Logitech M325가 있습니다. 이 스크립트를 사용하여 비활성화합니다.

#!/bin/bash

set -eu

MOUSE_ID=$(xinput --list | grep Logitech | sed -r 's/.*id=([0-9]+).*/\1/')

if [ -n "$MOUSE_ID" ]; then
    xinput set-button-map $MOUSE_ID 1 2 3 4 5 6 7 0 0
fi

답변2

간단히 말해서:질문xinput set-prop <deviceId> "libinput Horizontal Scroll Enabled" 0

출력 <deviceId>에서 값을 얻을 수 있습니다 .xinput -list

나는 Bluetooth Logitech M555b 마우스를 가지고 있는데, 여러 번 넘어졌는데(내 잘못), 마지막으로 넘어졌을 때 간헐적으로 "마우스 오른쪽 버튼 스크롤" 소리가 나기 시작했습니다. 코딩하는 동안 코드가 계속 오른쪽으로 스크롤되는 것을 발견했습니다. 다른 용도(예: 인터넷 검색, 게임 등)에서는 문제가 전혀 표시되지 않습니다.

명령 을 사용하기 시작했지만 xev이러한 확산 중에 어떤 이벤트도 인식하지 못했습니다.

대신 명령에 따라 이러한 폭발이 여러 번 발생하는 것을 xinput --test <deviceId>보았습니다 motion a[2]=<bigNum>.

그런 다음 해당 명령을 사용하면 set to 1이라는 속성이 xinput --list-props <deviceId>표시됩니다. Horizontal Scroll Enabled상단에서 TL;DR 명령을 사용하여 0으로 설정한 다음 버스트가 중지됩니다(대신 끝에 값 1을 사용하여 다시 활성화할 수 있음). 0)순서).

그것이 다른 사람들에게 도움이 되기를 바랍니다.

관련 정보