側面にボタンの付いたスタイラスペンがあります。このボタンはミドルクリックイベントを送信します。右クリックを送信します。
これが私の入力デバイスです:
$ 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(または/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ファイルがタッチパッドとスタイラスペンを再マップすることです。識別情報として「ipts1B96:005Eペン」を使用しても同じ問題が発生します。
「xinputset-button-map」を使用してxinputを直接使用すると、「ipts 1B96:005E Pen Pen(0)」1 3 2 4 5 6 7」は機能しますが、サスペンドなどのイベントに耐えることができません。
この構成を修正するのが最善でしたか?
xorg.confのマニュアルページ で説明されているように、InputClassスタンザ内で1つ以上のMatchパラメーターを使用して、そこで設定したオプション(この場合はButtonMapping)を目的の値に制限する必要があります。デバイス。それらのパラメータは次のとおりです。
注:MatchUSBIDパラメーターで発生する一般的な障害は、その中にある16進文字に使用される大文字と小文字が関係しています。 lsusb
コマンドからIDを取得すると、小文字のみで出力が生成されるため問題ありませんが、例が完全に示すように、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