Quantcast
Channel: emonkak's Blog
Viewing all articles
Browse latest Browse all 26

Kensington Expert Mouse 5 USBをX11で使う方法

$
0
0

トラックボールの名機と呼ばれるKensington Expert Mouse 5(EM5)をX11で使おうとしたが問題が発生した。

まず、EM5には4つのボタンがあり、それぞれのボタンはデフォルトでは以下のように割り当てられている:

.---------. .---------.
| Middle  | | Back    |
`---------' `---------'
.---------. .---------.
| Left    | | Right   |
`---------' `---------'

これら4つのボタンとホイールのX、Y軸それぞれの正方向、負方向のスクロールを合わせて8ボタンのマウスの扱いになる。

この割り当てを以下のように変更した上で、左クリックと右クリック同時押しで中央クリック、進むボタンを押しながらカーソル移動をスクロールに割り当てたい。

.---------. .---------.
| Middle  | | Forward |
`---------' `---------'
.---------. .---------.
| Left    | | Right   |
`---------' `---------'

これを実現するためにxorg.confでevdevの設定を以下のようにした:

Section "InputClass"
    Identifier "Kensington USB/PS2 Expert Mouse"
    MatchIsPointer "on"
    MatchProduct "Kensington USB/PS2 Expert Mouse"
    Driver "evdev"
    Option "ButtonMapping" "1 8 3 4 5 6 7 9 2"
    Option "Emulate3Buttons" "on"
    Option "Emulate3Button" "9"
    Option "EmulateWheel" "on"
    Option "EmulateWheelButton" "8"
    Option "EmulateWheelInertia" "10"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
EndSection

しかし 8ボタンマウスとして認識しているため、ButtonMappingの設定値で最後の 2が無視されて 1 8 3 4 5 6 7 9になってしまう。 そのため中央クリックのエミュレーションでボタン2(中央ボタン)ではなく、ボタン9(進むボタン)のイベントが送信されてしまう。

マッピングxinputコマンドで確認できる:

$ xinput get-button-map "Kensington USB/PS2 Expert Mouse"
1 8 3 4 5 6 7 9

今回これを回避するためにソースを編集してボタン数を btnmapの長さ(32)で決め打ちして回避した。

パッチを当てるとマッピングは以下のようになった:

$ xinput get-button-map "Kensington USB/PS2 Expert Mouse"                                 
1 8 3 4 5 6 7 9 2 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 

また、以前の記事でも、中央クリックのエミュレーションをマッピングの変更とともに使用するためのパッチを書いたが、これは中央ボタンの物理ボタン番号を指定する Emulate3Buttonの設定が実装されて不要になった。

なお、シリアルポート版のEM5をPS/2で使う場合はパッチは必要なく、以下の設定で同じ動作が可能:

Section "InputClass"
    Identifier "ThinkPS/2 Kensington ThinkingMouse"
    MatchIsPointer "on"
    MatchProduct "ThinkPS/2 Kensington ThinkingMouse"
    Driver "evdev"
    Option "ButtonMapping" "1 8 3 4 5 6 7 2 9"
    Option "Emulate3Buttons" "on"
    Option "Emulate3Button" "8"
    Option "EmulateWheel" "on"
    Option "EmulateWheelButton" "9"
    Option "EmulateWheelInertia" "10"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
EndSection

Viewing all articles
Browse latest Browse all 26

Trending Articles