doc/ja_JP.eucJP/man/man4/sysmouse.4
SUZUKI Koichi 218c6b4b9b Unify the wording of some words of foreign (English) origin
which has some variation of writing in Japanese, as well as some typos.

Submitted by:  kano@na.rim.or.jp
Approved by:   kuriyama (mentor/implicitly)
2004-07-17 22:45:21 +00:00

456 lines
12 KiB
Groff

.\" Copyright (c) 1997
.\" John-Mark Gurney. 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.
.\" 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.
.\" 3. Neither the name of the author nor the names of any co-contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY John-Mark Gurney AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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: sysmouse.4,v 1.7 1998/03/12 07:30:38 charnier Exp %
.\" $FreeBSD$
.\"
.\" word: movement (マウスの)動き[sysmouse.4]
.\"
.Dd December 3, 1997
.Dt SYSMOUSE 4 i386
.Os FreeBSD
.Sh 名称
.Nm sysmouse
.Nd 仮想化されたマウスドライバ
.Sh 書式
.Fd #include <machine/mouse.h>
.Fd #include <machine/console.h>
.Sh 解説
マウスデーモン
.Xr moused 8
と一緒に使うことにより、コンソールドライバは、
.Nm
ドライバを通して、ユーザプロセスに標準的な方法でマウスのデータを提供します。
このように整理することで、
.Po
.Tn X\ Window System
などのような
.Pc
ユーザプロセスとコンソールとでマウスを共有することができるようになります。
.Pp
ユーザプロセスがマウス機能を利用しようとする場合、単に
.Xr open 2
システムコールで
.Pa /dev/sysmouse
をオープンし、
.Xr read 2
システムコールを用いてマウスデータを読み込むだけでよいです。
ここで、確実に
.Xr moused 8
を実行しておいて下さい。さもないと、ユーザプロセスはマウスからデータを
一切受け取ることができないでしょう。
.Pp
.Ss 機能レベル
.Nm
ドライバには 2 つの機能レベルがあります。現在の機能レベルは ioctl
システムコールにより参照、変更することができます。
.Pp
レベル 0 は最も低いレベルで、基本的なレベルでもあります。このレベルでは、
ドライバは、ユーザプログラムに対して基本的なサービスを提供します。
.Nm
ドライバは、マウスの水平垂直の動きと、最大で 3 個までのボタンの状態を、
以下に示す
.Tn MouseSystems
形式で通知します。
.Pp
.Bl -tag -width Byte_1 -compact
.It Byte 1
.Bl -tag -width bit_7 -compact
.It bit 7
常に 1 です。
.It bit 6..3
常に 0 です。
.It bit 2
左ボタンの状態です。押し下げられている状態でビットクリア、そうでなければ
ビットセットです。
.It bit 1
中ボタンの状態です。押し下げられている状態でビットクリア、そうでなければ
ビットセット。中ボタンを持たない機器の場合は常に 1 です。
.It bit 0
右ボタンの状態です。押し下げられている状態でビットクリア、そうでなければ
ビットセットです。
.El
.It Byte 2
水平の動きのカウントを 2 の補数形式で表した値の先頭半分です。
-128 から 127 までの値。
.It Byte 3
垂直の動きのカウントを 2 の補数形式で表した値の先頭半分です。
-128 から 127 までの値。
.It Byte 4
水平の動きのカウントを 2 の補数形式で表した値の後ろ半分です。
-128 から 127 までの値。水平の動きのカウントを得るには、
byte 2 と byte 4 を足して下さい。
.It Byte 5
垂直の動きのカウントを 2 の補数形式で表した値の後ろ半分です。
-128 から 127 までの値。垂直の動きのカウントを得るには、
byte 3 と byte 5 を足して下さい。
.El
.Pp
レベル 1 は拡張レベルで、マウスのデータは
.Xr mouse 4
で定義された標準形式
.Dv MOUSE_PROTO_SYSMOUSE
でコード化されます。
.\" .Ss Acceleration
.\" The
.\" .Nm
.\" driver can somewhat `accelerate' the movement of the pointing device.
.\" The faster you move the device, the further the pointer
.\" travels on the screen.
.\" The driver has an internal variable which governs the effect of
.\" the acceleration. Its value can be modified via the driver flag
.\" or via an ioctl call.
.Sh IOCTL
この節では、2 種類の
.Xr ioctl 2
コマンドについて説明します。
1 つは、
.Nm
ドライバそれ自体に対するコマンドで、もう 1 つは、コンソールと
コンソール制御ドライバに対するコマンドです。
.Ss Sysmouse Ioctl
マウスドライバに対するコマンドがいくつかあります。このコマンド一般の説明は、
.Xr mouse 4
にあります。
以下では、
.Nm
ドライバ固有の機能を説明します。
.Pp
.Bl -tag -width MOUSE -compact
.It Dv MOUSE_GETLEVEL Ar int *level
.It Dv MOUSE_SETLEVEL Ar int *level
これらのコマンドは、マウスドライバの機能レベルを操作します。
.Pp
.It Dv MOUSE_GETHWINFO Ar mousehw_t *hw
以下の構造体で、接続された機器のハードウェア情報を返します。現在の
バージョンの
.Nm
ドライバでは、
.Dv iftype
フィールドだけが正しい値が詰まっていることが保証されています。
.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
フィールドには、ドライバが検出したボタンの数が保持されています。
.Pp
.Dv iftype
は常に
.Dv MOUSE_IF_SYSMOUSE
です。
.Pp
.Dv type
は機器の型:
.Dv MOUSE_MOUSE ,
.Dv MOUSE_TRACKBALL ,
.Dv MOUSE_STICK ,
.Dv MOUSE_PAD ,
.Dv MOUSE_UNKNOWN
を表します。
.Pp
.Dv model
は、機能レベル 0 では常に
.Dv MOUSE_MODEL_GENERIC
です。
これは、より高いレベルでは、
.Dv MOUSE_MODEL_GENERIC
または、
.Dv MOUSE_MODEL_XXX
のうちの 1 つになります。
.Pp
.Dv hwid
は常に 0 です。
.Pp
.It Dv MOUSE_GETMODE Ar mousemode_t *mode
このコマンドは、マウスドライバの現在の機能パラメータを返します。
.Bd -literal
typedef struct mousemode {
int protocol; /* MOUSE_PROTO_XXX */
int rate; /* 通知レート (秒単位) */
int resolution; /* MOUSE_RES_XXX, 不明の場合は -1 */
int accelfactor; /* 加速率 */
int level; /* ドライバの機能レベル */
int packetsize; /* データパケットの長さ */
unsigned char syncmask[2]; /* 同期ビット */
} mousemode_t;
.Ed
.Pp
.Dv protocol
フィールドは、ユーザプログラムがマウスデータを読みとる時に、
その機器の状態を返す形式を表します。
機能レベル 0 では、
.Dv MOUSE_PROTO_MSC
であり、機能レベル 1 では、
.Dv MOUSE_PROTO_SYSMOUSE
です。
.Pp
.Dv rate
フィールドは、常に -1 です。
.Pp
.Dv resolution
フィールドは、常に -1 です。
.Pp
.Dv accelfactor
フィールドは、常に 0 です。
.Pp
.Dv packetsize
フィールドは、データパケットの長さを表します。これは機能レベルに
よって変わります。
.Pp
.Bl -tag -width level_0__ -compact
.It Em レベル 0
5 バイト
.It Em レベル 1
8 バイト
.El
.Pp
配列
.Dv syncmask
は、データパケットの先頭バイトを検出するための、ビットマスクとパターンを
保持します。
.Dv syncmask[0]
はビットマスクで、調べるバイトと AND を取ります。この結果が
.Dv syncmask[1]
と等しい場合、そのバイトはデータパケットの先頭バイトらしいと言えます。
この方法で先頭バイトを検出するやり方は 100% 確実とは言えません。
よって、これは参考扱いにするべきと注意をしておきます。
.Pp
.It Dv MOUSE_SETMODE Ar mousemode_t *mode
このコマンドは、マウスドライバの現在の機能パラメータを
.Ar mode
で指定した値に変更します。
.Dv level
だけが変更可能です。他のフィールドに値を設定してもエラーは出ませんが、
何の効果も及ぼしません。
.\" .Pp
.\" .It Dv MOUSE_GETVARS Ar mousevar_t *vars
.\" .It Dv MOUSE_SETVARS Ar mousevar_t *vars
.\" These commands are not supported by the
.\" .Nm
.\" driver.
.Pp
.It Dv MOUSE_READDATA Ar mousedata_t *data
.It Dv MOUSE_READSTATE Ar mousedata_t *state
これらのコマンドは
.Nm
ドライバではサポートされません。
.Pp
.It Dv MOUSE_GETSTATE Ar mousestatus_t *status
このコマンドはボタンの現在の状態と動きのカウントを
.Xr mouse 4
で定義された構造体で返します。
.El
.Ss コンソールとコンソール制御 Ioctl
ユーザプログラムは、現在の仮想コンソールに対してコンソール
.Fn ioctl
システムコールを発行し、マウスポインタを制御します。コンソール
.Fn ioctl
はまた、ボタンが押された時に
.Xr signal 3
を受け取る手段をユーザプロセスに提供します。
.Pp
マウスデーモン
.Xr moused 8
は、
コンソール制御デバイス
.Pa /dev/consolectl
に対して
.Fn ioctl
システムコールを用いることにより、
マウスの動きとボタンの状態を含むマウスの動作をコンソールに通知します。
.Pp
両方のクラスの
.Fn ioctl
コマンドとも、以下の引数を取る
.Dv CONS_MOUSECTL
として定義されています。
.Bd -literal
struct mouse_info {
int operation;
union {
struct mouse_data data;
struct mouse_mode mode;
struct mouse_event event;
} u;
};
.Ed
.Pp
.Bl -tag -width operation -compact
.It Dv operation
これは以下のどれか 1 つを取ります。
.Pp
.Bl -tag -width MOUSE_MOVEABS -compact
.It Dv MOUSE_SHOW
マウスカーソルを有効にして表示します。
.It Dv MOUSE_HIDE
マウスカーソルを無効にして隠します。
.It Dv MOUSE_MOVEABS
マウスカーソルを
.Dv u.data
で与えた位置に移動させます。
.It Dv MOUSE_MOVEREL
現在の位置に、
.Dv u.data
で与えた値を加えた位置に移動させます。
.It Dv MOUSE_GETINFO
現在の仮想コンソールにおけるマウスの現在の位置と、ボタンの状態を
.Dv u.data
に収めて返します。
.It Dv MOUSE_MODE
これは、
.Xr signal 3
を設定し、現在のプロセスにボタンが押されたことを通知します。
シグナルは
.Dv u.mode
に収められて通知されます。
.El
.Pp
ここまでの機能は仮想コンソールに対するものです。これ以後に定義する機能は
コンソール制御ドライバに対するもので、
.Xr moused 8
がマウスデータをコンソールドライバに渡すために用います。
.Pp
.Bl -tag -width MOUSE_MOVEABS -compact
.It Dv MOUSE_ACTION
.It Dv MOUSE_MOTIONEVENT
これらの機能は
.Dv u.data
に情報を取り、その上で動作します。
.Nm
ドライバがオープンされている場合、マウスデータは
.Nm
ドライバに送られます。
.Dv MOUSE_ACTION
はボタン押し下げ動作を一緒に行ない、要求がある場合はシグナルを送ります。
現在のコンソールがテキストインタフェースを持つ場合、カットアンドペースト
処理を行ないます。
.It Dv MOUSE_BUTTONEVENT
.Dv u.data
で、ボタンの種類とそのクリックカウント数を指定します。コンソールドライバは
その情報を用い、要求がある場合はシグナルを送り、コンソールが
テキストインタフェースを持つ場合は、カットアンドペースト処理を行ないます。
.El
.Pp
.Dv MOUSE_MOTIONEVENT
.Dv MOUSE_BUTTONEVENT
は、新しいインタフェースで、この 2 つを一緒に使うことを想定して
作られています。これらは
.Dv MOUSE_ACTION
ひとつで行なわれている機能を置き換えるためのものです。
.Pp
.It Dv u
この共用体は、以下のいずれかです。
.Pp
.Bl -tag -width data -compact
.It Dv data
.Bd -literal
struct mouse_data {
int x;
int y;
int z;
int buttons;
};
.Ed
.Pp
.Dv x ,
.Dv y ,
.Dv z
は、それぞれの方向に対するマウスの移動を表します。
.Dv buttons
はボタンの状態を示します。ビット 0 からビット 30 までで最大 31 個の
ボタンの状態を表すことができます。ボタンが押されていると、対応する
ビットがセットされます。
.Pp
.It Dv mode
.Bd -literal
struct mouse_mode {
int mode;
int signal;
};
.Ed
.Pp
.Dv signal
フィールドは、プロセスに送るシグナルを指定します。この値は
.Ao Pa signal.h Ac
で定義された値のうちのひとつである必要があります。
.Dv mode
フィールドは現在は使用されていません。
.Pp
.It Dv event
.Bd -literal
struct mouse_event {
int id;
int value;
};
.Ed
.Pp
.Dv id
フィールドは、
.Dv u.data.buttons
と同じように、ボタン番号を指定します。
1 ビット/ボタンだけを設定できます。
.Dv value
フィールドは、クリック数を保持しています。これは、ユーザがボタンを
連続して押した回数です。
.Pp
.El
.El
.Sh 関連ファイル
.Bl -tag -width /dev/consolectl -compact
.It Pa /dev/consolectl
コンソールを制御するデバイス
.It Pa /dev/sysmouse
仮想化されたマウスドライバ
.It Pa /dev/ttyv%d
仮想コンソール
.El
.Sh 関連項目
.Xr vidcontrol 1 ,
.Xr ioctl 2 ,
.Xr signal 3 ,
.Xr mouse 4 ,
.Xr moused 8
.Sh 歴史
.Nm
マニュアルページは、
.Fx 2.2
で初めて現れました。
.Sh 作者
このマニュアルは
.An John-Mark Gurney Aq gurney_j@efn.org
.An Kazutaka Yokota Aq yokota@FreeBSD.org
が書きました。
.\" translated by Norihiro Kumagai kuma@nk.rim.or.jp 99-7-18