チルトホイールマウスを使えるように設定した

今まで使っていたマウスが壊れて上下スクロールがうまくできなくなってとほうもなく不便になったので、
新しくマウスを買ってきた。
今まで使ってたのもそうだけど、Firefoxで戻る/進むの動作をするボタンと左右スクロールをするボタンのあるマウス。
チルトホイールマウスというみたい。
こいつを設定してみた。



最終的にはxorg.confのマウスの項目に以下のように書いた。

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "evdev"
    Option         "CorePointer"
    Option         "Device" "/dev/input/event5"
    Option         "Name"  "ImExPS/2 Logitech Explorer Mouse"
#   Option         "RelHWHEELOptions" "invert"
#   Option         "RelHWHEELMapTo"  "Buttons 7 6"
#   Option         "HWHEELRelativeAxisButtons" "7 6"
EndSection

これでFirefoxで言う戻る/進むも左右スクロールもちゃんと動作する。
ただ1つだけ問題があって、左右スクロールのボタンが逆になってしまっている。
ホイールを右に傾けると左にスクロールして、左に傾けると右にスクロールしてしまう。
それを直す設定がコメントアウトしている下3つの設定のようなのだけど、どれを有効にしても上手くいかなかったので諦めてそのままとした。
左右スクロールはそんなに使うものじゃないから、いいかなということで。


今までの設定がこんな感じ。作業途中のログをとってなかったので正確じゃないと思うけど、だいたいあってるはず。

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "CorePointer"
    Option         "Protocol" "ExplorerPS/2"
    Option         "Device" "/dev/psaux"
#    Option         "Device" "/dev/input/mice"
    Option         "ZAxisMapping" "4 5"
#    Option         "XAxisMapping" "7 6"
    Option         "Emulate3Buttons" "false"
    Option         "ButtonMapping" "1 2 3 8 9"
EndSection

これでも左右スクロール以外は完全に動作する。
この設定と一番上の最終版の違いは、Driverの項目とOptionのDeviceの項目。
OptionのDeviceにevent*を指定する場合、Driverはmouseではなく、evdevでなければならないみたい。
Deviceにevent*を指定すると左右スクロールも使えるようになる。



色々と遠まわりしてるだろうけど、この左右スクロールを使えるようにするために調べたことは以下のような感じ。
まず、xevコマンドで左右スクロールが認識しているか調べる。
認識していれば、左スクロールを押すと何らかのメッセージ(Button 8とか色々)が出る。していなければ何も反応しない。
event*でないときは何も反応しなかった。


次にマウスがどのイベントに割り当てられているかを見てみる。

$ cat /proc/bus/input/devices 
I: Bus=0003 Vendor=0853 Product=0200 Version=0111
N: Name="Topre Corporation RealForce Compact"
P: Phys=usb-0000:00:1a.2-1/input0
S: Sysfs=/class/input/input1
U: Uniq=
H: Handlers=kbd event1 
B: EV=120013
B: KEY=10000 7 ff9f207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=1f

.....

I: Bus=0011 Vendor=0002 Product=0006 Version=0068
N: Name="ImExPS/2 Logitech Explorer Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input5
U: Uniq=
H: Handlers=mouse1 event5 
B: EV=7
B: KEY=1f0000 0 0 0 0 0 0 0 0
B: REL=143

こんな感じで表示される。下の方のhandlers=mouse1 event5ということでevent5と当たりをつける。


event5で実際に認識するかを試してみる。

$ sudo cat /dev/input/event5

とかやってみて、マウスの左スクロールを押してみたりする。何かよくわからないメッセージ(?)が表示されたりして反応があればOK.
また、

$ sudo cat /dev/input/mice

もやってみたけど、こちらの場合、左右スクロールは反応なかった。
あとこれはもう既にDeviceにevent5とxorg.confに設定してあったりすると反応がないのかもしれない。


あとはxorg.conf内のDriverをevdevに、Deviceをevent5に設定して、ちょこちょこ書き換えては、Ctrl+Alt-BackspaceでX再起動を繰り替えしただけ。


本当は昨日にマウス買ってきてやりたかったんだけど、めちゃめちゃ調子悪くて一日寝込んでてできなかった。
そのためブログ更新も昨日はしなかった。
今日は多少体調がよかったので、マウスを買ってきてやってみた。やっぱりスクロールがちゃんできるといいね。



最後に参考にさせてもらったサイトの方々。

  • http://hidenosuke.org/wiki/?Debian%A4%CETips%A4%DF%A4%BF%A4%A4%A4%CA%A4%E2%A4%CE
  • http://blog.goo.ne.jp/diaochan/e/45c1d249915ac6e9b069877a27733eb0
  • http://retujyou.com/2008/05/22/howto-ubuntu-tilt-wheel-mouse/
  • http://d.hatena.ne.jp/tksmashiw/20080402

ありがとうございます。m(_ _)m

追記

xorg.confのdeviceの部分に直接eventの値を書くのはまずいっぽい。
今日PC再起動したらevent5からevent4に変わっててマウスが動かなくて焦った。
どうやら、/dev/input/by-idか/dev/input/by-pathの中身を書くのが正しいみたい。

ls -l /dev/input/by-path
合計 0
lrwxrwxrwx 1 root root 9 2008-10-27 13:51 pci-0000:00:1a.2-usb-0:1:1.0-event-kbd -> ../event0
lrwxrwxrwx 1 root root 9 2008-10-27 13:51 platform-i8042-serio-1-event-mouse -> ../event4
lrwxrwxrwx 1 root root 9 2008-10-27 13:51 platform-i8042-serio-1-mouse -> ../mouse0
lrwxrwxrwx 1 root root 9 2008-10-27 13:51 platform-pcspkr-event-spkr -> ../event3

このように、ls -lをしてあげて、自分のマウスのeventと合ったものを指定する。自分の場合上から2つ目のもの。
マウスがUSB接続なら、おそらく/dev/input/by-idでPS2接続なら、/dev/input/by-pathを見るのだと思う。自分のマウスはPS2接続。
ということで下のようにxorg.confのdevice部分を書き直した。

    Option         "Device" "/dev/input/by-path/platform-i8042-serio-1-event-mouse"

これで大丈夫だといいな。

更新時刻

  • 2008/10/25/18:25
  • 2008/10/27/14:13