10.5.1 Pointer Button Events

The following describes the event processing that occurs when a pointer button press is processed with the pointer in some window w and when no active pointer grab is in progress.
下記では、ポインターボタンプレスが何らかのウインドウ w へのポインター付きで処理されるとき、そしていかなるアクティブグラブも実行中ではない時におこるイベント処理について述べる。

The X server searches the ancestors of w from the root down, looking for a passive grab to activate. If no matching passive grab on the button exists, the X server automatically starts an active grab for the client receiving the event and sets the last-pointer-grab time to the current server time. The effect is essentially equivalent to an XGrabButton() with these client passed arguments:
X サーバーは、アクティブになるパッシブグラブを探して、ルートの下へ w の上位階層ウインドウを検索する。 もし、ボタンに関連するパッシブグラブがない場合は、X サーバーは自動的にクライアントがイベントを受け取るためのアクティブグラブを始動して現在のサーバー時間に最終ポインタグラブ時刻を設定する。 結果は、本質的にクライアントが XGrabButtonに以下の引数を渡したことに相当する:

Argument Value

w The event window
event_mask The client's selected pointer events on the event window
pointer_mode GrabModeAsync
keyboard_mode GrabModeAsync
owner_events True, on the event window, otherwise False
confine_to None
cursor None

The active grab is automatically terminated when the logical state of the pointer has all buttons released. Clients can modify the active grab by calling XUngrabPointer() and XChangeActivePointerGrab().
ポインターの論理的な状態がすべてのボタンが解放された時に、アクティブなグラブは、自動的に終了される。 クライアントは XUngrabPointer、および XChangeActivePointerGrabを呼ぶことによってアクティブグラブを変更することができる。

Next: Keyboard and Pointer Events

Christophe Tronche, ch.tronche@computer.org