로지텍 M535 블루투스 마우스를 구매했습니다. 틸팅 휠이 있지만 "뒤로" 및 "앞으로" 버튼에 매핑되어 있습니다. 가로 스크롤로 작동하게 하려면 다음 스크립트를 작성했습니다.
#! /bin/dash
MOUSE_ID=`xinput list | grep -o 'M535.*pointer' | sed 's/^.*id=\([0-9]*\)[\t].*$/\1/')`
xinput set-button-map $MOUSE_ID 1 2 3 4 5 8 9 6 7 10 11 12
안타깝게도 이런 식으로 스크롤 버튼이 반복되지 않습니다.
또한 마우스에는 ALT+TAB("가짜" 키보드를 통해)을 보내는 추가 버튼도 있습니다.
ignazio@ignazio-HP:~$ xinput | grep M535
⎜ ↳ Bluetooth Mouse M336/M337/M535 id=15 [slave pointer (2)]
↳ Bluetooth Mouse M336/M337/M535 id=16 [slave keyboard (3)]
ignazio@ignazio-HP:~$ xinput test 16
key press 64
key press 23
key release 23
key release 64
이 버튼을 다른 버튼에 어떻게 바인딩할 수 있나요?
사용하려고 했지만 xbindkeys
ALT+TAB을 가로채도록 할 수 없었습니다. 게다가 가능하더라도 마우스로 가짜 키보드만 가로채고 싶은데 xbindkeys
.
또한 비슷한 Logitech 마우스용 커널 모듈이 있다는 것도 알고 있습니다.https://github.com/CzBiX/logitech-m560), 하지만 이는 지원되지 않습니다.
답변1
키 매퍼 GUI 소프트웨어를 사용하여 가로 스크롤 문제를 해결한 다음 왼쪽 휠 버튼(BUTTON SIDE)을 휠(오른쪽,1)에 매핑했습니다. 오른쪽 휠 버튼을 휠(왼쪽,1)로 설정합니다.
답변2
hwdb를 사용하여 해결했습니다. 내가 만들었다 /etc/udev/hwdb.d/10-m535.hwdb
:
evdev:input:b0005v046DpB016e1203-*
KEYBOARD_KEY_700e2=reserved
KEYBOARD_KEY_7002b=leftmeta
그 다음에:
sudo udevadm hwdb --update
sudo udevadm trigger
그리고 마우스를 껐다가 켜세요. 이제 작동합니다. 메타(Windows) 키를 바인딩했습니다.
이 솔루션이 필요하지 않도록 만들 수 있을 것 같습니다 xinput set-button-map
(그리고 버튼이 반복되지 않는 문제를 해결할 수도 있습니다)... 하지만 버튼 6과 7에 대한 키코드를 찾을 수 없습니다(왼쪽 및 오른쪽으로 스크롤). 스캔코드를 찾았습니다:
evdev:input:b0005v046DpB016e1203-*
KEYBOARD_KEY_700e2=reserved
KEYBOARD_KEY_7002b=leftmeta
KEYBOARD_KEY_90004=??? (scroll left - mouse button 6)
KEYBOARD_KEY_90005=??? (scroll right - mouse button 7)
BTN_SIDE
, BTN_EXTRA
, BTN_BACK
, BTN_FORWARD
, BTN_6
, BTN_7
(에 정의된 대로 ) 에 대한 십진수 값을 시도했지만 /usr/include/linux/input-event-codes.h
운이 없었습니다.
기본적으로 가로 스크롤이 작동하는 다른 마우스에는 다음과 같은 evtest
출력이 있습니다.
Event: time 1522616506.145899, -------------- SYN_REPORT ------------
Event: time 1522616507.105926, type 2 (EV_REL), code 6 (REL_HWHEEL), value 1
Event: time 1522616507.105926, -------------- SYN_REPORT ------------
Event: time 1522616508.191962, type 2 (EV_REL), code 6 (REL_HWHEEL), value -1
EV_REL
hwdb 파일의 키코드 값으로 이벤트를 지정할 수 있나요 ?