XUngrabButton(3) ポインタデバイスをグラブする

Other Alias

XGrabButton

書式

XGrabButton(display, button, modifiers, grab_window, owner_events, event_mask,

                pointer_modekeyboard_modeconfine_tocursor)

      Display *display;

      unsigned int button;

      unsigned int modifiers;

      Window grab_window;

      Bool owner_events;

      unsigned int event_mask;  


      int pointer_modekeyboard_mode;

      Window confine_to

      Cursor cursor

XUngrabButton(display, button, modifiers, grab_window)

      Display *display;

      unsigned int button;

      unsigned int modifiers;

      Window grab_window;

引き数

button
グラブまたは解放するポインタのボタン、または AnyButton を指定する。
confine_to
ポインタを閉じ込めるウィンドウ、あるいは None を指定する。
cursor
表示されるべきカーソル、あるいは None を指定する。
display
X サーバへの接続を指定する。
event_mask
クライアントに報告するポインタイベントを指定する。 このマスクは、有効なポインタイベントのマスクビットのビットごとの論理和 を取ったものである。
grab_window
グラブウィンドウを指定する。
keyboard_mode
後で行うキーボードイベント処理を指定する。 GrabModeSync または GrabModeAsync を指定できる。
modifiers
キーマスクの集合または AnyModifier を指定する。 このマスクは、有効なキーマスクビットのビットごとの論理和を取ったもので ある。
owner_events
イベントマスクで選択されている場合にポインタイベントを通常通り報告する のか、グラブウィンドウについて報告するのかを示す真偽値を指定する。
pointer_mode
後で行うポインタイベントの処理を指定する。 GrabModeSyncGrabModeAsync を指定できる。

説明

関数 XGrabButton はパッシブなグラブを作る。 将来、以下の条件が全て真になった場合にポインタはアクティブにグラブされ( XGrabPointer による)、ボタンが押された時刻が最終ポインタグラブ時刻に設定され( ButtonPress イベントで送られる)、 ButtonPress が報告される。
  • 指定されたモディファイアキーが論理的に押されており、他のボタンやモディ ファイアキーがどれも論理的には押されていない時に、ポインタがグラブされて おらず、かつ指定したボタンが論理的に押されている。
  • grab_window がポインタを含んでいる。
  • confine_to ウィンドウが(もしあれば)表示可能である。
  • grab_window のどの祖先ウィンドウにおいても、同じボタン/ボタンの組合せ に対するパッシブなグラブが存在しない。

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

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

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

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

XGrabButton はエラー BadCursor, BadValue, BadWindow を起こすことがある。

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

XUngrabButton はエラー BadValue, BadWindow を起こすことがある。

返り値

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