XGrabDeviceKey(3XI) — NEWS-OS Programmer’s Manual
名称
XGrabDeviceKey, XUngrabDeviceKey − 拡張入力デバイスキーをグラブ/アングラブする
形式
XGrabDeviceKey(display, device, Key, modifiers, modifier_device, grab_window, owner_events,
event_count, event_list, this_device_mode, other_devices_mode)
Display ∗display;
XDevice ∗device;
unsigned int Key;
unsigned int modifiers;
XDevice ∗modifier_device;
Window grab_window;
Bool owner_events;
unsigned int event_count;
XEventClass event_list;
int this_device_mode, other_devices_mode; XUngrabDeviceKey(display, device, Key, modifiers, modifier_device, grab_window)
Display ∗display;
XDevice ∗device;
unsigned int Key;
unsigned int modifiers;
XDevice ∗modifier_device;
Window grab_window;
引数
display X サーバとの接続を指定する。
device グラブまたはリリースするデバイス を指定する。
Key グラブまたはリリースするデバイスキー、 または AnyKey を指定する。
modifiers キーマスクのセットまたは AnyModifier を指定する。 マスクは有効なキーマスクビット の論理和ビットです。 有効ビット: ShiftMask、 LockMask、 ControlMask、 Mod1Mask、 Mod2Mask、 Mod3Mask、 Mod4Mask、 Mod5Mask。
modifier_device
使用するモディファイアのデバイスを指定する。 NULL の modifier_device が指定された場合、 X キーボードは modifier_device として使用されます。
grab_window グラブウィンドウを指定する。
owner_events
デバイスイベントが通常どおり報告されるか、 またはイベントリストによって選択された場合にグラブウィンドウ に関して報告されるかどうかを示す真偽値を指定する。
event_count イベントリスト内のイベントクラスの数を指定する。
event_list クライアントに報告されるデバイスイベントを指定する。
this_device_mode
このデバイスからイベント処理を追加指定する。 GrabModeSync または GrabModeAsync が指定可。
other_devices_mode
他の全てのイベントからイベント処理を追加指定する。 GrabModeSync または GrabModeAsync が指定可。
解説
XGrabDeviceKey リクエストは 受け身のグラブを確立します。 デバイスはアクティブにグラブされ (XGrabDevice に関して、 last-device-grab 時刻がボタンが押された時刻に設定される) (DeviceKeyPress イベント内で通信) そして以下の全ての条件が真の場合、 DeviceKeyPress イベントが報告されます。
•デバイスがグラブされ、 指定モディファイアキーが指定モディファイアデバイスにて論理的に押され、 その他のボタンやモディファイアキーは押されていない。
•グラブウィンドウがフォーカスウィンドウ またはその祖先であり、 またはグラブウィンドウがグラブウディンドウの子孫で、デバイスを持つ。
•confine_to ウィンドウ(どれでも)が見える。
•同一のキー/モディファイア上の受け身のグラブ は grab_window の先祖のどの先祖にも存在しない。
残りの引数の内容は XGrabDevice に関するものです。 デバイスの論理状態で指定のキーがリリースしていると、 アクティブグラブは自動的に終了します。
デバイスイベント処理がフリーズ状態では、 デバイスの論理状態は物理状態に遅れることが あります (X プロトコルによって見えます)。 キーが AnyKey ではない場合、 XListInputDevices リクエストによって返される max_keycode および min_keycode で指定の範囲でなければなりません。 そうでなければ、 BadValue エラーとなります。
このリクエストは、 同一ウィンドウの同一のキー/モディファイアの 組合せの同一クライアントによるグラブを無視します。 AnyModifier のモディファイアは 可能な全てのモディファイアの組合せ (モディファイア無しの組合せも含め) に対するグラブリクエストを発行することに相当します。 指定した全てのモディファイアが 現在キーコードを割り当てている必要もありません。 AnyKey にキーは可能な全てのキー に対してリクエストを発行することに相当します。 そうでなければ、 指定のキーが現在物理キーに 割り当てられている必要もありません。
NULL の modifier_device が指定されている場合、 X キーボードは modifier_device として使用されます。
同一のウィンドウ上で同一のキー/モディファイアの組合せによって、 他のいくつかのクライアントが XGrabDeviceKey をすでに発行している場合、 BadAccess エラーとなります。 AnyModifier または AnyKey を使用する場合 リクエストは完全に失敗し、 どの組合せに対してもグラブがぶつかる場合、 BadAccess エラーとなります (グラブが確立されてない)。 XGrabDeviceKey はアクティブグラブに対して何も影響を持ちません。
XGrabDeviceKey は、 BadAccess、 BadClass、 BadDevice、 BadMatch、 BadValue および BadWindow エラーを生成します。 リクエストが正常終了した場合には Success を返します。
XUngrabDeviceKey リクエストは クライアントによってグラブされている場合、 指定ウィンドウ上のキー/モディファイアに 対する受け身のグラブをリリースします。 AnyModifier のモディファイアは モディファイア無しの組合せを含む、 可能な全てのモディファイアの組合せに 対するアングラブリクエストを発行することに相当します。 AnyKey キーは 可能な全てのキーに対するリクエストを発行することに相当します。 XUngrabDeviceKey はアクティブグラブに 何も影響を持ちません。
NULL の modifier_device が指定されると、 X キーボードが modifier_device として使用されます。
XUngrabDeviceKey は BadDevice、 BadMatch、 BadValue および BadWindow エラーを生成します。
自己診断
BadDevice 無効デバイスが指定された。 指定デバイスが存在しない、 または XOpenInputDevice 経由にて このクライアントからオープンされていない。 指定デバイスが X キーボードまたは X ポインタデバイスの場合、 このエラーが発生します。
BadMatch キーを持たないデバイス またはモディファイデバイスを指定することで XGrabDeviceKey リクエストが実行された場合、 このエラーが発生します。
BadValue いくつかの数値が、 リクエストによって認められる範囲外である。 指定範囲が引数に対してでなければ、 引数のタイプで定義した範囲全てが認められます。 二者択一のセットで定義された引数の場合、 このエラーが発生します。
BadWindow Window 引数に対する値が定義ウィンドウ に一致しない。
関連事項
XAllowDeviceEvents(3XI),
XGrabDevice(3XI),
XGrabDeviceButton(3XI),
Programming with Xlib
NEWS-OSRelease 4.2.1R