側面にボタン付きのスタイラスがあります。ボタンは中央クリックイベントを送信し、右クリックイベントを送信したいです。
これは私の入力デバイスです。
$ 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セクションで1つ以上の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