최근에 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)순서).
그것이 다른 사람들에게 도움이 되기를 바랍니다.