ホイール・マウスをXで使おう


LogitechのMouseManという3ボタン・マウスを愛用していたんだけど、最近では会社でもLinuxばかり使うようになってしまって(笑) Windowsを使うのはOutlookで社内の連絡メールを読むためだけになっている。で、やはり会社でも3ボタン・マウスを使いたいよなぁ、てワケで買いにいったんだけど、例によって品揃えの悪い、近所のCompUSAではコレは品切れで、ホイール付きのコイツしか置いてなかった。

XFree86 3.3.1あたりから、ホイール付きのマウスも使えるようになったというような話を見たか聞いたかしていたんで、まぁいいか話のタネにでも、と思って買ってきたんだけど、それなりにちゃんと使えていて、というか便利で具合がいい(笑)

たしか、ホイール付きのマウスって、MSがインテリ・マウスとかいう名前で売り出したんだよねぇ。ホイールが便利かどうか以前に、そもそもインテリ某という名前がすでにケリをくれてやりたくなる名前だよな(-_-#) そう思わない?インテリだぜインテリ。言うに事欠いて。ったく。それに、同じようにMS製のあのヘンテコなキーボード、アレだよアレ、あの八の字に配置されてるヤツ。あれと、勾玉なインテリ・マウスをセットでWindowsとか使ってるヤツを見ては、ケッビルの下僕がなどと思っていたので、ホイール・マウスにいいイメージ持ってなかったんだよなぁ。

だけど、使ってみると、便利だわ(笑) やるな>ビル オレの負けだ。わはははは。

で、実際にどうやってホイールをXで使うか、というのは、このページを参考にした。なんでもTurbo Linuxのサポートページにもちょっとは載ってるらしい。未確認だけどね。まぁパシフィック・ハイテックはなんでもありだからなぁ。参考にしたページにはいろいろな箇所での使い方、使う上での準備が出ているんだけど、要はホイールの上回転、下回転をボタンの4番目、5番目に割り当てる、という方法らしい(笑)

Windowsのように、GUIが1通りしかないなら、スクロール・バーとホイールを直結すればおしまいなのだが、Xの場合は同じスクロール・バーでもWidgetによって処理しているプログラム自体が異なるので、どこか一箇所で設定すれば、どこででも有効になるというワケにはいかない。で、結局オレ的にはNetscape Communicatorでとりあえず使えるようにした。あと、GTK+ と Tcl/TK なアプリでも制限付きながら使えるようにしてある。

まず、XF86Configを書き換えてやろう。

Section "Pointer"
   Protocol        "imps/2"
   Device          "/dev/mouse"
   Resolution      100
   Buttons         3
   ZAxisMapping    4 5
EndSection

Protocolはimps2で使っている。imって、インテリ・マウスのimだよなきっと(笑) で、ZAxisMapping 4 5ってのが、ホイールをボタン4および5に割り当てるってことだ。

これでX鯖の設定はとりあえずおしまい。各アプリがどう処理しようが、とにかくマウスからは、ホイールの回転に応じてボタン4やボタン5が押されたぞ、というイベントがガンガン上がってくるようになる。

で、次はNetscape Communicatorでの設定なんだけど、これはリソースで設定する。オレの場合は~/.Xresourcesに書いた。環境によっては~/.Xdefaultsに書こう。

!## NETSCAPE
Netscape*drawingArea.translations:      #replace	\
 <Btn1Down>:      ArmLink()       \n\
 <Btn2Down>:      ArmLink()       \n\
 ~Shift<Btn1Up>:  ActivateLink()  \n\
 ~Shift<Btn2Up>:  ActivateLink(new-window)  \
                  DisarmLink()    \n\
 Shift<Btn1Up>:   ActivateLink(save-only)  \
                  DisarmLink()    \n\
 Shift<Btn2Up>:   ActivateLink(save-only)  \
                  DisarmLink()    \n\
 <Btn1Motion>:    DisarmLinkIfMoved()  \n\
 <Btn2Motion>:    DisarmLinkIfMoved()  \n\
 <Btn3Motion>:    DisarmLinkIfMoved()  \n\
 <Motion>:        DescribeLink()  \n\
 <Btn3Down>:      xfeDoPopup()    \n\
 <Btn3Up>:        ActivatePopup() \n\
 Ctrl<Btn4Down>:  PageUp()\n\
 Ctrl<Btn5Down>:  PageDown()\n\
 Shift<Btn4Down>: LineUp()\n\
 Shift<Btn5Down>: LineDown()\n\
 None<Btn4Down>:  LineUp()LineUp()LineUp()LineUp()LineUp()\
                  LineUp()LineUp()LineUp()LineUp()LineUp()\n\
 None<Btn5Down>:  LineDown()LineDown()LineDown()LineDown()LineDown()\
                  LineDown()LineDown()LineDown()LineDown()LineDown()\n\
 Alt<Btn4Down>:   xfeDoCommand(forward)\n\
 Alt<Btn5Down>:   xfeDoCommand(back)\n

これで設定はおしまい。見てわかるとおり、ホイールの上回転(ボタン4)下回転(ボタン5)で10行ずつスクロールする設定になっている。変更したい人は適宜LineUp()とLineDown()の数を変えよう。Ctrlを押しながらだとページ単位で、Shiftを押しながらだと1行単位でスクロールする。だが、こうして設定しても、ホイールが効くのはNavigatorなりCommunicatorなりの本体だけのようだ。フレームでも効く。が、ファイル選択などのダイアログ・ボックスなどでは効かないんだ。まぁいいとしとこう(笑)

Linux(Unixクローン)だと、真ん中のボタンを頻繁に使う(スクロールバーを摘むときとか、ペーストする時とか)んだけど、ホイール・マウスだと、ホイールそのものが真ん中ボタンとして振舞うようになっていて、ホイールそのものを押せるんだよね。だけど感蝕がグニュグニュしてよろしくないのだ。その点、LogitechのMouseMan Wheelはマウスの横っ腹にも親指用のボタンが付いていて、こいつが真ん中のボタンにデフォルトでなっているので、最近では親指でモノを掴んでいる(笑) なれると結構いけるよ。うん。

で、GTK+だが、同じページからたどれるこのパッチを取りあえずGTK+-1.0.6にあててみた。パッケージ置き場にあるヤツにはすでにパッチがあたっているんだけど、たしかにGtkText Widgetではホイールで上下にスクロールさせることができるようになる。DCUPでもちゃんと使えた。便利便利。実は今、GTK+ベースでGUIGUIしたMailerを書いてたりするので、このパッチをベースに、GtkText以外のWidgetでもホイールが使えるように、ちょっとほげって見ようと思っている。

Tcl/Tkについても、同じページからたどれるmscroll.tclというのをもらってきて、ホイールでスクロールさせたいTclなアプリの最後にでも追加してやれば、ちゃんと使えるようになる。といってもオレ的にはスクロールしたくなるようなTclのアプリってBookViewFileRunnerしかないのであまり重要じゃないけどね。しかも、オレのイチオシなファイル・マネージャのFileRunnerだけど、コイツはもともとホイール・マウスに対応済みという優れ物なので、X鯖の設定だけしてやればグリングリンしまくりなのだった。

ホイール・マウスからちょっと脱線しちゃうけど、Netscape Communicatorのリソースの話なんで、ここに続けて書いちゃう。実は今まで、Netscape Communicator 4.05をずっと使っていたんだ。それもJRPMから持ってきたlibc5なヤツ。だけど、いいかげん4.07も出てるし(といってもセキュリティ・ホールが発見されているからすぐに4.08が出ると思うけど)、もうlibc5でもないだろう(実際、コイツくらいしか使ってるヤツはいないんだ、オレの環境だと)と思って、4.07のパッケージをrawhideのftpサイトからもらってきて入れてみた。英語版をそのままね。で、4.07ってなかなか良くなってるねぇ。もうこのまま使っちゃうことにしたよ。

どうせオレ的にはMailもNewsもモジラじゃ読み書きしないから、英語版のままでも全然かまわないもんなぁ。だけど、1つだけ不満が。bookmarkが文字化けしちゃうんだよね。コンテンツは文字コードを選べるけど、bookmarkはそうもいかないらしいや。単にbookmarkを追加すると、そのページに付けられているタイトルが見出しとして追加されちゃう以上、なんとかここの文字化けだけは解決したかった。

だもんで、Communicator 4.05で使っていたリソースから、最低限bookmarkに関係するところのフォント設定だけ抜き出して、~/.Xresourcesに追加しちゃったよ。

Netscape*fontList:\
-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0201.1976-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0212.1990-0:

Netscape*XmTextField.fontList:		\
-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*

Netscape*bookmarks*fontList:    \
-*-helvetica-medium-r-*-*-*-120-*-*-*-*-iso8859-*;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0201.1976-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0212.1990-0:

Netscape*bookmarks*fontList:    \
-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0201.1976-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0212.1990-0:

Netscape*bookmarks*selectedLabel.fontList:\
-*-helvetica-medium-r-*-*-*-120-*-*-*-*-iso8859-*;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0201.1976-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0212.1990-0:

Netscape*bookmarks*XmTextField.fontList:        \
-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0201.1976-0;\
-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0212.1990-0:

これだけを追加しておけば、bookmark関連だけ文字化けしないで日本語が表示されるようになって、他のメニューやダイアログ・ボックスは英語のままだ。だけど、ちゃんとskkinputやkinput2から漢字も入力できるし、掲示板にもサクサク書ける。オレ的には不都合ないよ。しかも、きっと4.08とかそれ以降でも、なにも考えずにアップデートするだけで、リソースの事を考えなくていいのもグ〜だ。

ただ、この状態だと、Javaでは日本語が表示されない。??????になっちゃうんだ。とはいえ、もう最近はすっかりJavaにも興味が薄れちゃったし、モヂラ自体、いいJava環境とは思えないんで、オレ的にはこれもど〜でもいいや(笑) で、4.07だけど、コイツって「Save Link As...」でダウンロードする時の処理が腐ってるね。ファイル名を明示的に自分で入力してやらない限り、.を_に勝手に変えちゃうし、拡張子も勝手に3文字に丸めちゃうんだぜ。もう最低。Linux用なのに、やってるこたぁWindows版と一緒だ。 とうとうMail、Newsだけじゃなくて、ダウンロードにすら使い物にならなくなったのか>モヂラ

まぁ、wgetでもFileRunnerでもできるからいいか。しょせんブラウザだもんな。でも明らかにレベル・ダウンだよなぁこれじゃ。


メール 戻る