次のページ 前のページ 目次へ

3. マウスを使えるようにしよう

これでマウスのインタフェースとプロトコルの種類がわかりました. 次に進みましょう.

3.1 マウスの割り込み番号の設定

さあ, 自分のマウスがどんなハードウェア・インタフェースを使っているかは わかりました. 今度は, マウスが使っている割り込み番号を調べ, マシンにインストールしてある他の周辺機器と衝突しないことを 確かめないといけません. とくに後者は繰返しチェックしましょう! 装着されている他のデバイスとぶつかっていないこと!

マウスが他のデバイスのいずれとも同じ割り込み番号を使おうとしていないこ とをしっかり確認すべきです. たとえ他のオペレーティング・システムでうまく動いていようとも, Linux ではマウスが割り込み番号を他と共有することはできません. すべての周辺機器についてドキュメントをチェックし, 何がどの割り込み番号を使っているのか調べましょう.

Linux では, バスマウスが利用する IRQ は, それを使おうとするアプリケーションによってオープンされるまで登録されません. 一方, プラグ・アンド・プレイのハードウェアには, ブート時に割り込みを登録するものが多くあります. このことから, プラグ・アンド・プレイなハードのどれかが, マウスが使うべき IRQ を先に奪ってしまうという可能性が出てきます. 注意して欲しいのは, 仮に他のオペレーティング・システムでは, プラグ・アンド・プレイのカードをバスマウスとぶつからない IRQ で 初期化してくれるかもしれないけれど, Linux ではそううまくはことが運ばないだろう, ということです. 周辺機器全てにおいて IRQ の衝突を発生させないようにする, これはあなたにかかっているのです.

IRQ の一般的な使われかた

大抵の場合, IRQ4 が 1 番目のシリアル・ポート (/dev/ttyS0), IRQ3 が 2 番目 (/dev/ttyS1) (本当にこのへんのデバイスが付いていたら, の話ですよ. 付いてないんなら, これらの IRQ は大手を振って使っていいわけです) SCSI アダプタには IRQ5 を使うものがあり, そして IRQ12 を使うネットワーク・カードもあります. PS/2 ポートの付いたマシンにとって, 他にも IRQ12 を使うカードが付いているいうことは大問題. IRQ12 を PS/2 ポートだけに使うよう強いられてしまうからです.

ATI-XL, Inport, Logitech マウスの場合, カーネルのデフォルトは IRQ5 を使うようになっています. ですので, コンパイル済みのカーネルを使わざるを得ない場合 (CD-ROM からブートした場合など)は, その割り込み番号を使わなければならないことになるでしょう. Inport か Logitech のマウスを最近のカーネルで使うのなら, コマンド・ライン・オプションを使って, 何番の割り込みを使うべきかカーネルに教えることができますから, 再コンパイルの手間は要りません.

Inport と Logitech マウス

コンピュータのケースを開け, マウスが繋がっているカードを見れば, 割り込み番号 (IRQ という名称でも知られています) を 2, 3, 4, 5 に設定する一連のジャンパがきっとあるでしょう (運が良ければ ``INTERRUPT'' と記してあります). 割り込み番号を変更するには, 単にジャンパを今の位置から抜いて, 正しいピンの対に差し込むだけです.

****************************************************
*** ジャンパを変更する前は, コンピュータの電源が ***
*** 切ってあることを確認!!                       ***
****************************************************

ATI-XL マウス

ATI-XL, そして ATI バスマウスのあるものなら IRQ をソフトウェアで選択可能です - マウスと一緒に, IRQ を設定する MS-DOS プログラム (VSETUP.EXE) もついてきたはず. 設定するには, (いったん) MS-DOS を立ち上げ, このプログラムを動かしてください. VSETUP プログラムには, 垂直リフレッシュレートを上げる (画面のちらつきを押える) ためのオプション ``/70'' があることに注意. VSETUP プログラムではマウスのアドレスを プライマリとセカンダリのどちらかに設定することができますが, プライマリの方に設定してください. さもないと, カーネルがマウスを認識できなくなります.

VSETUP を動かした後は一旦ハードウェアリセットをかけないと, 新しい設定内容が有効になりません.

PS/2 マウス

PS/2 マウスは必ず IRQ12 を使います. 変更することはできません (ハンダゴテを持ち出すならともかく) めったにないでしょうが, 他のデバイスでも IRQ12 を使っているというような場合は, その周辺機器のほうのジャンパを再設定し, 別の IRQ を使わせるようにしなければなりません.

3.2 カーネルの設定

お持ちのバスマウスを正しく動作させるためには, バスマウスのサポートが組み込まれるようカーネルを設定しなおす必要があります. コンパイル済みのカーネルを使っている場合は, 三種のバスマウスすべてのサポートが組み込み済みになっていることも多いでしょう. でもこれでも不充分なことがあるんです. そのカーネルは, 実際とは違った割り込み番号を使おうと試みたり, 自動検出に混乱したあげく, あなたのマウスを違う種別のものとみなしたりするかもしれません.

バージョン 2.4 系列以前のカーネルには, バスマウスが使っている IRQ を自動検出する機能がありません. 従って, お持ちのカードが カーネルのデフォルト値である IRQ 5 以外に設定されている場合は, 代りにどの IRQ を使うのかカーネルに教えてやらないとなりません.

これには二通りの方法があります. 一番簡単なのは, ブート段階でカーネルにコマンドラインでオプションを渡してやる方法です.

参考のために「カーネルのコンパイル」の章を通読してほしいのですが, まずは「新しいカーネルにおいて割り込み番号を変える」のところを 注意してください. このあたりについては, Bootprompt-HOWTO も大変助けになります. この HOWTO が納められているサイトなら入っているでしょう.

(訳注: BootPrompt-HOWTO 和訳)

カーネルのコンパイル

カーネルのディレクトリ(ここでは /usr/src/linux と仮定します)に行き,

make config

とします.

お持ちのマウスの種別がはっきりしない場合, まず最初はバスマウスのオプションをすべて有効にしてから カーネルを再コンパイルするとよいでしょう. あなたのマウスを起動時にうまいこと自動判別してくれるかもしれません. これでいつもうまくいくとは限りませんが, うまくいけば, もうコンパイルしないで済みますしね.

お持ちのバスマウス・インタフェースに属する質問項目には ``y'' または ``m'' と答え, それ以外すべてのバスマウスの問いには ``n'' とします. ``m'' オプションは, システム設定がカーネルモジュールのローディングに 対応しているときにだけ使ってください. 対応していない場合, あるいはいま言ったことの意味がわからないなら ``y'' と答えておいたほうが無難です. これなら, 機能がカーネルの中に直接組み込まれます.

例として, Inport マウスを持っているのならば,

Microsoft busmouse support

に対して ``y'' とし, 他のバスマウス全ての質問には ``n'' と答えます. マウスと関係ない質問には, いつものように答えてください.

PS/2 マウスのサポートを組み込んだカーネルをコンパイルするなら,

PS/2 mouse (aka "auxiliary device") support

に ``y'' と答えます.

PS/2 マウスドライバは, 実は 2 種類のデバイスをサポートしています. 標準の PS/2 外部デバイスコントローラ, そして Texas Instruments Travelmate と Gateway Nomad ラップトップで使われている Chips & Technologies の特殊な PS/2 マウス・インタフェース・チップの 2 つです. これらの機種のトラックボールのサポート有りでコンパイルするには,

C&T 82C710 mouse port support (as on TI Travelmate)

に ``y'' と答えます. 82C710 ドライバは実は標準 PS/2 マウスドライバに対するアドオンなので, ここだけでなく標準 PS/2 ドライバに対しても ``y'' と答える必要があることに注意してください.

標準の PS/2 マウス・デバイスと, 82C710 デバイス両方の設定がしてある場合, ドライバはブート時にまず 82C710 チップの存在を確認しようとします. 検出に失敗すると, 代りに標準ドライバが用いられるようになっています. ですので, これらのマウス・インタフェースを両方とも組み込んでおいたカーネルでは, 標準の PS/2 マウス・ポートをも利用できます. しかしながら, 存在しない 82C710 チップが間違えて検出されてしまったという報告が 1 件ありました. ですから, 安全策を取るなら, 必要ない 82C710 のサポートは設定しないのが無難です.

そして, マウスがどの割り込み番号を使うのかカーネルに教えてやらないといけません. もっとも PS/2 マウスならば IRQ は 12 に固定なのでここは飛ばせます.

Logitech, Inport, あるいは Logitech プロトコルを使う ATI マウスなら, /usr/src/linux/include/linux/busmouse.h というファイルの

#define MOUSE_IRQ 5

という行をマウスの割り込み番号に合わせます (マウスの割り込み番号の探し方については, マウスの割り込み番号の設定 を参照してください)

ATI-XL マウスなら, /usr/src/linux/drivers/char/atixlmouse.c の以下の行をマウスの割り込み番号に合わせてください.

#define ATIXL_MOUSE_IRQ 5

マウスの割り込み番号を 2 にしたい場合は, PC アーキテクチャの特殊性のため, #define のほうは 9 にしなければなりません.

割り込み番号 3 を使うマウスでは

#define MOUSE_IRQ 3

割り込み番号 2 を使うマウスでは

#define MOUSE_IRQ 9

のように, 上記の行を書き換えます.

次に, カーネルを付属の説明に従ってコンパイルし, できた新しいカーネルでブートします. これで, バスマウスのサポートがちゃんと含まれたカーネルを 手にすることができました.

新しいカーネルにおいて割り込み番号を変える

どの割り込み番号を使うかをコンパイル時に決めて組み込んでしまうのは, どんなバージョンのカーネルでも使える方法です. 新しめのカーネル (2.x.x あたりのどこかから)では, LILO や LOADLIN の類を使って, カーネルが読み込まれる間に Logitech や Microsoft Inport マウスの割り込み番号を引数として カーネルに渡せるようになっています. カーネルをコンパイルし直さないで (あるいはやりかたを知らなくっても) よいので, 実に時間の節約になります. また, マウスドライバをモジュールとしてロードするようカーネルを設定した場合は, モジュールがロードされるときにこういった情報を渡すことになります.

以下のオプションを LILO の boot 行に与えれば, 割り込み番号を変更できます.

bmouse=3  (Logitech バスマウス)
msmouse=3 (Microsoft Inport マウス)

上の数値 3 を, お使いのマウスの実際の割り込み番号に置き換えてください. lilo でこれを使う例は:

LILO:linux msmouse=3

この手の種別情報を LILO や LOADLIN の設定ファイルに加えてしまえば, もういちいちタイプして指定しなくて済みます. やりかたは LILO, LOADLIN のドキュメントにあたってみてください.

あなたのシステムがモジュールの自動ロードに kerneld を使っている場合は, /etc/conf.modules か /etc/modules.conf を編集して下のうちのいずれか 1 行を足してください.

options msbusmouse mouse_irq=3
options busmouse mouse_irq=3

3.3 マウス・デバイス

Linux では, マウスは /dev ディレクトリにあるファイルを通じてアクセスされます. 下の表は, インタフェースの種類と, どのデバイスファイルを使うべきかのリストです.

インタフェース  デバイスファイル メジャー番号 マイナー番号
-----------------------------------------------------------
Logitech        /dev/logibm      10           0
PS/2            /dev/psaux       10           1
Inport          /dev/inportbm    10           2
ATI-XL          /dev/atibm       10           3

注意: Inport ドライバで ATI-XL マウスをお使いの場合, /dev/atibm デバイスではなく /dev/inportbm を使ってください.

major と minor は, デバイス固有のデバイス番号です.

これらのデバイスがなかった場合は, まず作らなければなりません. 以下のコマンドを root で実行してください.

mknod /dev/logimm    c 10 0
mknod /dev/psaux     c 10 1
mknod /dev/inportbm  c 10 2
mknod /dev/atibm     c 10 3

注意: Linux の近年の歴史(比較的最近)において, バスマウスのデバイスの名称が変更されました. 以下のデバイスの名称は上記のものに置き換えられましたので, 消去すべきです: bmousems, bmouseps2, bmouseatixl, bmouselogitech.

使っているマウス・デバイスから /dev/mouse へシンボリック・リンクを張る人が多いようです. そうすれば, デバイスの名称をいちいち覚えている必要がなくなります. 現在配布されている Linux パッケージでも多分そうなっているでしょう. そのようなリンクがある場合, もしくは自分でリンクを張った場合は, 自分のマウスに合った正しいマウス・デバイスを指しているかどうか確認してください.


次のページ 前のページ 目次へ