私は4つの物理ボタン(Kensington Slimblade Trackball)を備えたマウスを持っています。それらをA B C Dに加えて、マウスX、Y、およびスクロールホイールの3つの軸と呼びましょう。
ボタン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-map
、次にA + 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設定を使用する必要がありますか?
編集:4つのボタンのevtest
コードは次のとおりです。
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
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にマップします。