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