gpm - 仮想コンソール用のカット&ペーストユーティリティ
概要
gpm [ オプション ]
説明
このパッケージは、Linux コンソールで実行されるアプリケーション用の便利なマウスサーバーになることを目指しています。 これは「selection」パッケージに基づいており、そのコードの一部は「selection」から取られています。このパッケージは、「selection」のカット&ペーストメカニズムの代替として機能することを意図しており、追加の機能も提供します。「selection」パッケージは、2つのマウスボタンを使用して Linux で最初のカット&ペーストの実装を提供し、カットバッファーは引き続き「selection バッファー」または単に「selection」と呼ばれます。以下は、優先情報源である texinfo ファイルから抽出されたものです。
\`gpm' 実行可能ファイルは、デーモンとして機能するように設計されています(したがって、\`gpmd' という名前の方が適切です)。このセクションでは、\`gpm' のコマンドラインオプションについて説明し、その内部構造は次のセクションで説明します。
\`ioctl(TIOCLINUX)' システムコールにおける制限のため、\`gpm' はスーパーユーザーとして実行する必要があります。これらの制限は、1.1 カーネルの最新バージョンに追加され、selection および画面ダンプに関連するセキュリティホールを修正しました。
サーバーは、ユーザーの好みに合わせて構成でき、マウスを使用するすべてのアプリケーションは、サーバーの動作を継承します。バージョン 1.02 から 1.19.2 までは、システムコンソールにログインしているすべてのユーザーが、-q オプションを使用してマウスの動作を変更することができました。ただし、セキュリティ上の理由から、これはもはやできません。
0.97 以降、サーバープログラムはバックグラウンドで実行されます。\`gpm' を停止するには、-k コマンドラインスイッチで再度実行できますが、`killall gpm` の方が良い場合があります。
特殊コマンド
バージョン 1.10 では、特定の状況で特殊コマンドを実行する機能が追加されました。特殊コマンドは、デフォルトではシステムの再起動と停止ですが、ユーザーは自分の好みに合わせて指定できます。マウスを使用してコマンドを呼び出す機能は、プログラマーにとって非常に便利です。キーボードがロックされ、システムを正常な状態に戻すためにネットワークが利用できない場合に、クリーンなシャットダウンを実行できます。
特殊コマンドは、左ボタンと右ボタンを3回クリックすることで切り替えられます。これは、通常のマウス操作ではありえないことです。3回クリックする最も簡単な方法は、一方のボタンを押しながら、もう一方のボタンを3回クリックすることです。特殊処理が切り替えられると、コンソールにメッセージが表示され(スピーカーがある場合は、2回ビープ音が鳴ります)。ユーザーがすべてのボタンを放して、3秒以内に一方のボタンを再度押すと、ボタンに対応する特殊コマンドが実行されます。
デフォルトの特別なコマンドは次のとおりです。
左ボタン
initプロセスにシグナルを送信してシステムを再起動します。
中央ボタン(ある場合)
^ sbin/shutdown -h nowを実行します。
右ボタン
^ sbin/shutdown -r nowを実行します。
^ Sコマンドラインスイッチは、特別なコマンド処理を有効にし、3つの特別なコマンドを変更できるようにします。デフォルトのコマンドを受け入れるには、-S ""(つまり、空の引数を指定します)を使用します。独自のコマンドを指定するには、コロンで区切られたリストを使用して、左、中央、右のボタンに関連付けられているコマンドを指定します。コマンドのいずれかが空の場合、それは「initプロセスにシグナルを送信する」と解釈されます。この特定の操作は、外部コマンドの実行に加えてサポートされています。これは、まれにバグが発生してシステムがフォークできなくなる場合があるためです。このような場合、プログラマーはシステムをシャットダウンできるようにする必要があり、実行中のプロセスからinitを強制終了することは、システムをシャットダウンする唯一の方法です。
例として、-S ":telinit 1:/sbin/halt"は、左ボタンにinitの強制終了、中央ボタンにシングルユーザーモードへの移行、右ボタンにシステムの停止を関連付けます。
システム管理者は、gpmはスーパーユーザー権限で実行されるため、特別なコマンドには注意する必要があります。特別なコマンドは、マウスに物理的にアクセスできるのは信頼できる人のみであるコンピュータに最適です。
コマンドラインオプション
利用可能なコマンドラインオプションは次のとおりです。
-a accel
1つのモーションイベントがdeltaより長くなった場合に、使用する加速度値を設定します(-dを参照)。
-A[limit]
選択ペーストを無効にして起動します。これはセキュリティ対策を目的としています。考えられる攻撃として、悪意のあるシェルコマンド(rm -rf /など、終端の改行を含む)を選択バッファーに挿入し、被害者が中央のマウスボタンをクリックするだけです。バージョン1.17.2では、これはより一般的な老化メカニズムに発展しています。gpmデーモンは、一定期間の非アクティブ状態の後、選択ペーストを自動的に無効に(老化)できます。このモードを有効にするには、オプションのlimitパラメータ(間にスペースを入れない!)を指定します。これは、選択が有効でペースト可能な時間(秒単位)と解釈されます。バージョン1.15.7では、disable-pasteと呼ばれる単純なプログラムが提供されています。これは、/etc/profileに次のコードを追加することで、複数のユーザーがコンソールで作業できるようにするのに役立ちます。
`case $( /usr/bin/tty ) in
/dev/tty[0-9]*) /usr/bin/disable-paste ;;
esac`
-b baud
ボーレートを設定します。
-B sequence
ボタンシーケンスを設定します。123は通常のシーケンスです。321は左利きの人に使用でき、132は2ボタンマウス(特にEmacs内)で役立ちます。すべてのボタンの順列が許可されます。
-d delta
delta値を設定します。1つのモーションイベントがdeltaより長くなった場合、accelが乗数として使用されます。(2以上である必要があります)
-D 起動時に自動的にバックグラウンド処理に移行せず、メッセージを標準エラー出力にログ出力します。これはデバッグに役立ちます。以前のリリースでは、これはコンパイル時のオプションとして実装されていました。
-g number
グライドポイントデバイスを使用している場合、指定されたボタンをタップすることでエミュレートします。number は `1`、`2`、または `3` であり、`-B` ボタンのリマッピングが実行される前のボタン番号を指します。このオプションは、mman および ps2 デコーディングに適用されます。デフォルトではボタンはエミュレートされません。これは、ps2 タッピングが一部の通常の ps2 マウスと互換性がないためです。
-h コマンドラインオプションの概要を表示します。
-i interval
複数のクリックに対する上限時間として使用する間隔を設定します。ボタンを離してからボタンを押すまでの時間がこの制限よりも短い場合、その操作はダブルクリックまたはトリプルクリックと見なされます。時間はミリ秒単位です。
-k 実行中の gpm を停止します。これは、busmouse ユーザーが X を実行する前に gpm を停止するために使用できます (ただし、`-R` オプションを使用するか、カーネルからシングルオープン制限を削除しない限り)。
-l charset
`inword()` ルックアップテーブルで使用する文字セットを選択します。charset 引数は、文字のリストです。`-` は範囲を指定するために使用され、`\` は次の文字をエスケープしたり、8 進コードを提供するために使用されます。文字セットには表示可能な文字のみを含めることができます。これは、制御文字がテキストモードビデオメモリに表示できないため、選択時に使用できません。
-m filename
開くマウスファイルを選択します。`-t` と `-o` の前にある必要があります。
-M 複数のモードを有効にします。デーモンは 2 つの異なるマウスデバイスを読み取ります。以降のすべてのオプションは、2 番目のデバイスを参照し、先行するオプションは最初のデバイスで使用されます。このオプションは、リピーター (`-R`) オプションを自動的に強制します。
-o list-of-extra-options
このオプションは、mount コマンドの `-o` オプションと同様に機能します。これは、各マウスタイプに固有の「追加オプション」のリストを指定するために使用されます。リストはカンマで区切られます。オプション `dtr`、`rts`、または `both` は、シリアル初期化で使用され、以前の gpm バージョンと互換性のあるようにモデムラインを切り替えます。ただし、`-o dtr` を非プレーンシリアルマウスタイプで使用すると、エラーが発生する場合があります。また、`-o` は `-m` と `-t` の後に追加する必要があります。
-p 選択中にポインタを表示するように強制します。これは `selection-1.7` の動作ですが、場合によっては混乱を招くことがあります。デフォルトでは、ポインタを表示しないため、これも混乱を招く可能性があります。
-r number
感度をモーションのパーセンテージとして設定します (1 ~ 100、デフォルトは 10)。より小さい数値を設定すると、カーソルの動きが遅くなります。カーソルの動きを速くするには、`-a` を使用します。
-R[name]
`gpm` をリピーターとして動作させます。グラフィックモード中に受信したマウスデータは、`/dev/gpmdata` FIFO にプロトコル名で出力されます。オプションの引数として名前を指定できます (スペースは入れないでください)。原則として、`-t` オプションで使用できるのと同じ名前を使用できますが、一部のプロトコルへのリピートはまだ実装されていない可能性があります。さらに、`raw` を名前として指定することもできます。これにより、マウスデータをプロトコル変換なしでバイト単位でリピートします。名前が省略された場合、デフォルトは `msc` になります。gpm をリピーターモードで使用すると、X サーバーを構成して、その FIFO をマウスデバイスとして使用できます。このオプションは、busmouse ユーザーがシングルオープン制限を回避するために役立ちます。また、デュアルモードマウスを強制的に使用し、ビデオモードを切り替えるときに常に中央ボタンを押している状態にする必要のある、厄介なマウスを管理する簡単な方法でもあります。このオプションは、`-M` オプションによって強制的に有効になります。
-s 番号
マウスデバイスのサンプリングレートを設定します。
-S コマンド
特殊コマンド処理を有効にし、オプションでコロン区切りのリストとしてカスタムコマンドを指定します。詳細な説明については上記を参照してください。
-t 名前
マウスタイプを設定します。-t help を使用して、許可されているタイプのリストを取得します。-m を使用してマウスデバイスを選択した後で -t を使用します。
-v
バージョン情報を表示して終了します。
-2
強制的に2ボタンにします。これは、ミドルボタンがある場合、それが右ボタンとして扱われることを意味します。
-3
強制的に3ボタンにします。デフォルトでは、マウスは2ボタンマウスと見なされ、ミドルボタンが押されるまでその状態が続きます。3ボタンがある場合、右ボタンは選択範囲を拡張するために使用され、ミドルボタンは選択範囲を貼り付けるために使用されます。注意:-3 オプションを2ボタンマウスで使用すると、選択範囲を貼り付けられなくなります。
動作
テキストを選択するには、左マウスボタンを押したままマウスをドラッグします。テキストを同じまたは別のコンソールに貼り付けるには、ミドルボタンを押します。右ボタンは、xterm でのように、選択範囲を拡張するために使用されます。
2ボタンマウスでは、右ボタンを使用してテキストを貼り付けます。
ダブルクリックとトリプルクリックで、単語全体と行全体を選択します。視覚的なフィードバックを得るために、-p オプションの使用をお勧めします。
行の末尾に空白があり、その行に他のテキストがない場合、行の残りの部分が自動的に選択されます。複数の行が選択された場合、各行の末尾にある強調表示された空白は、選択バッファーから削除されます。
選択内容を含む仮想コンソールに出力があると、画面上の強調表示された選択内容が消去され、表示の一貫性が維持されますが、貼り付けバッファーの内容は影響を受けません。
選択メカニズムは、仮想コンソールがグラフィックスモードに設定されている場合(たとえば、X11を実行している場合)には無効になり、テキストモードに戻ると再度有効になります。(ただし、後述の「バグ」セクションを参照してください。)
バグ
^ pm サーバーは、Xとの連携に問題がある場合があります。マウスがシングルオープンデバイス(つまり、バスマウス)の場合、Xを開始する前に gpm を停止するか、-R オプション(上記を参照)を使用する必要があります。gpm を停止するには、gpm -k を実行します。この問題は、シリアルマウスには適用されません。
同じシステムで gpm の2つのインスタンスを実行することはできません。2つのマウスがある場合は、-M オプション(上記を参照)を使用します。
現在のコンソールがグラフィックモードの場合、gpm はテキストモードに戻るまでスリープします(-R が使用されていない場合)。したがって、クライアントに応答しません。いずれにせよ、マウス操作を積極的に行うクライアントが隠れたコンソールに現れる可能性は低いでしょう。
^ pm に付属するクライアントは更新されていません。そのため、それらを使用すると潜在的なセキュリティリスクが生じる可能性があります。
著者
Andrew Haylett <_> (元の選択コード) Ian Zimmerman <_> (旧メンテナー) Alessandro Rubini <_> (旧メンテナー(現在も多大な貢献をしています)) Nico Schottelius <_> (メンテナー)
選択機能と gpm の両方に対して、多くの貢献者がいます。
メンテナー
現在のメンテナーは Nico Schottelius です。しかし、Alessandro Rubini とメーリングリストの助けがなければ、gpm を維持することは不可能でしょう。開発メーリングリストは _ でアクセスできます。メーリングリストの詳細については、gpm のソース配布に含まれる README ファイルを参照してください。
ファイル
/var/run/gpm.pid 実行中の `gpm` の PID
/dev/gpmctl クライアント用の制御ソケット
/dev/gpmdata リピーター(`-R`)デーモンによって書き込まれる FIFO
関連項目
gpm-types(7) 現在の `gpm` でサポートされているポインタタイプの説明
^ pm に関する info ファイルには、より詳細な情報が記載されており、gpm クライアントの作成方法が説明されています。