X Window System コアプロトコル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/19 17:13 UTC 版)
グラブ
グラブ(grab)とは、キーボードとマウスの全イベントを1つのクライアントに送信する状態である。クライアントは、キーボードのグラブ、マウスのグラブ、あるいは両方のグラブを要求できる。サーバがその要求を満たす場合、全キーボード/マウス・イベントはグラブしたクライアントに(グラブをやめるまで)送られる。その間、他のクライアントはそれらイベントを受け取れない。
グラブ要求時、クライアントはグラブウィンドウを指定する。全イベントはグラブしているクライアントがグラブウィンドウに関連しているかのように送信される。しかし、他のクライアントはたとえグラブウィンドウを選択していてもイベントを受け取れない。グラブには、以下の2種類がある。
- アクティブ
- グラブは即座に効力を発揮する。
- パッシブ
- グラブは事前に指定されたキーまたはマウスボタンが押下されたときのみ効力を発揮し、解放された時点で終了する。
クライアントはキーボードかマウスポインタ、あるいは両方についてグラブ状態を確立できる。グラブ要求にはキーボードやマウスポインタのフリーズ要求を含めることもできる。グラブとフリーズの違いは、グラブがイベント受信者を変更するのに対して、フリーズはイベントの配信そのものを停止する点である。デバイスがフリーズされると、それが生成するイベントはキューに格納され、通常はフリーズ状態が解除されたときに溜めておいたイベント群が送信される。
マウスポインタのイベントの場合、イベント配信に影響を与える別の要素として、イベントマスクがある。これは、イベントの種類ごとに配信するか捨てるかを指定するものである。
グラブ要求には、グラブが確立していない状態でグラブしようとしているクライアントにイベントが送られようとしたとき、どうすべきかを指定するフィールドもある。特に、クライアントはそのようなイベントを普通に送信してもらうか、グラブに従って送信してもらうかを指定できる。これらの状況は見た目にも異なる結果となる。例えば、クライアントが通常状態では第一ウィンドウでキーボードイベントを受け取っていて、第二ウィンドウによるキーボードのグラブを要求したとする。イベントを第一ウィンドウに送信するかグラブウィンドウ(第二ウィンドウ)に送信するかはグラブ要求のパラメータに依存する。
クライアントはサーバ全体のグラブを要求することもできる。この場合、グラブクライアントからの要求以外は受け付けなくなる。
|
- ^ Robert W. Scheifler and James Gettys: X Window System: Core and extension protocols, X version 11, releases 6 and 6.1, Digital Press 1996, ISBN 1-55558-148-X
- ^ RFC 1013
- ^ Grant Edwards. An Introduction to X11 User Interfaces
- ^ Jim Gettys. Open Source Desktop Technology Road Map
- ^ comp.fonts FAQ: X11 Info
- ^ X Logical Font Description Conventions
- ^ Matthieu Herrb and Matthias Hopf. New Evolutions in the X Window System.
- ^ Ghostview: Interface with ghostscript
- ^ David Rosenthal. Inter-Client Communication Conventions Manual. MIT X Consortium Standard, 1989
- ^ a b Freedesktop window manager specification
- X Window System コアプロトコルのページへのリンク