Wayland에서 마우스 버튼 다시 매핑

Wayland에서 마우스 버튼 다시 매핑

저는 두 개의 Logitech 트랙볼, Wireless TrackMan FX 및 Marble Mouse를 가지고 있습니다. 둘 다 evtest: BTN_LEFT, BTN_RIGHT, BTN_MIDDLE에서 동일한 버튼 세트를 보고 BTN_SIDE하지만 BTN_EXTRA각각 물리적 버튼은 4개만 있습니다. TrackMan FX는 왼쪽, 오른쪽, 중앙, 측면 등 내가 원하는 정확한 이벤트를 보냅니다. 그런데 Marble Mouse가 BTN_EXTRA대신 전송하고 있어서 BTN_MIDDLE다시 매핑하고 싶습니다.

이 답변내가 원하는 것을 정확하게 다루는 것 같고 hwdb가 이 작업을 수행하기에 적합한 장소인 것 같습니다. 아쉽게도 이는 절반만 작동하며 왜 클릭으로 생성된 두 가지 다른 입력 이벤트와 관련이 있는지 모르겠습니다. evtestFX의 현장 히트 보고서는 다음과 같습니다(명확성을 위해 관련 없는 타임스탬프는 생략됨).

type 4 (EV_MSC), code 4 (MSC_SCAN), value 90003
type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1

MarbleMouse에서 수정되지 않은 클릭:

type 4 (EV_MSC), code 4 (MSC_SCAN), value 90005
type 1 (EV_KEY), code 276 (BTN_EXTRA), value 1

그래서 내 99-marblebutton.hwdb파일은 다음과 같습니다

evdev:input:b0003v046DpC408*
 ID_INPUT_KEY=1
 KEYBOARD_KEY_90005=btn_middle

결과 입력 이벤트가 수정됩니다.

type 4 (EV_MSC), code 4 (MSC_SCAN), value 90005
type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1

그래서 이벤트를 받았지만 BTN_MIDDLE관련 MSC_SCAN값이 여전히 잘못되어 중간 클릭이 어디에서도 인식되지 않기 때문에 영향을 미치는 것 같습니다. 실제로 유효한 입력 이벤트로 간주되지도 않는 것 같습니다. libinput debug-events다음을 사용하여 수정되지 않은 이벤트를 볼 수 있습니다.

event7   POINTER_BUTTON          +97.374s      BTN_EXTRA (276) pressed, seat count: 1

hwdb 구성을 완료한 후 동일한 버튼을 눌러도 아무 것도 보고되지 않아 wev이벤트가 표시되지 않습니다.

내가 시도한 다른 것에는 swaywm에서의 재매핑이 포함됩니다. 이는 작동하지만 특정 응용 프로그램에서만 작동합니다.

set $MOUSE "1133:50184:Logitech_USB_Trackball"
bindsym --input-device=$MOUSE --whole-window BTN_EXTRA seat - cursor press BTN_MIDDLE
bindsym --input-device=$MOUSE --whole-window --release BTN_EXTRA seat - cursor release BTN_MIDDLE

차단 도구EV_KEY및 이벤트를 "수정"하는 EV_MSC필터를 작성하겠습니다. 효과는 hwdb와 비슷합니다. 이벤트는 제대로 표시되지만 evtestlibinput에서는 이를 볼 수도 없습니다.

Solaar는 내 장치를 지원하지 않는 것 같고 입력 리매퍼를 사용하여 유용한 작업을 수행하기에는 너무 뚱뚱합니다.

관련 정보