最新更新日 2001.04.13.
更新項目  動くマウスのリストの追加。


Microsoft IntelliMouse を使うのだっ!! インテリマウスでスクロール。
 Windows98 でインテリマウスを使っていると Netscape とかでその素晴らしさは感動モノです。是非 FreeBSD でも使いたい。さて・・。どうしたモノか・・。ちょっとトライしてみましょう。

 調べてみると XFree86 ではマウスのプロトコルとして IMPS/2 と言うのがあるみたいです。ふみふみ。これを XF86Config に書いてもろもろ設定してみよう。あれれ・・。動かない。どうも Linux ではこのプロトコルで動くみたいですが、FreeBSD では動かないみたいです。残念。しかし、ちょっと他の方法でトライしてみましょぅ。

 まず、moused を起動します。/etc/rc.conf は以下の様に設定します。

----------------
moused_enable="YES"
moused_port="/dev/psm0"
moused_type="auto"
moused_flags="-z 4"
----------------
 続いて、/etc/XF86Config のマウスの設定を以下の様に変更します。
----------------
Section "Pointer"
    Protocol        "SysMouse"
    Device          "/dev/sysmouse"
    Buttons         5
EndSection
----------------
 両方を見ると、4 とか 5 等の数値が見えますが、これがスクロールの上下の設定になります。個別に設定するのがミソ。と、言うか、変ですね。これでシステム的な設定が終りました。マシンをリブートして試してみましょう。

 インテリマウスのホイール部分は、ロジテックのおにぎり三つボタンマウスと同様に利用できますね。うんうん。これで一応、三つボタンマウスとしては機能しているみたいです。けど、まだホイール機能が有効にはなりません。残念・・。

 FreeBSD でホイールマウスを動かすには対応するアプリケーションごとに設定する必要があります。ここから先は、アプリケーション毎に見て行く事にしましょう。

◎何は無くとも Netscape。
 やっぱり一番は Netscape で利用したいですよね・・。Netscape で使いたいが為に設定しているのです。ふみふみ。X のリソースをちょっといじります。私はその設定を .Xresources でしています。

 ちょっと余談かもしれませんが、3.2-RELEASE 対応の packages/ports の Netscape の 4.51 系以上のバージョンでは既にホイールマウス利用のリソースがの設定が入っているみたいです。
 私は、最近の Netscape は重くでかくなりすぎているので今回は、ja-netscape-navigator-4.51 をインストールしました。ja-communicator はバイナリがでかくでダメだ・・。メモリ喰い虫だし・・。

 と、言う事で navigator-4.51 のリソースを見てみると、

----------------
*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
----------------
 こんな感じでリソースが入っているのが判ります。すげーじゃんっ!!って感じでヒコヒコ利用していると Frameset タグのあるページではホイール機能が動かないんですね。ありゃりゃ・・。

 と、言う事で以下のリソースを設定しましょう。

----------------
Netscape*drawingArea.translations: #replace \
        ~Alt ~Shift<Btn4Down>:  LineUp() LineUp() LineUp() \
                                LineUp() LineUp() LineUp() \
                                LineUp() LineUp() LineUp() \n\
        ~Alt ~Shift<Btn5Down>:  LineDown() LineDown() LineDown() \
                                LineDown() LineDown() LineDown() \
                                LineDown() LineDown() LineDown() \n\
        Alt<Btn4Up>:            PageUp() \n\
        Alt<Btn5Up>:            PageDown() \n\
        Shift<Btn4Up>:          PageUp() \n\
        Shift<Btn5Up>:          PageDown() \n\
        <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
----------------
 これで、Freameset タグのあるページを見てもちゃんとスクロールしてくれる様になります。後、4.5 系の Netscape ではこの設定を行うと Netscape がスクロールしてくれる様になります。感激ぃぃ。なかなか良いですよ。うんうん。

 尚、3.3-RELEASE から付いている 4.61 の Netscape からは、上記リソースを入れなくてもフレームタグ内でスクロール出来る様になっています。

◎Kterm もスクロール出来る。
 これも X のリソースを修正するだけで動き出します。スクロールバーを有 効にする必要は無いですねぇぇ。ふふふ。

----------------
KTerm*VT100*Translations: #override \
        Shift <Key>space: begin-conversion(_JAPANESE_CONVERSION) \n\
       <Btn4Down>:     scroll-back(6) \n\
       <Btn5Down>:     scroll-forw(6)
----------------
 こんな感じで Translations の所に <Btn4Down> と <Btn5Down> の二行を設定します。これで cat で流れてしまった情報も簡単に見る事が出来るでしょう。ふふふ。

 ただ、当然のお話なのですが、mule -nw や、vi の内容は絶対にスクロールする事は出来ません;-)。あきらめて次のステップに行きます。Xemacs や mule でスクロールする事にしましょう。

◎Xemacs と mule のスクロール。
 まず、Xemacs のスクロールに付いてですが、 Xemacs-20.4 より後のバージョンでは mwheel.el と言うのが標準で付いているのでそれを使えば良い。と、言うお話しです。ただ、FreeBSD の packages に付いているのは 20.4 なので mwheel.el は存在して無いし、20.5 のソースを取って来て(そんなバージョンがあるかは知らない;-) mwheel.el だけ取り出す。なんてのはちとやですね。で、とうしましょう・・。

 探して見たら、以下のサイトにある事が判明しました。すかさず持って来ましょう。

http://www.cs.indiana.edu/l/www/pub/elisp/mwheel.el

 これを byte-compile して、/usr/local/lib/xemacs/site-lisp/ にでもほーりこんであげます。そして自分の Xemacs 用 .emacs に以下の行を追加してあげます。

----------------
; Intelli Mouse を使う設定
(load-library "mwheel")
----------------
 これで動く様になりました。うひひひひ(^^)V。

 尚、XEmacs 21.1.6 からは上記の設定では動きません。mwheel.el を cat すれば解ると思いますが正しいリソースの設定をしてください。以下の様にすると動きます。21.2 系の XEmacs も同様です。

----------------
;; (autoload 'mwheel-install "mwheel" "Enable mouse wheel support.")
;; (mwheel-install)
----------------
 次に mule に付いお話しましょう。3.2-RELEASE では emacs-19.34 ベースの mule2.3 ですが、これに付いては、yamagus@kw.netlaputa.or.jp さん と言う方が作られた intellimouse.el と、言うのがあるので、これを load すれば動き出します。

  byte-compile して /usr/local/share/mule/site-lisp/ 等のパスに入れて .emacs に以下の行を追加してあげましょう。

----------------
; Intelli Mouse を使う設定
(load-library "intellimouse")
----------------
 これで mule はスクロールする様になるでしょう。どちらも、間違っても力強くスクロールボタンを回さない・・。ホイールは押す事により真中ボタンの役割も果たしているので強く押すとくクリックしてしまい、せっかく書いた文書がぼろぼろになる事でしょう(^^;;。

◎どれが動くかな・・。
 と、言う事でインテリマウスを使ってホイールが出来る様になりました。だいぶ使い勝手が良くなりましたよね。秋葉原で Microsoft の IntelliMouse は安い所で買うと 2,980yen で買えます。一度トライしてみてください;-)。

 Software Design の 6 月号に書いてあったのですが、Microsoft IntelliMouse は偽モノが出回っている様です。この偽モノは Windows ではまともに動いていも、X の mouse のプロトコルではまともに動かないみたいです。くれくれもパチモンには気を付けてください;-)。

 ちなみに私はロジテックのホイールマウスのパチモンを掴まれましたが、見事に動きませんでした(g_g)。moused の動きががおかしくて、カーネルが怪しいメッセージを吐き出します。
 マウスの上にロジテックのマークの付いて無い、「無印ロジテックホイール・バルク」と言う製品、型番で言うと、M-S42 でした・・。しくしく(g_g)。今は Windows98 専用機に付いています。

 そして、皆さんから届いた、スクロールマウスの動作報告のリストです。

きのしたさん からメールを頂きましてミツミのスクロールマウスが動いた。
すがのさん からメールを頂きまして Justy のスクロールマウスが動いた。
貝田さん からメールを頂きまして VAIO USB Mouse (PCGA-UMS1) が動いた。
小川さん からメールを頂きまして Genius NetScroll+、ELECOM M-GUWSSVD、サンワサプライ MA-MOUSV が動いた。
飯島さん からメールを頂きまして Logitech Cordless MouseMan Wheel M-RK53が動いた。
倉品さん からメールを頂きまして PS/2、シリアル両用タイプの Logitech FIERST MOUSE+ M-C48 が PS/2 で動いた。

との事です。素晴らしいですね。これで現在動いているホイールマウスは以下のラインナップになります。皆さんもビシバシ人柱して頂いて報告待ってます;-)。

 ただ、これらのリストは 3 系 RELEASE の FreeBSD で動く事を保証したものではありません。USB がまともに動く様になった 4 系 RELEASE 上で動いたモノも多分含まれています。なので、「なんだよぉ。3.2-RELEASE じゃ動かねぇじゃねぇかよぉ。」等と文句を言わない様に・・(^^;。特に USB マウスに付いては。

◎ PS/2 マウス
  ・Microsoft Intellimouse 1.1A
  ・Microsoft Intellimouse 1.2A
  ・LOGITECH MouseMan Wheel M-S48
  ・MITSUMI スクロールマウス ECM-S50 Series
  ・Justy タッチ de スライド JMN-4001
  ・Genius NetScroll+

  ・Remex Japan Corp PowerRing

◎ USB マウス
  ・SONY VAIO USB Mouse (PCGA-UMS1)
  ・ELECOM M-GUWSSVD
  ・サンワサプライ MA-MOUSV
  ・LOGITECH MouseMan Wheel M-UB48

◎ PS/2、USB 両用マウス
  ・Microsoft Intellimouse w/IntelliEye 1.0
  ・LOGITECH Cordless MouseMan Wheel M-RK53
◎ PS/2、Serial 両用マウス
  ・LOGITECH FIRST MOUSE+ M-C48

SONY VAIO USB Mouse は、SONY VAIO 505RX (PCG-505RX) で、FreeBSD-3.3-RELEASE+PAO3-19991011 を動かしている模様です。カーネルには関連するデバイスの指定が必要で、rc.conf の moused_port は "/dev/psm0" では無く、"/dev/ums0" で動くそうです。USB のホットプラグに対応している様ですが、USB マウスを挿入した時には moused に HUP シグナルを送るか、moused の再起動が必要だそうです。

w/IntelliEye は PS/2、USB ともに動作しています。USB の場合は usbd を起動する必要があります。しかし、時々凍りついたりするのは M/B との相性でしょうか。そういう時には moused に HUP シグナルを送っています。動く様になる時と動かない時があるのですが、動かなくなった時にはマシンをリブートしています。

LOGITECH FIRST MOUSE+ M-C48 は PS/2 では正常に動作するみたいですが、シリアル接続した時にはホイール部分が動作せず、ボタンとしても利用できない、ただ単にツーボタンマウスとしての機能になってしまう様です。

LOGITECH Cordless MouseMan Wheel M-RK53 はちょっと設定が特殊みたいです。以下を参考にしてみてください。PS/2 で利用しているそうです。

--- /etc/rc.conf ---
moused_enable="YES"
moused_type="auto"
moused_type="/dev/psm0"
moused_flags="-m 4=6 -m 5=7 -z 6"
----------------
--- /etc/XF86Config ---
Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option      "Protocol" "auto"
	Option      "Device" "/dev/mouse"
	Option	"Buttons"	"5"		# これを追加
EndSection
----------------
 このページのネタは 3.2-RELEASE ネタのはずですが、動いたホイールマウスネタは新しいバージョンのネタでもどんどん追加して行きたいと思います。皆さんもどんどんメールください。


Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.