MOUSED(8)

名称
moused - マウスデータをコンソールドライバに渡す

書式
moused [-DPRacdfs] [-I file] [-F rate] [-r resolution] [-S baudrate] [-a X[,Y]] [-C threshold] [-m N=M] [-w N] [-z target] [-t mousetype] [-3 [-E timeout]] -p port

moused [-Pd] -p port -i info

解説
moused ユーティリティとコンソールドライバは協力し、 テキストコンソールやユーザプログラムにおけるマウス操作をサポートします。 マウスの仮想化とユーザプログラムへのマウスデータの提供は標準フォーマット にて行われます ( sysmouse(4) を御覧ください)。

マウスデーモンはマウスデータの読みとりのために指定されたポートを監視し、 解釈したデータを ioctl を介してコンソールドライバに渡します。 マウスデーモンは、移動、ボタンの押し/離しイベント、 存在するならばローラやホイールの移動も報告します。 ローラ/ホイールの移動は ``Z'' 軸での移動として報告されます。

マウスポインタが vidcontrol(1) によって有効にされていれば、 コンソールドライバはマウスポインタをスクリーンに表示し、 カットとペーストの機能を提供します。 sysmouse(4) をユーザプログラムがオープンすると、コンソールドライバは マウスデータをこのデバイスに送るので、 ユーザプログラムはこのデータを使用できます。

マウスデーモンがシグナル SIGHUP を受けとると、マウスポートを再オープンし、自己を再初期化します。 システムがサスペンドされている間にマウスの挿抜を行なった場合に有用です。

以下のオプションがあります:

-3  2 ボタンマウスで 3 番目(中)のボタンをエミュレートします。 物理的なボタンで左と右のものを同時に押すとエミュレートされます。

-C threshold
    ダブルクリック速度をボタンクリック間最大インターバルとしてミリ秒で指定します。 このオプションを指定しないと、デフォルト値は 500 ミリ秒が仮定されます。 このオプションは、 テキストモードコンソールのカットとペーストの操作においてのみ有効です。 sysmouse(4) を介してマウスデータを得るユーザプログラムは影響を受けません。

-D  シリアルポートの DTR を下げます。 このオプションが有効なのは、 mousesystems がマウスプロトコルとして選択されている場合のみです。 mousesystems モードで 3 ボタンマウスを操作するためには、 DTR ラインを落とすことが必要かもしれません。

-E timeout
    第 3 ボタンエミュレーション (前述) が有効なとき、2 つのボタンが同時に押されたかを判定する前に moused ユーティリティは最長 timeout ミリ秒待ちます。 デフォルトのタイムアウトは 100 ミリ秒です。

-F rate
    サポートされていれば、デバイスのレポート頻度(秒あたりの回数)を設定します。

-I file
    moused ユーティリティのプロセス ID を、指定されたファイルに書きます。 このオプションを指定しないと、プロセス ID は /var/run/moused.pid に格納されます。

-P  シリアルマウス識別時に、 プラグアンドプレイ COM デバイス列挙処理を開始しません。 -i オプションと共にこのオプションが指定された場合、 moused ユーティリティはシリアルマウスに関する有用な情報を表示できません。

-R  シリアルポートの RTS を下げます。 このオプションが有効なのは mousesystems がプロトコルタイプとして、後述する -t オプションで指定されている場合のみです。 これは前記 -D オプションと共によく使用されます。 mousesystems モードで 3 ボタンマウスを操作するためには、 RTS と DTR のラインを共に下げる必要があるかもしれません。

-S baudrate
    シリアルポートの速度を指定します (1200 から 9600)。 全シリアルマウスがこのオプションをサポートするわけではありません。

-a X[,Y]
    マウスの入力を加速または減速します。 線型加速のみです。 1.0 より小さい値は、しばらく減速します。 1.0 より大きい値は、加速します。 1 個の値だけを指定した場合、両方の座標軸での加速を設定します。

-c  マウスによっては、中ボタンを押したイベントを、 左右ボタンが押されたかのようにレポートするものがあります。 このオプションはこれを扱うものです。

-d  デバッグ用のメッセージを有効にします。

-f  デーモンにならずに、フォアグラウンドプロセスとして実行します。 テストやデバッグに有用です。

-i info
    指定された情報を表示し終了します。指定可能な情報を以下に示します:

    port
        ポート(デバイスファイル)名、例えば /dev/cuaa0, /dev/mse0, /dev/psm0 です。
    if  インタフェースタイプ: serial, bus, inport, ps/2 です。
    type
        プロトコルタイプ。 -t オプションの説明の後でリストされているものか、 ドライバが sysmouse データフォーマット標準をサポートする場合には sysmouse です。
    model
        マウスモデル。 moused ユーティリティは常にモデルを識別できるわけではありません。
    all 上記全部。ポート、インタフェース、タイプ、モデルをこの順に一行に表示します。

    moused ユーティリティは要求された情報を判別できない場合、 ``unknown'' か ``generic'' を表示します。

-m N=M
    物理ボタン M に論理ボタン N を割当てます。 このオプションは任意個数指定可能です。 複数の物理ボタンを単一の論理ボタンに割り当て可能です。 この場合、指定された物理ボタンのいずれかが押されている場合、 論理ボタンが押されていることになります。`=' の周りにスペースを入れてはなりません。

-p port
    マウスと通信するためのポートとして port を使います。

-r resolution
    デバイスの解像度を設定します; インチあたりのドット数または、 low, medium-low, medium-high, high のいずれかです。 全デバイスにてこのオプションがサポートされているわけではありません。

-s  シリアルラインのために 9600 ボーを選びます。 全シリアルマウスがこのオプションをサポートしているわけではありません。

-t type
    ポートに接続されているマウスのプロトコルタイプを指定します。 以下に列挙されるタイプを陽に指定するか、 auto を指定して moused ユーティリティに適切なプロトコルを自動選択させることができます。 コマンドラインにてこのオプションを指定しないと、 -t auto が仮定されます。 通常では、 moused ユーティリティがプロトコルの自動検出ができない場合に必要です ( マウスデーモンの構成) を参照。

    このオプションでプロトコルタイプを指定した場合、 前記 -P オプションが暗示され、プラグアンドプレイ COM デバイス列挙処理が無効になります。

    また、マウスを PS/2 マウスポートに接続している場合、 常に auto か ps/2 を選択すべきです。 これは、マウスのブランドやモデルとは関係ありません。 同様に、マウスをバスマウスポートに接続している場合、 auto か busmouse を選択してください。 これらのマウスではシリアルマウスプロトコルは動作しません。

    USB マウスでは、プロトコルは auto であることが必要です。他のプロトコルは USB マウスで動作しません。

    このオプションにおける有効なタイプを以下に列挙します。

    シリアルマウス:
    microsoft
        Microsoft シリアルマウスプロトコル。 大抵の 2 ボタンマウスはこのプロトコルを使用します。
    intellimouse
        Microsoft IntelliMouse プロトコル。 Genius NetMouse, ASCII Mie Mouse, Logitech MouseMan+, FirstMouse+ もこのプロトコルを使用します。 他のローラ/ホイールを持つマウスもこのプロトコル互換でしょう。
    mousesystems
        MouseSystems の 5 バイトプロトコル。 3 ボタンマウスはこのプロトコルを使用するかもしれません。
    mmseries
        MM Series マウスプロトコル。
    logitech
        Logitech マウスプロトコル。 これは古い Logitech モデルであることに注意。 新しいモデルには mouseman もしくは intellimouse を指定します。
    mouseman
        Logitech MouseMan と TrackMan のプロトコル。 3 ボタンマウスによってはこのプロトコル互換かもしれません。 MouseMan+ と FirstMouse+ は、このプロトコルではなく、 intellimouse プロトコルを使用します
    glidepoint
        ALPS GlidePoint プロトコル。
    thinkingmouse
        Kensington ThinkingMouse プロトコル。
    mmhitab
        Hitachi タブレットプロトコル。
    x10mouseremote
        X10 MouseRemote。
    kidspad
        Genius の Kidspad と Easypad のプロトコル。
    versapad
        Interlink VersaPad プロトコル。

    バスおよび InPort マウス:
    busmouse
        バスおよび InPort マウスはこのプロトコルのみ使用可能であり、 バスおよび InPort マウスはブランドに依らずこのオプションを 指定する必要があります。

    PS/2 マウス:
    ps/2
        PS/2 マウスはこのプロトコルのみ使用可能であり、 PS/2 マウスはブランドに依らずこのオプションを 指定する必要があります。

    USB マウスでは、 auto が使用可能な唯一のプロトコルであり、 ブランドにかかわらず USB マウスにはこれを指定すべきです。

-w N
    物理ボタン N が、ホイールモードボタンとして動作するようにします。 このボタンが押されている間、X 軸および Y 軸の移動は 0 と報告され、 Y 軸の移動は Z 軸の移動に割り付けられます。 後述する -z オプションを使用することにより、 Z 軸の移動を更に仮想ボタンに割り付けることができます。

-z target
    Z 軸(ローラ/ホイール)動作を別の軸や仮想ボタンに割り付けます。 有効な target は以下のいずれかです:
    x
    y   X または Y 軸の移動として、検知した Z 軸移動を報告します。
    N   仮想ボタン N および N+1 を押したイベントとして、検知した負/正の Z 軸移動をそれぞれ報告します。 物理ボタン N と N+1 が存在する必要はありません。 論理ボタンへの割り付けは Z 軸移動を仮想ボタンへ割り付けた後に行われます。
    N1 N2
        仮想ボタン N1 および N2 を押したイベントとして、検知した負/正の Z 軸移動をそれぞれ報告します。
    N1 N2 N3 N4
        2 個のホイールがあり 2 番目のホイールが水平スクロール動作を生成するために使用されるマウス、 およびユーザが加えた水平の力を検知するノブまたはスティック付きのマウスで 有用です。

        2 番目のホイールの動きは、負の向きが N3 にマップされ、正の向きが N4 にマップされます。 ボタン N3 および N4 がマウスに実在する場合、このアクションは検出されません。

        水平移動や 2 番目のローラ/ホイールの動きは常に検出されるわけではないことに 注意してください。 なぜなら、 これらをエンコードするための受け入れられた標準が無いように見えるからです。

        また、水平方向において、左が負であると考えるマウスもいれば、 逆だと考えるマウスもいることにも注意してください。 更に、2 個のホイールが両方とも垂直に塔載されており、 一方の方向がもう一方の方向とはマッチしないものもあります。

  マウスデーモンの構成
まず、使用予定マウスのインタフェースタイプを知ることが必要です。 これはマウスのコネクタを見れば分かります。 シリアルアウスは D-Sub の 9 ピンまたは 25 ピンのメスです。 バスおよび InPort のマウスは D-Sub 9 ピンのオスか丸い DIN 9 ピンコネクタです。 PS/2 マウスは小さくて丸い DIN 6 ピンコネクタです。 マウスによってはコネクタを別の形状に変換可能なコネクタが附属しています。 このようなアダプタを使用する場合には、 マウスから一番遠いコネクタの形状を見てください。 USB マウスは、平らな長方形のコネクタを持ちます。

次に決めねばならないことは、インタフェースのために使用するポートです。 バス、InPort、PS/2 マウスでは、選択肢はありません: バスおよび InPort マウスは常に /dev/mse0 を使用し、 PS/2 マウスは常に /dev/psm0 を使用します。 シリアルマウスの場合、接続可能なポートが複数ありえます。 多くの人が組み込みのシリアルポート /dev/cuaa0 をマウスに割当てます。 複数の USB マウスをシステムまたは USB ハブに接続可能です。 それらは /dev/ums0, /dev/ums1 のようにアクセス可能です。 ~ シンボリックリンク /dev/mouse でマウスの実際のポートを指すようにして、 どのマウスポートか後で簡単に分かるようにするのが良いかもしれません。

次に適切なマウスプロトコルを選択します。 moused ユーティリティはマウスタイプを自動決定可能かもしれません。 moused ユーティリティを -i オプションを付けて実行し、表示を見ます。 コマンドがプロトコルタイプを識別した場合、あなたは何も調べる必要はありません。 プロトコルタイプを指定せずにデーモンを起動可能です ( 使用例) を参照。

コマンドは、マウスドライバが sysmouse プロトコルをサポートする場合、 sysmouse と表示するかもしれません。

表示される type と model は、対象のポインティングデバイスの製品名では必ずしもありませんが、 互換性のあるデバイスの名前でしょう。

-i オプションがなにも表示しない場合、 moused ユーティリティに対して -t オプションを使用し、プロトコルタイプを指定する必要があります。 予測して試行する必要があります。 以下に経験則を示します:

1.  バスおよび InPort マウスはブランドに依らず busmouse プロトコルを使用します
2.  PS/2 マウスはブランドに依らず ps/2 プロトコルを使用します
3.  USB マウスには auto プロトコルを指定する必要があります。
4.  ほとんどの 2 ボタンシリアルマウスは microsoft プロトコルをサポートします。
5.  3 ボタンシリアルマウスは mousesystems プロトコルで動作するかもしれません。動作しない場合には、 三番目(中)ボタンが機能せずに microsoft プロトコルで動作するでしょう。 3 ボタンシリアルマウスは、期待通り三番目のボタンが動作しつつ mouseman プロトコルで動作するかもしれません。
6.  3 ボタンマウスには小さなスイッチが付いていて、 ``MS'' と ``PC'' または ``2'' と ``3'' とで選択できるできるようになっている かもしれません。 ``MS'' と ``2'' は通常 microsoft プロトコルを意味します。 ``PC'' と ``3'' は mousesystems プロトコルを選択します。
7.  マウスにローラやホイールが付いている場合、 intellimouse プロトコル互換でしょう。

マウスのために選択したプロトコルタイプが正しいかどうかテストする目的で、 現在の仮想コンソールでマウスポインタを有効にします。

    vidcontrol -m on

マウスデーモンをフォアグラウンドで開始します。

    moused -f -p _selected_port_ -t _selected_protocol_

マウスポインタがマウスの移動に伴い、 正しく移動することを確認してください。 そして、カットとペーストの機能を左、右、中のボタンを使用して確認してください。 ^C をタイプすると、コマンドは停止します。

  複数のマウス
システムに接続したマウスと同じ数だけ、マウスデーモンを同時実行可能です; 一つのマウスデーモンが一つのマウスに対応します。 ラップトップコンピュータ組み込みの PS/2 ポインティングデバイスを移動中使用し、 オフィスではドッキングステーション接続のシリアルマウスを使用する 場合に有用です。 マウスデーモンを二つ実行し、アプリケーションプログラム (例えば X Window System) に sysmouse(4) を使用させます。 するとアプリケーションプログラムは常に両マウスからマウスデータを受け取ります。 シリアルマウスが取り付けられていない場合、 対応するマウスデーモンは移動やボタン状態の変化を検出しませんので、 アプリケーションプログラムは PS/2 マウスのデーモンからのマウスデータ のみを使います。 一方この構成で両方のマウスを接続し同時に両方を動かした場合、 マウスの移動をすべて組み合わせたようにマウスポインタがスクリーン上を移動します。

関連ファイル
/dev/consolectl
    コンソール制御デバイス
/dev/mse%d
    バスおよび InPort マウスのドライバ
/dev/psm%d
    PS/2 マウスドライバ
/dev/sysmouse
    仮想化されたマウスドライバ
/dev/ttyv%d
    仮想コンソール
/dev/ums%d
    USB マウスドライバ
/var/run/moused.pid
    現在実行中の moused ユーティリティのプロセス ID
/var/run/MouseRemote
    X10 MouseRemote のイベントのための UNIX ドメインストリームソケット

使用例
    moused -p /dev/cuaa0 -i type

moused ユーティリティにシリアルポート /dev/cuaa0 に接続されたマウスのプロトコルタイプを識別させます。 成功すると、コマンドはタイプを表示しますが、 失敗すると ``unknown'' が表示されます。

    moused -p /dev/cuaa0
    vidcontrol -m on

moused ユーティリティが指定されたポートのマウスプロトコルタイプを識別可能な場合、 -t オプション無してデーモンを起動可能であり、 前記のようにマウスポインタをテキストコンソール上で有効にできます。

    moused -p /dev/mouse -t microsoft
    vidcontrol -m on

シリアルポート /dev/mouse に対してマウスデーモンを起動します。 プロトコルタイプは microsoft を -t オプションにて陽に指定しています。

    moused -p /dev/mouse -m 1=3 -m 3=1

物理ボタン 3 (右ボタン) を論理ボタン 1 (論理的に左) に、 物理ボタン 1 (左ボタン) を論理ボタン 3 (論理的に右) に、 それぞれ割当てます。 左右のボタンを事実上交換します。

    moused -p /dev/mouse -t intellimouse -z 4

Z 軸(ローラ)における負の移動をボタン 4 が押されたものとし、 Z 軸における正の移動をボタン 5 が押されたものとします。

警告
moused ユーティリティは現在別のコンソールドライバ pcvt(4) では動作しません。

パッドデバイスの多くは、 ユーザがパッド表面を ``タップ'' した場合に最初の(左) ボタンが 押されたものとします。 また、ALPS GlidePoint および Interlink VersaPad のモデルによっては、 タップ動作を 4 番目のボタンのイベントとして扱います。 このようなモデルでは、オプション ``-m 1=4'' を使用して、 他のパッドデバイスと同様の効果を得られます。

仮想コンソールでのカットとペーストの機能は、 マウスに 3 ボタンあることを仮定しています。 論理ボタン 1 (論理的に左) は、 コンソールのテキスト領域を選択してカットバッファにコピーします。 論理ボタン 3 (論理的に右) は、 選択された領域を拡張します。 論理ボタン 2 (論理的に中) は、 選択されたテキストをテキストカーソル位置にペーストします。 マウスに 2 つしかボタンが無い場合、中央の `ペースト' ボタン は使用できません。 ペースト機能を使用するためには、 -3 オプションを使用して中ボタンをエミュレートするか、 -m オプションを ``-m 2=3'' のように使用して 物理右ボタンに論理中ボタンを割当てます。

関連項目
kill(1), vidcontrol(1), keyboard(4), mse(4), pcvt(4), psm(4), screen(4), sysmouse(4), ums(4)

規格
moused ユーティリティは “Plug and Play External COM Device Specification” の一部を サポートし、PnP シリアルマウスをサポートします。 しかしながら、シリアルマウスごとに仕様充足の度合が異なりますので、 標準のバージョン 1.0 に完全に従ってはいません。 このように厳密さを欠いた方法でも、シリアルマウスの適切なプロトコルタイプ を常に決定できるわけではありません。

作者
-nosplit moused ユーティリティは、 Michael Smith <msmith@FreeBSD.org> によって書かれました。 このマニュアルは、 Mike Pritchard <mpp@FreeBSD.org> によって書かれました。 コマンドとマニュアルページを、 Kazutaka Yokota <yokota@FreeBSD.org> が更新しました。

歴史
moused ユーティリティは、 FreeBSD 2.2 から導入されました。