측면에 버튼이 있는 스타일러스가 있습니다. 버튼은 가운데 클릭 이벤트를 보내고 오른쪽 클릭 이벤트를 보내길 원합니다.
이것은 내 입력 장치입니다.
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Surface Keyboard Mouse id=9 [slave pointer (2)]
⎜ ↳ Microsoft Surface Keyboard Consumer Control id=10 [slave pointer (2)]
⎜ ↳ Microsoft Surface Keyboard Touchpad id=11 [slave pointer (2)]
⎜ ↳ ipts 1B96:005E UNKNOWN id=12 [slave pointer (2)]
⎜ ↳ ipts 1B96:005E Touchscreen id=14 [slave pointer (2)]
⎜ ↳ ipts 1B96:005E Mouse id=15 [slave pointer (2)]
⎜ ↳ ipts 1B96:005E Pen Pen (0) id=17 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Video Bus id=6 [slave keyboard (3)]
↳ Surface Pro 3/4 Buttons id=7 [slave keyboard (3)]
↳ Microsoft Surface Keyboard Keyboard id=8 [slave keyboard (3)]
↳ ipts 1B96:005E Pen id=13 [slave keyboard (3)]
↳ Microsoft Surface Keyboard Consumer Control id=16 [slave keyboard (3)]
다음과 같이 /etc/X11/xorg.conf.d에 .conf 파일을 만들었습니다(또는 /usr/share/X11/xorg.conf.d에 .conf 파일을 만들었고 동일한 문제가 있었습니다).
Section "InputClass"
Identifier "ipts 1B96:005E Pen Pen (0)"
Option "ButtonMapping" "1 3 2 4 5 6 7"
EndSection
문제는 내 .conf 파일이 터치패드와 스타일러스를 다시 매핑한다는 것입니다. "ipts 1B96:005E Pen"을 식별자로 사용해도 동일한 문제가 있습니다.
xinput을 직접 사용하고 "xinput set-button-map "ipts 1B96:005E Pen Pen (0)" 1 3 2 4 5 6 7"이 작동하지만 중단 등에서 살아남을 수는 없습니다.
이 구성을 수정하는 가장 좋은 방법은 무엇입니까?
답변1
에서 언급했듯이xorg.conf 매뉴얼 페이지, 여기에서 설정한 옵션(이 경우 ButtonMapping)을 대상 장치로 제한하려면 InputClass 섹션에서 하나 이상의 Match 매개변수를 사용해야 합니다. 이러한 매개변수는 다음과 같습니다.
- 일치하는 제품
- 공급업체 일치
- 장치 경로 일치
- PnPID 일치
- USBID 일치
- 게임은 ...(이렇게 하려면 전체 장치 유형이 필요하며 부울 값만 허용됩니다. 아래 예를 참조하세요.)
참고: MatchUSBID 매개변수에서 발생하는 일반적인 장애물은 해당 매개변수 내에서 발견된 16진수 문자의 경우와 관련이 있습니다. 명령에서 ID를 얻으면 lsusb
소문자를 포함하는 출력만 생성하므로 괜찮습니다. 그러나 예제에서 완벽하게 설명된 것처럼 다른 명령(예: xinput
대문자로 16진수 문자열 출력)은 작동하지 않습니다. 위에 링크된 매뉴얼 페이지를 인용하면 다음과 같습니다.
ID는 ":"으로 구분된 소문자 16진수로 구성됩니다.
질문에 제공한 명령 출력에서 이러한 일치 조건을 사용하여 문제를 해결하기 위해 InputClass 섹션을 구성할 수 있습니다. 하지만 다른 하위 집합을 시도하고 궁극적으로 가장 작은 숫자를 사용하여 원하는 동작을 생성하는 것을 사용하는 것이 좋습니다. . 하위 집합 일치 항목(단순성을 위해, 그러나 더 중요한 것은 이식성을 위해).
Section "InputClass"
Identifier "Surface Pen"
MatchProduct "Pen Pen (0)"
MatchVendor "ipts"
MatchUSBID "1b96:005e"
MatchIsPointer "true"
Option "ButtonMapping" "1 3 2 4 5 6 7"
EndSection