xorg .conf ファイルは、指定されたデバイスだけでなく、すべてのデバイスのボタンも再マップします。

xorg .conf ファイルは、指定されたデバイスだけでなく、すべてのデバイスのボタンも再マップします。

側面にボタン付きのスタイラスがあります。ボタンは中央クリックイベントを送信し、右クリックイベントを送信したいです。

これは私の入力デバイスです。

$ 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

関連情報