830 lines
25 KiB
Groff
830 lines
25 KiB
Groff
.\"
|
|
.\" Copyright (c) 1997
|
|
.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer as
|
|
.\" the first lines of this file unmodified.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" %Id: psm.4,v 1.13.2.2 1999/02/10 14:49:51 yokota Exp %
|
|
.\" jpman %Id: psm.4,v 1.3 2000/08/29 00:56:36 jsakai Stab %
|
|
.\"
|
|
.Dd January 30, 1999
|
|
.Dt PSM 4 i386
|
|
.Os FreeBSD
|
|
.Sh 名称
|
|
.Nm psm
|
|
.Nd
|
|
PS/2 マウス方式のポインティングデバイス用ドライバ
|
|
.Sh 書式
|
|
.Cd "options" \&"PSM_HOOKAPM\&"
|
|
.Cd "options" \&"PSM_RESETAFTERSUSPEND\&"
|
|
.Cd "options" \&"KBD_RESETDELAY=N\&"
|
|
.Cd "options" \&"KBD_MAXWAIT=N\&"
|
|
.Cd "options" \&"PSM_DEBUG=N\&"
|
|
.Cd "options" \&"KBDIO_DEBUG=N\&"
|
|
.Cd "device psm0 at isa? tty irq 12"
|
|
.Sh 解説
|
|
.Nm
|
|
ドライバは PS/2 方式のポインティングデバイスについての
|
|
サポートを行ないます。
|
|
現在、システムには唯ひとつの
|
|
.Nm
|
|
デバイスノードをおくことができます。
|
|
PS/2 マウスポートはキーボードコントローラの補助ポートに配置されているので、
|
|
キーボードコントローラ用のドライバである
|
|
.Nm atkbdc
|
|
も一緒にカーネルに組み込まれていなければなりません。
|
|
なお現時点では
|
|
.Em irq
|
|
番号を変更することはできないので注意して下さい。
|
|
.Pp
|
|
基本的な PS/2 方式のポインティングデバイスには 2 個または 3 個の
|
|
ボタンがあります。
|
|
中にはローラ又はホイールやボタンが幾つか追加されている
|
|
デバイスもあります。
|
|
.Ss デバイス分解能
|
|
通常 PS/2 方式のポインティングデバイスは何段階かの分解能、即ち、
|
|
移動についての感度を持っています。
|
|
これらの分解能は一般に、1 インチあたり 25、50、100、200 パルス
|
|
となっています。
|
|
デバイスによってはより細密な分解能を有しているものもあります。
|
|
現在の分解能は実行時に変更できます。
|
|
.Nm
|
|
ドライバでは、ユーザは予めドライバフラグを用いて分解能を
|
|
設定する
|
|
.Po Sy ドライバの設定
|
|
を参照
|
|
.Pc
|
|
か、または後で
|
|
.Xr ioctl 2
|
|
コマンドの
|
|
.Dv MOUSE_SETMODE
|
|
.Po Sx IOCTL
|
|
を参照
|
|
.Pc
|
|
を用いて分解能を変更することができます。
|
|
.Ss 通知レート
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
デバイスがホストシステムに移動とボタン状態の報告を行なう
|
|
頻度、即ち通知レートの設定も変更可能です。
|
|
一般的にいって PS/2 方式のポインティングデバイスは
|
|
毎秒 10、20、40、60、80、100、200 回
|
|
の報告を送信することができます。
|
|
.\" 訳注 ここ迄。
|
|
60 回または 100 回毎秒の通知レートが多数のデバイスについてのデフォルト値であると
|
|
思われます。
|
|
何の移動もなく、且つどのボタンもその状態を変更していない時は、
|
|
そのデバイスはホストシステムに何も通知しないということに注意してください。
|
|
通知レートは ioctl コールを用いて変更できます。
|
|
.Ss 動作レベル
|
|
.Nm
|
|
ドライバには 3 段階の動作レベルがあります。
|
|
現在の動作レベルは ioctl コールを用いて設定できます。
|
|
.Pp
|
|
レベル 0 では基本的なサポートが行なわれます。
|
|
即ち、デバイスドライバは接続されたデバイスの水平方向と垂直方向の移動
|
|
及び最高 3 個までのボタンの状態を報告します。
|
|
移動とボタンの状態は一連の固定長データパケット
|
|
.Po
|
|
.Sy データパケット形式
|
|
参照
|
|
.Pc
|
|
に符号化されます。
|
|
レベル 0 はデフォルトの動作レベルであって、ユーザプログラム
|
|
がドライバをオープンしたとき、
|
|
最初はこのレベルにあります。
|
|
.Pp
|
|
動作レベル 1、即ち「拡張」レベルでは、もし存在するならローラ (又はホイール)、
|
|
及び最高 11 個迄のボタンがサポートされます。
|
|
ローラによる移動は Z 軸に沿った移動として報告されます。
|
|
このレベルでは 8 バイトのデータパケットがユーザプログラムに送られます。
|
|
.Pp
|
|
動作レベル 2 では、ポインティングデバイスからのデータはそのままユーザプログラム
|
|
に渡されます。
|
|
最新の PS/2 方式のポインティングデバイスはしばしば固有のデータ形式を
|
|
用いています。
|
|
その為、ユーザプログラムではこのレベルでドライバを操作するときに
|
|
特殊なデバイスからのデータ形式に関する知識に精通していることが
|
|
求められます。
|
|
このレベルを「ネイティブ」レベルといいます。
|
|
.Ss データパケット形式
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
.Nm
|
|
ドライバから引き渡されるデータパケットは動作レベルによって異なった形式
|
|
になっています。
|
|
.\" 訳注 ここ迄。
|
|
.Pp
|
|
PS/2 マウス方式のポインティングデバイスからのデータパケットは、
|
|
動作レベル 0 では 3 バイトあります:
|
|
.Pp
|
|
.Bl -tag -width Byte_1 -compact
|
|
.It Byte 1
|
|
.Bl -tag -width bit_7 -compact
|
|
.It bit 7
|
|
1 は垂直移動カウントの算術あふれを示します。
|
|
.It bit 6
|
|
1 は水平移動カウントの算術あふれを示します。
|
|
.It bit 5
|
|
垂直移動カウントが負の場合にセットされます。
|
|
.It bit 4
|
|
水平移動カウントが負の場合にセットされます。
|
|
.It bit 3
|
|
常に 1 です。
|
|
.\" ALPS GlidePointはこのビットについてユーザがパッドの表面を「叩いた」ときに
|
|
.\" クリアし、そうでないときにはセットします。
|
|
.\" 全てではないにしても、他の大抵のデバイスはいつもこのビットをセットします。
|
|
.It bit 2
|
|
中ボタンの状態; 押下されていればセットされます。中ボタンがないデバイス
|
|
では、このビットは常に 0 です。
|
|
.It bit 1
|
|
右ボタンの状態; 押下されていればセットされます。
|
|
.It bit 0
|
|
左ボタンの状態; 押下されていればセットされます。
|
|
.El
|
|
.It Byte 2
|
|
2 の補数での水平移動カウント;
|
|
-256 から 255 まで。
|
|
符号ビットは第 1 バイトにあることに注意してください。
|
|
.It Byte 3
|
|
2 の補数での垂直移動カウント;
|
|
-256 から 255 まで。
|
|
符号ビットは第 1 バイトにあることに注意して下さい。
|
|
.El
|
|
.Pp
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
レベル 1 では、
|
|
.Xr mouse 4
|
|
に定義されている標準形式である
|
|
.Dv MOUSE_PROTO_SYSMOUSE
|
|
形式が用いられます。
|
|
.\" ここ迄。
|
|
.Pp
|
|
レベル 2 、即ちネイティブレベルでは、データパケットの長さと形式には標準が
|
|
ありません。
|
|
.Ss 加速
|
|
.Nm
|
|
ドライバはポインティングデバイスの移動をある程度「加速」することができます。
|
|
デバイスを速く動かすほど、ポインタは画面上をより遠くまで移動します。
|
|
ドライバには加速の効果を支配する内部変数があります。
|
|
その変数の値はドライバフラグを用いるか又は ioctl コールを用いて
|
|
変更できます。
|
|
.Ss デバイス番号
|
|
.Nm
|
|
のマイナデバイス番号は次式により生成されます。
|
|
.Bd -literal -offset indent
|
|
minor = (`unit' << 1) | `non-blocking'
|
|
.Ed
|
|
.Pp
|
|
ここで、「unit」とはデバイス番号 (通常 0) です。
|
|
そして「非ブロッキング」ビットがセットされるのは
|
|
「プロセスブロックを行なうことでマウス入力があるまでウェイトせずに、
|
|
直ちに復帰する」ことを示す為です。
|
|
「非ブロッキング」ビットは \fIXFree86\fP については
|
|
セットされなければならず、
|
|
その為 \fIXFree86\fP について通常用いられるマイナデバイス番号は 1 です。
|
|
デバイスノード名については
|
|
.Bf Sy
|
|
関連ファイル
|
|
.Ef
|
|
を参照して下さい。
|
|
.Sh ドライバの設定
|
|
.Ss カーネル設定オプション
|
|
.Nm
|
|
ドライバを制御する為に以下のようなカーネル設定オプションがあります。
|
|
これらオプションはカーネル設定ファイル
|
|
.Po Xr config 8
|
|
を参照
|
|
.Pc に設定できます。
|
|
.Bl -tag -width MOUSE
|
|
.It Em PSM_HOOKAPM
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
ラップトップコンピュータの中には、システムが省電力モードから
|
|
「レジューム」した直後、どういう訳か
|
|
組み込まれた PS/2 ポインティングデバイスが操作不能になっているものがあります。
|
|
もっとも、結局は使用可能にはなります。
|
|
.\" 訳注 ここ迄。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
入出力操作を実行してデバイスを刺激すればデバイスを早く目覚めさせる
|
|
ことができるらしいという報告があります。
|
|
.\" 訳注 ここ迄。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
このオプションは、一連のコードを
|
|
.Nm
|
|
ドライバに追加してAPM「レジューム」イベントをフックし、デバイスに
|
|
無害な入出力操作を施します。
|
|
.\" ここ迄。
|
|
.It Em PSM_RESETAFTERSUSPEND
|
|
このオプションにより上述の問題に対しもっと強力な動作を加えます。
|
|
このオプションを指定すると、APM レジュームイベントの後
|
|
.Nm
|
|
ドライバはデバイスをリセットします。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
このオプションを使うには
|
|
.Em PSM_HOOKAPM
|
|
オプションもまた一緒に指定して下さい。
|
|
.\" 訳注 ここ迄。
|
|
.It Em KBD_RESETDELAY=X, KBD_MAXWAIT=Y
|
|
.Nm
|
|
ドライバは起動の過程でポインティングデバイスをリセットしようとします。
|
|
時々リセット後にデバイスが応答するまで時間がかかることがあります。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
これらのオプションによりドライバがどのくらいの時間待つべきかを制御します。
|
|
.\" 訳注 ここ迄。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
ドライバは最高で
|
|
.Fa X
|
|
*
|
|
.Fa Y
|
|
ミリ秒の間ウェイトします。
|
|
.\" 訳注 ここ迄。
|
|
ドライバがユーザのポインティングデバイスを検出できないように見える場合には、
|
|
ユーザはこれらの値を増加させたいと考えるかも知れません。
|
|
デフォルト値は
|
|
.Fa X
|
|
に対しては 200 ミリ秒で
|
|
.Fa Y
|
|
に対しては 5 です。
|
|
.It Em PSM_DEBUG=N, KBDIO_DEBUG=N
|
|
これはデバッグレベルを
|
|
.Fa N
|
|
に設定します。
|
|
デフォルトのデバッグレベルは 0 です。
|
|
デバッグログについては
|
|
.Bf Sy
|
|
診断
|
|
.Ef
|
|
を参照して下さい。
|
|
.El
|
|
.Ss ドライバフラグ
|
|
.Nm
|
|
ドライバは以下のようなフラグを受け付けます。
|
|
カーネル設定ファイルの中かまたは起動時のユーザ設定メニュー
|
|
.Po
|
|
.Xr boot 8
|
|
を参照
|
|
.Pc
|
|
でこれらのフラグを
|
|
設定して下さい。
|
|
.Pp
|
|
.Bl -tag -width MOUSE
|
|
.It bit 0..3 RESOLUTION
|
|
このフラグはポインティングデバイスの分解能を指定します。
|
|
0 から 4 迄でなければなりません。
|
|
この値が大きければ大きいほど、デバイスは分解能が高くなります。
|
|
このフィールドにより指定される実際の分解能はデバイスのモデルにより
|
|
異なります。
|
|
一般的な分解能は以下の通りです。
|
|
.Pp
|
|
.Bl -tag -width 0_(medium_high)__ -compact
|
|
.It Em 1 (low)
|
|
25 パルス毎インチ (ppi)
|
|
.It Em 2 (medium low)
|
|
50 ppi
|
|
.It Em 3 (medium high)
|
|
100 ppi
|
|
.It Em 4 (high)
|
|
200 ppi
|
|
.El
|
|
.Pp
|
|
このフラグを 0 のままにしておけば、(それが何であれ)
|
|
デバイスのデフォルトの分解能となります。
|
|
.It bit 4..7 ACCELERATION
|
|
このフラグは加速効果の程度を加減します。
|
|
このフラグの値が小さければ小さいほど、移動の感度は上がります。
|
|
許容される最小値は 1 であり、この値で最も感度が高い設定となります。
|
|
このフラグを 0 に設定すれば完全に加速効果を無効にします。
|
|
.It bit 8 NOCHECKSYNC
|
|
.Nm
|
|
ドライバはデータパケットの第 1 バイトの検出を
|
|
そのバイトのビットパターンを検査することにより行なおうとします。
|
|
このやり方は大抵の PS/2 ポインティングデバイスでは旨く行きます。
|
|
しかし既知のデバイスとあまり互換性のないデバイスの中には
|
|
このやり方と相容れないものがあるかも知れません。
|
|
もし、あなたのポインティングデバイスが期待通りには機能していないと考えられ、
|
|
且つカーネルが頻繁に
|
|
.Bd -literal -offset indent
|
|
psmintr: out of sync (xxxx != yyyy).
|
|
.Ed
|
|
.Pp
|
|
のようなメッセージをコンソールに表示する場合には、
|
|
同期検査を無効にする為にこのフラグをセットして
|
|
効果があるかどうかを調べて下さい。
|
|
.It bit 9 NOIDPROBE
|
|
このフラグが指定されると、
|
|
.Nm
|
|
ドライバはポインティングデバイスのモデルを調査しようとしたり
|
|
モデル固有の初期化をしません。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
その場合、デバイスは標準的な PS/2 マウスのように振舞うはずです。
|
|
.\" 訳注 ここ迄。
|
|
ホイールや追加されたボタンのような特別な機能は
|
|
.Nm
|
|
ドライバには認識されないでしょう。
|
|
.It bit 10 NORESET
|
|
このフラグがセットされていれば、
|
|
デバイスを初期化するときに
|
|
.Nm
|
|
ドライバはポインティングデバイスをリセットしません。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
もし FreeBSD カーネルが他の OS の起動した後に立ち上がったなら、
|
|
ポインティングデバイスは以前の OS の設定を継承することになります。
|
|
.\" 訳注 ここ迄。
|
|
しかし、
|
|
.Nm
|
|
ドライバにはその設定を知る為の方法がないので、
|
|
デバイスとドライバは正しく動作しないかも知れません。
|
|
このフラグは正常な環境下では決して必要とはならないはずです。
|
|
.It bit 11 FORCETAP
|
|
パッドデバイスの中には、デバイスの表面をユーザが「軽く叩く(タップする)」と、
|
|
あたかも 4 番目のボタンが押されたかのように報告するものがあります
|
|
.Po
|
|
.Sy 警告
|
|
参照
|
|
.Pc
|
|
。
|
|
このフラグにより
|
|
.Nm
|
|
ドライバはデバイスがこのように振舞うと仮定します。
|
|
このフラグがなければ、
|
|
本ドライバは ALPS GlidePoint モデルに対してのみ
|
|
このような振舞いを仮定します。
|
|
.It bit 12 IGNOREPORTERROR
|
|
このフラグによって、PS/2 マウスポートを検査するときに
|
|
.Nm
|
|
ドライバは若干のエラー状態を無視します。
|
|
これは正常な環境下では決して必要にはならないはずです。
|
|
.El
|
|
.Sh IOCTL
|
|
マウスドライバにはいくつかの
|
|
.Xr ioctl 2
|
|
コマンドがあります。
|
|
これらのコマンドと関連する構造体及び定数は
|
|
.Ao Pa machine/mouse.h Ac
|
|
に定義されています。
|
|
コマンドの一般的な解説は
|
|
.Xr mouse 4
|
|
に与えられています。
|
|
このセクションでは
|
|
.Nm
|
|
ドライバに固有の機能について解説します。
|
|
.Pp
|
|
.Bl -tag -width MOUSE -compact
|
|
.It Dv MOUSE_GETLEVEL Ar int *level
|
|
.It Dv MOUSE_SETLEVEL Ar int *level
|
|
これらのコマンドで
|
|
.Nm
|
|
ドライバの動作レベルを操作します。
|
|
.Pp
|
|
.It Dv MOUSE_GETHWINFO Ar mousehw_t *hw
|
|
これは接続されたデバイスのハードウェア情報を以下の構造体で返します。
|
|
.Bd -literal
|
|
typedef struct mousehw {
|
|
int buttons; /* ボタンの数 */
|
|
int iftype; /* I/F の種類 */
|
|
int type; /* マウス/トラックボール/パッド... */
|
|
int model; /* I/F に固有のモデル ID */
|
|
int hwid; /* I/F に固有のハードウェア ID */
|
|
} mousehw_t;
|
|
.Ed
|
|
.Pp
|
|
.Dv buttons
|
|
フィールドはデバイスにあるボタンの数を保持します。
|
|
現在
|
|
.Nm
|
|
ドライバは Logitech 製の 3 ボタンマウスを検出して
|
|
そのように報告することができます。
|
|
他のメーカ製の 3 ボタンマウスについては正しく報告されるかどうかは
|
|
分かりません。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
しかし、
|
|
ボタンの数が正しく検出されてもされなくてもドライバの運用には影響しません。
|
|
.\" 訳注 ここ迄。
|
|
.Pp
|
|
.Dv iftype
|
|
フィールドは常に
|
|
.Dv MOUSE_IF_PS2
|
|
です。
|
|
.Pp
|
|
.Dv type
|
|
フィールドは次のようなデバイスの種類を示します。即ち
|
|
.Dv MOUSE_MOUSE ,
|
|
.Dv MOUSE_TRACKBALL ,
|
|
.Dv MOUSE_STICK ,
|
|
.Dv MOUSE_PAD ,
|
|
.Dv MOUSE_UNKNOW
|
|
です。
|
|
ユーザはこのフィールドに頼り過ぎてはいけません。
|
|
というのは、ドライバは必ずしも常に
|
|
デバイスの種類を識別できる訳ではないからです。
|
|
.\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。
|
|
実際のところデバイスの種類を識別できることは稀なのです。
|
|
.\" 訳注 ここ迄。
|
|
.Pp
|
|
.Dv model
|
|
フィールドは動作レベル 0 では常に
|
|
.Dv MOUSE_MODEL_GENERIC
|
|
です。
|
|
これはより高次の動作レベルでは
|
|
.Dv MOUSE_MODEL_GENERIC
|
|
かまたは
|
|
.Dv MOUSE_MODEL_XXX
|
|
のうちのどれか 1 つになるかも知れません。
|
|
この場合にも
|
|
.Nm
|
|
ドライバがこのフィールドに適切な値をセットするかどうかは分かりません。
|
|
.Pp
|
|
.Dv hwid
|
|
フィールドはデバイスにより返された ID の値です。
|
|
一般的な ID は以下の通りです。
|
|
.Pp
|
|
.Bl -tag -width 0__ -compact
|
|
.It Em 0
|
|
マウス (Microsoft, Logitech 及び他の多数のメーカ)
|
|
.It Em 2
|
|
Microsoft Ballpoint mouse
|
|
.It Em 3
|
|
Microsoft IntelliMouse
|
|
.El
|
|
.Pp
|
|
.It Dv MOUSE_GETMODE Ar mousemode_t *mode
|
|
このコマンドによりマウスドライバの現在の動作パラメータを得ます。
|
|
.Bd -literal
|
|
typedef struct mousemode {
|
|
int protocol; /* MOUSE_PROTO_XXX */
|
|
int rate; /* 通知レート (毎秒)、不明の時は -1 */
|
|
int resolution; /* MOUSE_RES_XXX、不明の時は -1 */
|
|
int accelfactor; /* 加速因子 */
|
|
int level; /* ドライバの動作レベル */
|
|
int packetsize; /* データパケットの長さ */
|
|
unsigned char syncmask[2]; /* 同期ビット */
|
|
} mousemode_t;
|
|
.Ed
|
|
.Pp
|
|
.Dv protocol
|
|
フィールドは動作レベル 0 と 2 では
|
|
.Dv MOUSE_PROTO_PS2
|
|
です。
|
|
動作レベル 1 では、
|
|
.Dv MOUSE_PROTO_SYSMOUSE
|
|
です。
|
|
.Pp
|
|
.Dv rate
|
|
フィールドは状態を通知する頻度 (1 秒当りに報告する回数) で、
|
|
この頻度でデバイスはホストコンピュータに移動の報告を送ります。
|
|
サポートされている一般的な値は、10, 20, 40, 60, 80, 100, 200 です。
|
|
中には他の任意の値をも受容するマウスもあるでしょう。
|
|
.Pp
|
|
.Dv resolution
|
|
フィールドはポインティングデバイスの分解能で、定数
|
|
.Dv MOUSE_RES_XXX
|
|
の中のいずれかひとつの値かまたはある正の値です。
|
|
この値が大きいほど、マウスは分解能が細密になります。
|
|
定数
|
|
.Dv MOUSE_RES_XXX
|
|
によって指定される実際の分解能はマウスのモデルによって異なります。
|
|
一般的な分解能は次の通りです:
|
|
.Pp
|
|
.Bl -tag -width MOUSE_RES_MEDIUMHIGH__ -compact
|
|
.It Dv MOUSE_RES_LOW
|
|
25 ppi
|
|
.It Dv MOUSE_RES_MEDIUMLOW
|
|
50 ppi
|
|
.It Dv MOUSE_RES_MEDIUMHIGH
|
|
100 ppi
|
|
.It Dv MOUSE_RES_HIGH
|
|
200 ppi
|
|
.El
|
|
.Pp
|
|
.Dv accelfactor
|
|
フィールドは加速機能
|
|
.Po Sy 加速
|
|
を参照
|
|
.Pc
|
|
を管理する為の値を保持します。
|
|
この値は 0 か正でなければなりません。
|
|
もしこの値が 0 であれば、加速は無効となります。
|
|
.Pp
|
|
.Dv packetsize
|
|
フィールドはデータパケットの長さを示します。
|
|
これは動作レベルやポインティングデバイスのモデルによって変わります。
|
|
.Pp
|
|
.Bl -tag -width level_0__ -compact
|
|
.It Em level 0
|
|
3 バイト
|
|
.It Em level 1
|
|
8 バイト
|
|
.It Em level 2
|
|
デバイスのモデルで決まります
|
|
.El
|
|
.Pp
|
|
配列である
|
|
.Dv syncmask
|
|
フィールドはデータパケットの第 1 バイトを検出する為の
|
|
ビットマスクとビットパターンを保持します。
|
|
.Dv syncmask[0]
|
|
フィールドは各バイトと AND をとるためのビットマスクです。
|
|
その結果が
|
|
.Dv syncmask[1]
|
|
フィールドに等しい場合には、恐らくそのバイトはデータパケットの第 1 バイト
|
|
であろう思われます。
|
|
注意すべきことは、この検出方法は 100% 信頼できるものではなく、そのため、
|
|
単に参考となる手段でしかないと見なすべきことです。
|
|
.Pp
|
|
.It Dv MOUSE_SETMODE Ar mousemode_t *mode
|
|
このコマンドはマウスドライバの現在の動作パラメータを
|
|
.Ar mode
|
|
フィールドに指定された通りに変更します。
|
|
.Dv rate ,
|
|
.Dv resolution ,
|
|
.Dv level ,
|
|
.Dv accelfactor
|
|
の各フィールドだけが変更できます。
|
|
その他のフィールドに値をセットしても
|
|
エラーを生成しませんし効果もありません。
|
|
.Pp
|
|
あるフィールドの現在の設定を変更したくない場合には、
|
|
そのフィールドに -1 を入れて下さい。
|
|
.Dv resolution
|
|
フィールドと
|
|
.Dv rate
|
|
フィールドには 0 を入れることもでき、この場合にはそのフィールドのデフォルト値
|
|
が設定されます。
|
|
.\" .Pp
|
|
.\" .It Dv MOUSE_GETVARS Ar mousevar_t *vars
|
|
.\" .It Dv MOUSE_SETVARS Ar mousevar_t *vars
|
|
.\" これらのコマンドは
|
|
.\" .Nm
|
|
.\" ドライバはサポートしていません。
|
|
.Pp
|
|
.It Dv MOUSE_READDATA Ar mousedata_t *data
|
|
.\" このコマンドは生のデータをデバイスから読みだします。
|
|
.\" .Bd -literal
|
|
.\" typedef struct mousedata {
|
|
.\" int len; /* バッファ内のデータの数 */
|
|
.\" int buf[16]; /* データバッファ */
|
|
.\" } mousedata_t;
|
|
.\" .Ed
|
|
.\" .Pp
|
|
.\" ユーザプログラムに戻った直後に、ドライバはバッファ内の有効なデータバイトの数を
|
|
.\" .Dv len
|
|
.\" フィールドにセットします。
|
|
.\" .Pp
|
|
.It Dv MOUSE_READSTATE Ar mousedata_t *state
|
|
.\" このコマンドはデバイスからハードウェアの設定を読み出します。
|
|
.\" ユーザプログラムに戻った直後に、
|
|
.\" ドライバはバッファ内の有効なデータバイトの数を
|
|
.\" .Dv len
|
|
.\" フィールドにセットします。
|
|
.\" これは通常 3 バイトです。
|
|
.\" バッファは次のようにフォーマットされます:
|
|
.\" .Pp
|
|
.\" .Bl -tag -width Byte_1 -compact
|
|
.\" .It Byte 1
|
|
.\" .Bl -tag -width bit_6 -compact
|
|
.\" .It bit 7
|
|
.\" 予約済み。
|
|
.\" .It bit 6
|
|
.\" 0 - ストリームモード、 1 - リモートモード。
|
|
.\" ストリームモードでは、ポインティングデバイスはその状態が変わる度に
|
|
.\" デバイス状態を送ります。
|
|
.\" リモートモードでは、ホストコンピュータはデバイスの状態を送るように
|
|
.\" リクエストしなければなりません。
|
|
.\" .Nm
|
|
.\" ドライバはデバイスをストリームモードにします。
|
|
.\" .It bit 5
|
|
.\" ポインティングデバイスが現在有効であればセットされます。
|
|
.\" 有効でなければ 0 です。
|
|
.\" .It bit 4
|
|
.\" 0 - 1:1 スケーリング、 1 - 2:1 スケーリング
|
|
.\" 1:1 スケーリングがデフォルトです。
|
|
.\" .It bit 3
|
|
.\" 予約済み。
|
|
.\" .It bit 2
|
|
.\" 左ボタン状態;押下されていればセット。
|
|
.\" .It bit 1
|
|
.\" 中ボタン状態;押下されていればセット。
|
|
.\" .It bit 0
|
|
.\" 右ボタン状態;押下されていればセット。
|
|
.\" .El
|
|
.\" .It Byte 2
|
|
.\" .Bl -tag -width bit_6_0 -compact
|
|
.\" .It bit 7
|
|
.\" 予約済み。
|
|
.\" .It bit 6..0
|
|
.\" 分解能コード: 0 から 3 迄。分解能コードに対する実際の分解能は
|
|
.\" デバイスによって変わります。
|
|
.\" .El
|
|
.\" .It Byte 3
|
|
.\" 状態通知レート(1秒当りの報告の回数)で、この頻度でデバイスはホストコンピュータ
|
|
.\" に移動報告を行ないます。
|
|
.\" .El
|
|
これらのコマンドについては、現在
|
|
.Nm
|
|
ドライバはサポートしていません。
|
|
.Pp
|
|
.It Dv MOUSE_GETSTATE Ar mousestatus_t *status
|
|
このコマンドは
|
|
.Xr mouse 4
|
|
に記述されているようにボタンの現在の状態と移動カウントを返します。
|
|
.El
|
|
.Sh 関連ファイル
|
|
.Bl -tag -width /dev/npsm0 -compact
|
|
.It Pa /dev/psm0
|
|
「非ブロッキング」型デバイスノード
|
|
.It Pa /dev/bpsm0
|
|
.Em devfs
|
|
での「ブロッキング」型デバイスノード。
|
|
.El
|
|
.Sh 使用例
|
|
.Dl "options" \&"PSM_HOOKAPM\&"
|
|
.Dl "device psm0 at isa? tty irq 12"
|
|
.Pp
|
|
「レジューム」イベント後にポインティングデバイスを刺激するための
|
|
オプションのコードとともに
|
|
.Nm
|
|
ドライバをカーネルに組み込みます。
|
|
.Pp
|
|
.Dl "device psm0 at isa? tty flags 0x024 irq 12"
|
|
.Pp
|
|
デバイス分解能を高く (4) セットし、加速因子を 2 にセットします。
|
|
.Sh 診断
|
|
.Pp
|
|
デバッグレベル 0 では、起動過程での以下のような行以外には
|
|
殆ど情報はログされません:
|
|
.Bd -literal -offset indent
|
|
psm0: device ID X
|
|
.Ed
|
|
.Pp
|
|
ここで
|
|
.Fa X
|
|
は発見されたポインティングデバイスから返されたデバイス ID コードです。
|
|
既知の ID については
|
|
.Dv MOUSE_GETINFO
|
|
を参照して下さい。
|
|
.Pp
|
|
デバッグレベル 1 ではドライバが補助ポート (マウスポート)
|
|
を検査している間により多くの情報がログされます。
|
|
メッセージは LOG_DEBUG の level で LOG_KERN を facility として
|
|
.Po Xr syslogd 8
|
|
を参照
|
|
.Pc
|
|
ログされます。
|
|
.Bd -literal -offset indent
|
|
psm0: current command byte:xxxx
|
|
kbdio: TEST_AUX_PORT status:0000
|
|
kbdio: RESET_AUX return code:00fa
|
|
kbdio: RESET_AUX status:00aa
|
|
kbdio: RESET_AUX ID:0000
|
|
[...]
|
|
psm: status 00 02 64
|
|
psm0 irq 12 on isa
|
|
psm0: model AAAA, device ID X, N buttons
|
|
psm0: config:00000www, flags:0000uuuu, packet size:M
|
|
psm0: syncmask:xx, syncbits:yy
|
|
.Ed
|
|
.Pp
|
|
第 1 行目は補助ポートが検査される直前のキーボードコントローラの
|
|
コマンドバイトの値を示します。
|
|
これは通常は、4D, 45, 47, 65 のいずれかで、通電時にマザーボード BIOS が
|
|
キーボードコントローラを初期化した方法により決まります。
|
|
.Pp
|
|
第 2 行目は補助ポートインタフェースに対してキーボードコントローラが
|
|
テストした結果を示し、0 でエラーが無いことを示します。
|
|
しかしながら、たとえシステムにポートが存在しなくてもエラーが無いと
|
|
報告するコントローラも中にはあることに注意して下さい。
|
|
.Pp
|
|
第 3 行目から第 5 行目まではポインティングデバイスのリセット状態を示します。
|
|
機能しているデバイスであれば FA AA <ID> という順序に並んだデータ
|
|
を返すはずです。
|
|
この ID コードは上で解説したものです。
|
|
.Pp
|
|
第 7 行目は現在のハードウェアの設定を示します。
|
|
.\" 定義については
|
|
.\" .Dv MOUSE_READSTATE
|
|
.\" を参照して下さい。
|
|
これらのバイトは次のようにフォーマットされます:
|
|
.Pp
|
|
.Bl -tag -width Byte_1 -compact
|
|
.It Byte 1
|
|
.Bl -tag -width bit_6 -compact
|
|
.It bit 7
|
|
予約済み。
|
|
.It bit 6
|
|
0 - ストリームモード、1 - リモートモード。
|
|
ストリームモードでは、ポインティングデバイスはその状態が変わる度に
|
|
デバイス状態を送ります。
|
|
リモートモードでは、ホストコンピュータはデバイスの状態が送られるように
|
|
要求しなければなりません。
|
|
.Nm
|
|
ドライバはデバイスをストリームモードにします。
|
|
.It bit 5
|
|
ポインティングデバイスが現在有効であればセットされます。
|
|
有効でなければ 0 です。
|
|
.It bit 4
|
|
0 - 1:1 スケーリング、1 - 2:1 スケーリング。
|
|
1:1 スケーリングがデフォルトです。
|
|
.It bit 3
|
|
予約済み。
|
|
.It bit 2
|
|
左ボタン状態; 押下されていればセット。
|
|
.It bit 1
|
|
中ボタン状態; 押下されていればセット。
|
|
.It bit 0
|
|
右ボタン状態; 押下されていればセット。
|
|
.El
|
|
.It Byte 2
|
|
.Bl -tag -width bit_6_0 -compact
|
|
.It bit 7
|
|
予約済み。
|
|
.It bit 6..0
|
|
分解能コード: 0 から 3 迄。
|
|
分解能コードに対応する実際の分解能はデバイスにより異なります。
|
|
.El
|
|
.It Byte 3
|
|
状態通知レート (1 秒当りに報告する回数) で、この頻度でデバイスは
|
|
移動報告をホストコンピュータに送ります。
|
|
.El
|
|
.Pp
|
|
.Nm
|
|
ドライバがユーザプログラムによりオープンされるまでは
|
|
ポインティングデバイスは有効にならないことに注意して下さい。
|
|
.Pp
|
|
残りの行についてはデバイス ID コード、検出されたボタンの数、及び
|
|
内部変数を表示します。
|
|
.Pp
|
|
デバッグレベル 2 では、ずっと多くの詳細な情報がログされます。
|
|
.Sh 警告
|
|
多くのパッドデバイスは、ユーザがパッドの表面を「軽く叩いた(タップした)」時に、
|
|
まるで第 1 (左) ボタンが
|
|
押下されたかのように振舞います。
|
|
これに対し、ALPS GlidePoint のパッドモデルの中には、軽く叩く(タッピング)動作を
|
|
第 4 番目のボタンのイベントとして処理するものがあります。
|
|
.Pp
|
|
MouseSystems 製の PS/2 マウスの中には、正しく機能させるために
|
|
高分解能モードにする必要があるものがあります。
|
|
ドライバフラグを用いて分解能を設定して下さい。
|
|
.Pp
|
|
一旦データストリームの同期がずれた場合には、
|
|
パケットの第 1 バイトに再び同期することを保証する方法はありません。
|
|
しかしながら、X サーバが
|
|
.Xr moused 1
|
|
を用いてマウスにアクセスしていない場合には、
|
|
ユーザが \fIXFree86\fP サーバを使用中に問題が生じても、
|
|
仮想端末に切り替えてから X サーバに戻れば X サーバを
|
|
マウスと同期させることができるかも知れません。
|
|
マウスを移動させないでいずれかのボタンをクリックすれば
|
|
やはり効果があるかも知れません。
|
|
.Sh バグ
|
|
ioctl コマンドの
|
|
.Dv MOUSEIOCREAD
|
|
は削除されました。
|
|
どのみち、これは機能していなかったのです。
|
|
.Sh 関連項目
|
|
.Xr ioctl 2 ,
|
|
.Xr syslog 3 ,
|
|
.Xr atkbdc 4 ,
|
|
.Xr mouse 4 ,
|
|
.Xr mse 4 ,
|
|
.Xr sysmouse 4 ,
|
|
.Xr moused 8 ,
|
|
.Xr syslogd 8
|
|
.\".Sh 歴史
|
|
.Sh 作者
|
|
.Nm
|
|
ドライバは非常に多くの人々によりなされた仕事に基づいています。
|
|
これらの人々の中から少数の方々を挙げれば
|
|
.An Eric Forsberg ,
|
|
.An Sandi Donno ,
|
|
.An Rick Macklem ,
|
|
.An Andrew Herbert ,
|
|
.An Charles Hannum ,
|
|
.An Shoji Yuen ,
|
|
.An Kazutaka Yokota
|
|
がいます。
|
|
.Pp
|
|
このマニュアルページは
|
|
.An Kazutaka Yokota Aq yokota@FreeBSD.org
|
|
が書きました。
|
|
.\"Translated by Tetsuro Furuya (古谷 哲郎) <ht5t-fry@asahi-net.or.jp>,Dec.,1999.
|
|
.\" Supervised by Kazutaka YOKOTA <yokota@FreeBSD.org>, Jan. 10, 2000.
|
|
.\" ML Checked by 井崎哲也 <isaki@net.ipc.hiroshima-u.ac.jp>, Jan 12, 2000.
|
|
.\" Final Checked by
|