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
    ポインタイベントの後処理を指定する。 あるいは を渡せる。

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

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

•   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