XGrabKey(3X11)

名前
 XGrabKey, XUngrabKey - キーボードのキーのグラブ

書式
XGrabKey(display, keycode, modifiers, grab_window, owner_events, pointer_mode,
             keyboard_mode)
      Display *display;
      int keycode;
      unsigned int modifiers;
      Window grab_window;
      Bool owner_events;
      int pointer_mode, keyboard_mode;

XUngrabKey(display, keycode, modifiers, grab_window)
      Display *display;
      int keycode;
      unsigned int modifiers;
      Window grab_window;

引き数

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

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

keyboard_mode
    キーボードイベントの後処理を指定。 あるいは を指定する。

keycode
    KeyCode あるいは を指定。

modifiers
    キーマスクのセットか を指定。 このマスクは正しいキーマスクのビット値のビットごとの論理和を取ったもの である。

owner_events
    キーボードイベントを通常通り通知するかどうかを指示する真偽値を指定。

pointer_mode
    ポインタイベントの後処理を指定。 あるいは を指定する。

説明
関数 はキーボードのパッシブなグラブを確立する。 後で以下の条件の全てが真になった場合、 キーボードはアクティブにグラブされ( に対するように)、最終キーボードグラブ時刻(last-keyboard-grab time)には キーが押された時刻がセットされ( イベントで送られるように)、 イベントが通知される。

•   指定されたモディファイアキーが論理的に押されており、他のどのモディファ イアキーも論理的には押されていない時、キーボードがグラブされておらず、 指定したキー(それ自体はモディファイアキーでも良い)が論理的に押されてい る。

•   grab_window がフォーカスウィンドウの祖先ウィンドウ(あるいはフォーカス ウィンドウ)であるか、grab_window がフォーカスウィンドウの子孫ウィンド ウであり、かつポインタを含んでいる。

•   同じキーの組み合わせのパッシブなグラブが、 grab_window のどの祖先ウィン ドウにも存在しない。

残りの引き数の解釈は と同じである。 キーボードの論理的状態で、指定したキーが離された状態になった時、アクティ ブなグラブは自動的に終了する(モディファイアキーの論理的状態とは独立)。

デバイスのイベント処理が凍結されている時、デバイスの論理状態(クライア ントアプリケーションが見る)が物理状態とずれてしまうことがある。

引き数 modifiers が である場合は、可能なモディファイアの組み合わせ全てに対してリクエストを 発行することと等価である(モディファイアが無い組み合わせも含む)。 指定された全てのモディファイアが現在 KeyCode を割り当てられている必要 はない。 引き数 keycode が である場合は、可能な全てのキーコードに対してリクエストを発行することと 等価である。 これ以外の場合は、指定したキーコードは接続のセットアップ時に min_keycode と max_keycode で指定された範囲に入っている必要があり、 そうでなければエラー となる。

他のクライアントで同じウィンドウに対して同じキーの組み合わせで を発行したものがある場合は、エラー となる。 グラブが衝突する組み合わせが1つでもある場合に、 や を使用するとリクエストは必ず失敗し、エラー となる(グラブは確立されない)。

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

関数 は、このクライアントが指定したウィンドウをグラブしている場合、このウィ ンドウ上でのキーの組み合わせを解放する。 この関数はアクティブなグラブに対しては無意味である。 引き数 modifiers が である場合は、可能なモディファイアの組み合わせ全てに対してリクエストを 発行することと等価である(モディファイアが無い組み合わせも含む)。 引き数 keycode が である場合は、可能な全てのキーコードに対してリクエストを発行することと 等価である。

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

返り値

クライアントが既に他のクライアントがグラブしているキー/ボタンの組み合
    わせをグラブしようとした。

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

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

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