Xinputボタンマッピングと中央ボタンエミュレーション

Xinputボタンマッピングと中央ボタンエミュレーション

私は4つの物理ボタンを持つマウス(Kensington Slimblade Trackball)を持っています。これをABCDと呼びます。そして3つの軸(マウスX、Y、スクロールホイール)があります。

ボタンAとBはデフォルトでホームボタン(ボタン1)と右クリックボタン(ボタン3)で動作します。 A + Bを同時に押すと中央クリック(ボタン2)が生成されますが、これも素晴らしいです。

今私の目的に合わせてボタンCとDをマッピングしたいのですがA + Bシミュレーションとは別に、ボタンCをマッピングする方法が見つかりません。

デフォルトのボタンマッピングを使用して、次のマッピングを取得します。

physical buttons:   A C B         D
xinput button-map:  1 2 3 4 5 6 7 8 9 10 11 12 

ボタンCを8にマップし、Dを9にマップしようとすると、xinput set-button-mapA + Bを押すとボタン8にもマップされます。

physical buttons:   A C B         D
xinput button-map:  1 8 3 0 0 0 0 9
                      ^
                      A+B emulation becomes 8 too!

A + Bをボタン2にシミュレートしながら、ボタンCを任意のボタン番号にマッピングするにはどうすればよいですか?

Xinputより低いレベルで作業する必要がありますか?どのように?別のXinput設定を使用する必要がありますか?

evtest編集:4つのボタンのコードは次のとおりです。

A:
type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
type 1 (EV_KEY), code 272 (BTN_LEFT), value 1

B:
type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002
type 1 (EV_KEY), code 273 (BTN_RIGHT), value 1

C:
type 4 (EV_MSC), code 4 (MSC_SCAN), value ff000001
type 1 (EV_KEY), code 274 (BTN_MIDDLE), value 1

D:
type 4 (EV_MSC), code 4 (MSC_SCAN), value ff000002
type 1 (EV_KEY), code 275 (BTN_SIDE), value 1

ベストアンサー1

最後に、Xorg evdevドライバをパッチしてEmulate3Buttonオプションを追加しました。このオプションは、中央ボタンエミュレーションで発生するボタン番号を設定します。 (メーリングリストにパッチを提出しましたが、近いうちにマージする必要があります。)

次に、次の設定を追加しました。

Section "InputClass"
    Identifier  "SlimBlade Trackball"
    Driver      "evdev"

    Option      "ButtonMapping" "1 8 3 4 5 6 7 9 0 2"
    Option      "Emulate3Button" "10"
EndSection

これにより、中央のボタンエミュレーションがボタン番号10をエクスポートし、ボタンCは8、Dは9、10は2にマップされます。望むより。

おすすめ記事