XGrabButton(3X11)

名前
XGrabButton, XUngrabButton - ポインタデバイスをグラブする

書式
XGrabButton(display, button, modifiers, grab_window, owner_events, event_mask,
                pointer_mode, keyboard_mode, confine_to, cursor)
      Display *display;
      unsigned int button;
      unsigned int modifiers;
      Window grab_window;
      Bool owner_events;
      unsigned int event_mask;
      int pointer_mode, keyboard_mode;
      Window confine_to;
      Cursor cursor;

XUngrabButton(display, button, modifiers, grab_window)
      Display *display;
      unsigned int button;
      unsigned int modifiers;
      Window grab_window;

引き数

button
    グラブまたは解放するポインタのボタン、または を指定する。

confine_to
    ポインタを閉じ込めるウィンドウ、あるいは を指定する。

cursor
    表示されるべきカーソル、あるいは を指定する。

display
    X サーバへの接続を指定する。

event_mask
    クライアントに報告するポインタイベントを指定する。 このマスクは、有効なポインタイベントのマスクビットのビットごとの論理和 を取ったものである。

grab_window
    グラブウィンドウを指定する。

keyboard_mode
    後で行うキーボードイベント処理を指定する。 または を指定できる。

modifiers
    キーマスクの集合または を指定する。 このマスクは、有効なキーマスクビットのビットごとの論理和を取ったもので ある。

owner_events
    イベントマスクで選択されている場合にポインタイベントを通常通り報告する のか、グラブウィンドウについて報告するのかを示す真偽値を指定する。

pointer_mode
    後で行うポインタイベントの処理を指定する。 か を指定できる。

説明
関数 はパッシブなグラブを作る。 将来、以下の条件が全て真になった場合にポインタはアクティブにグラブされ( による)、ボタンが押された時刻が最終ポインタグラブ時刻に設定され( イベントで送られる)、 が報告される。

•   指定されたモディファイアキーが論理的に押されており、他のボタンやモディ ファイアキーがどれも論理的には押されていない時に、ポインタがグラブされて おらず、かつ指定したボタンが論理的に押されている。

•   grab_window がポインタを含んでいる。

•   confine_to ウィンドウが(もしあれば)表示可能である。

•   grab_window のどの祖先ウィンドウにおいても、同じボタン/ボタンの組合せ に対するパッシブなグラブが存在しない。

残りの引き数の解釈は と同じである。 ポインタの論理状態が全てのボタンが離された状態になったとき、アクティブ なグラブは自動的に終了する(論理的なモディファイアキーの状態には依存し ない)。

デバイスのイベント処理が凍結されている場合、デバイスの論理状態(クライ アントが受け取る)が物理的な状態とずれることがある。

同じクライアントの同じウィンドウの同じボタン/キーの組合せを使うことで、 このリクエストは以前の全てのグラブを上書きする。 引き数 modifiers に を指定することは、モディファイアの可能な組合せ全てに対してグラブの リクエストを発行することと等価である(モディファイアを使わないことも組 合せに含まれる)。 指定された全てのモディファイアがこの時点でキーコードを割り当てられてい る必要はない。 引き数 button に を指定することは、可能なボタン全てに対してリクエストを発行することと 等価である。 これ以外の場合は、指定されたボタンが現在物理ボタンに割り当てられている 必要はない。

同じウィンドウ上の同じボタン/キーの組合せに対して他のクライアントが既に を発行している場合は、エラー となる。 グラブが干渉する何らかの組合せがある場合、 や は必ず失敗し、エラー となる(グラブは確立されない)。 はアクティブなグラブに対しては無効である。

はエラー を起こすことがある。

関数 は、指定したウィンドウのパッシブなボタン/キーの組合せがクライアントに よってグラブされている時、これを解放する。 引き数 modifiers に を指定することは、モディファイアの可能な組合せ全てに対してグラブ解放の リクエストを発行することと等価である。この組合せはモディファイアを使わ ない組合せも含む。 引き数 button に を指定することは、可能なボタン全てに対してリクエストを発行することと等 価である。 はアクティブなグラブに対しては無効である。

はエラー を起こすことがある。

返り値

引き数 Cursor の値が、定義されている Cursor を指していない。

数値の中にリクエストの許容範囲を越えるものがある。引き数に対して特定の範
    囲が指定されない限り、引き数の型の全ての範囲が許される。選択肢として定義 されている引き数は、このエラーを起こすことがある。

引き数 Window の値が、定義されている Window を指していない。

関連項目
XAllowEvents(3X11), XGrabPointer(3X11), XGrabKey(3X11), XGrabKeyboard(3X11),
Xlib - C Language X Interface