2009年11月20日金曜日

トラックボール(Logicool Marble Mouse ST-45UPi)

ポインティングデバイスは人それぞれ好みが分かれるところだと思いますが、自分は7、8年前からトラックボールを使用しています。
現在使用しているのは4年くらい前に購入したLogicoolのMarble Mouse(ST-45UPi)という製品ですが、今まではMacの方に繋いでいて、DebianをインストールしているPCではマウス(LOAS MUS-CKT38BL)を使用していました。
しかし、最近はDebianの方を使うことが多くなったので、マウスはMacにトラックボールはDebianのPCへと付け替えることにしました。
マウスの時のXorg.confはnvidia-xconfigで自動作成されたものをほぼそのまま使用していました。
以下Xorg.confの一部抜粋です。

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection

Section "InputDevice"

# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

マウスは2ボタン+ホイール+ホイールクリックという標準的なものです。しかし、LogicoolのMarble Mouse(ST-45UPi)は4ボタンホイール無しと言う仕様なので、このままの設定ではスクロール等が使用出来ないので次のように書き換えました。

Section "InputDevice"

# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/by-id/usb-Logitech_USB_Trackball-mouse"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "8"
Option "EmulateWheelInertia" "10"
EndSection

あちこちから拾い集めた情報を元に自分なりに設定したので、今ひとつ理解してない部分もあるのですが、一応説明しますと、

Option "EmulateWheel" "true"
ホイールエミュレートを可能にします。

Option "EmulateWheelButton" "8"
ホイールエミュレートを可能にするボタンを設定します。"8"だと左小ボタンとなります。ちなみに右小ボタンは"9"になります。

Option "EmulateWheelInertia" "10"
スクロールの速度を設定します。数字が大きい程速くなります。

※Option "Device"はUSB接続の時は/dev/input/by-id/以下、PS/2接続の時は/dev/input/by-path/以下に作成されるファイルを指定するようです。更にDriverに"evdev"を使用する場合は「event」の文字がある方をDriverが"mouse"の場合は「event」の文字が無い方を指定するようですが、自分も良く分かってないので、この辺り定かではありません。一応参考までに書き留めておきます。

自分の環境ではこの設定で左小ボタンを押しながらボールを動かすことによりスクロールが可能となりましたが、一つ問題が……
サスペンドから復帰させるとポインターが動かなくなってしまうのです(;>_<;)
"Device"部分を"/dev/input/by-id/usb-Logitech_USB_Trackball-event-mouse"に書き換えて、Driverを"evdev"にしてみる等色々設定をいじってみたのですが、Driverを"evdev"にするとサスペンドからの復帰は問題無いものの今度はホイールエミュレートの設定が上手く動きません。
どうしたものかと色々考えた挙句、付属していた「USB-PS/2変換」を使いPS/2接続してみました。これが当たったようでサスペンドからの復帰、ホイールエミュレート共に問題なく動作するようになりました(^0^)/
現在のXorg.confです。

Section "InputDevice"

# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/by-path/platform-i8042-serio-1-mouse"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "8"
Option "EmulateWheelInertia" "10"
EndSection

Iceweasel3.0.6上では以下のように動作しています。
左小ボタン+ボール上下>上下スクロール
左右ボタン同時押し>オートスクロール
左小ボタン>戻る
右小ボタン>進む

トラックボールと言うと現在では「Kensington」と「Logicool」が双璧を成すと思いますが、「Kensington」から先達て新製品「Kensington Orbit Trackball with Scroll Ring」が登場しました。アメリカでは既に発売されていて、日本でも近日発売のようです。
センターボールの2ボタン+スクロールリングという構成で個人的にはかなり気になるトラックボールです。