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 のどの祖先ウィンドウにおいても、同じボタン/ボタンの組合せ に対するパッシブなグラブが存在しない。

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

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

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

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

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

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

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

返り値

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

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

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

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