Xinput 버튼 매핑 및 가운데 버튼 에뮬레이션

Xinput 버튼 매핑 및 가운데 버튼 에뮬레이션

나는 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-mapA+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로 매핑됩니다. 바라보다.

관련 정보