2007年01月10日

evdevでチルトホイールマウス

以前5ボタンマウスの設定で書いたように、evdevを使えばチルトホイールを認識するようになります。しかしボタンのマッピングを変更できないんでずっと放置していましたが、xvkbdとxbindkeysを組み合わせて使えば任意のボタンにキーボードのキー操作を割り当てられることが判ったんでリベンジすることにしました。

ちなみに今愛用しているマウスはLogicoolの VX Revolutionです。VaioT91で使ってます。ノートPC用の小型マウスですが、以外と手にフィットして使い易く、今お気に入りのマウスです。

まずはマウスがどのように認識されているか確認。以下はコマンドとマウスの状態の抜粋です。実際はキーボードなど全ての入力デバイスが表示されます。

$ cat /proc/bus/input/devices

I: Bus=0003 Vendor=046d Product=c518 Version=4204
N: Name="Logitech USB Receiver"
P: Phys=usb-0000:00:1d.1-1/input0
S: Sysfs=/class/input/input3
H: Handlers=mouse2 event3
B: EV=7
B: KEY=ffff0000 0 0 0 0 0 0 0 0
B: REL=143


これを見ると、名前は「Logitech USB Receiver」でデバイスは「mouse2」、イベント(ボタンの振る舞い)が「event3」であることが判ります。

次に先ほど調べたマウスの情報を元に/etc/X11/xorg.confを編集。まずはInputDeviceセクション。

Section "InputDevice"
Identifier "mouse2"
Driver "evdev"
Option "Protocol" "ExplorerPS/2"
Option "Device" "/dev/input/event3"
Option "Name" "Logitech USB Receiver"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "yes"
EndSection


ドライバーにevdevを使うように設定してます。さらにServerLayoutセクションも編集。

Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Synaptics" "CorePointer"
InputDevice "mouse2" "Always Core"
EndSection


赤字のように設定。これで再起動すればチルトホイールが認識されるようになります。しかしこのままではチルトホイール左右に「戻る」「進む」が割り当てられてしまうので使いにくくてしょうがありません(^^;)。今まではここでボタンのマッピング変更ができず、使うのを断念していたんですが、前述のようにxbindkeysとxvkbdを組み合わせればマッピングを変更せずにボタンに任意の機能を割り当てられることが判ったので設定しました。

まずはマウスボタンのマッピングを調べます。コンソールに「xev」コマンドを打つと小さなウィンドウが開きます。この中にマウスカーソルを合わせてボタンをクリックするとボタンの番号が判ります。以下はVX Revolutionのボタンマッピングです。

1 左クリック
2 ホイールクリック
3 右クリック
4 ホイール上
5 ホイール下
6 ホイール右
7 ホイール左
8 サイドボタン下
9 サイドボタン上
13 ズーム+
14 ズームー

keycode 122 (keysym 0x0, NoSymbol) 検索ボタン


検索ボタンのみ何故かキーボードとして認識しています。

次にxbindkeysとxvkbdをインストール。xbindkeysはfedora extrasにあるんでyumで簡単にインストールできますが、xvkbdはFedora用のRPMパッケージが存在しません。ソースからコンパイルしてインストールするのが普通なんでしょうが、私は反則技でMandriva Linux用のRPMパッケージ(xvkbd-2.7a-3mdk.i586.rpm)をRPM Searchで検索してインストールしてしまいました(^^)。RedHat系なんでいけるかなと思って。結果はOK。普通にインストールでき、コマンドで起動することも確認しました。

xvkbdはインストールするだけなんでxbindkeysの設定を。viやgeditなどでホームディレクトリに設定ファイル「.xbindkeysrc」(隠しファイルなので注意)を作成して設定を記述します。

"xvkbd -text "\[Alt_L]\[Left]""
m:0x10 + b:8
"xvkbd -text "\[Alt_L]\[Right]""
m:0x10 + b:9
"xvkbd -text "\[Right]""
m:0x10 + b:6
"xvkbd -text "\[Left]""
m:0x10 + b:7


(07/03/01 追記) 円記号に見える部分はバックスラッシュです。Windows以外なら正常に見えると思います。

サイドボタンに「戻る」「進む」を、チルトホイール左右に「左」「右」を設定しています。見てのとおりキーボードでの操作をxvkbd経由でマウスボタンに割り当てています。つまりキーボードで出来る操作は全てマウスボタンに割り当てられる訳です。あとはGnome起動時にxbindkeysが自動起動するように設定。メニューから「システム」→「設定」→「他の個人設定」→「セッション」と選択し、「自動起動するプログラム」に「xbindkeys」コマンドを追加して再起動。

これで5ボタン+チルトホイールが使えるようになりました。今までのimwheelを使ったやり方と違い、特にアプリの設定をしなくても全てのアプリで利用できるので非常に便利。あと同じ方法でズームや検索ボタンにも機能を割り振ることが出来ます。すばらしい。今回は予想外の成果で大満足です(^^)。
 

この記事へのトラックバックURL

http://blogs.dion.ne.jp/fedora_blog/tb.cgi/4864757
※ブログオーナーが承認したトラックバックのみ表示されます。
※半角英数字のみのトラックバックは受信されません。
※言及リンクのないトラックバックは受信されません。
この記事へのコメント
logicool MX-400での話ですが、xorg.confに
Option "HWHEELRelativeAxisButtons" "8 9"
を追加するとevdevでのサイドボタンとチルトホイールの割り当てが正しくなりました。
今の設定はこんな感じです。

Section "InputDevice"
Identifier "Configured Mouse"
Driver "evdev"
Option "evBits" "+1-2"
Option "keyBits" "~272-287"
Option "relBits" "~0-2 ~6 ~8"
Option "Pass" "3"
Option "HWHEELRelativeAxisButtons" "8 9"
EndSection
Posted by masa at 2007年03月11日 20:00


 
※半角英数字のみのコメントは投稿できません。