나는 4개의 물리적 버튼이 있는 마우스(Kensington Slimblade Trackball)를 가지고 있습니다. 이를 ABCD라고 부르겠습니다. 그리고 3개의 축(마우스 X, Y 및 스크롤 휠)이 있습니다.
버튼 A와 B는 기본적으로 홈 버튼(버튼 1) 및 마우스 오른쪽 버튼 클릭 버튼(버튼 3)으로 작동합니다. A + B를 동시에 누르면 가운데 클릭(버튼 2)이 생성되는데, 이 역시 훌륭합니다.
이제 내 목적에 맞게 버튼 C와 D를 매핑하고 싶지만A+B 시뮬레이션과 별도로 버튼 C를 매핑하는 방법을 찾을 수 없습니다.
기본 버튼 매핑을 사용하여 다음 매핑을 얻습니다.
physical buttons: A C B D
xinput button-map: 1 2 3 4 5 6 7 8 9 10 11 12
버튼 C를 8에 매핑하고 D를 9에 매핑하려고 하면 xinput set-button-map
A+B를 누르면 버튼 8에도 매핑됩니다!
physical buttons: A C B D
xinput button-map: 1 8 3 0 0 0 0 9
^
A+B emulation becomes 8 too!
A+B를 버튼 2로 시뮬레이션하면서 버튼 C를 임의의 버튼 번호에 매핑하려면 어떻게 해야 합니까?
Xinput보다 낮은 수준에서 작업해야 합니까? 어떻게? 다른 Xinput 설정을 사용해야 합니까?
evtest
편집: 4개의 버튼에 대한 코드 는 다음과 같습니다 .
A:
type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
type 1 (EV_KEY), code 272 (BTN_LEFT), value 1
B:
type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002
type 1 (EV_KEY), code 273 (BTN_RIGHT), value 1
C:
type 4 (EV_MSC), code 4 (MSC_SCAN), value ff000001
type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1
D:
type 4 (EV_MSC), code 4 (MSC_SCAN), value ff000002
type 1 (EV_KEY), code 275 (BTN_SIDE), value 1
답변1
결국 Xorg evdev 드라이버를 패치하여 Emulate3Button 옵션을 추가했습니다. 이 옵션은 가운데 버튼 에뮬레이션에서 발생하는 버튼 번호를 구성합니다. (메일링 리스트에 패치를 제출했는데, 조만간 병합해야겠습니다.)
그런 다음 다음 구성을 추가했습니다.
Section "InputClass"
Identifier "SlimBlade Trackball"
Driver "evdev"
Option "ButtonMapping" "1 8 3 4 5 6 7 9 0 2"
Option "Emulate3Button" "10"
EndSection
이로 인해 가운데 버튼 에뮬레이션이 버튼 번호 10을 내보내고 버튼 C는 8, D는 9, 10은 2로 매핑됩니다. 바라보다.