Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XGrabDevice(3XI) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XAllowDeviceEvents(3XI)

XGrabDeviceButton(3XI)

XGrabDeviceKey(3XI)

XGrabDevice(3XI)  —  NEWS-OS Programmer’s Manual

名称

XGrabDevice, XUngrabDevice − 指定した拡張デバイスをグラブ/リリースする

形式


int XGrabDevice(display, device, grab_window, owner_events, event_count, event_list,
this_device_mode, other_devices_mode, time)
      Display ∗display;
      XDevice ∗device;
      Window grab_window;
      Bool owner_events;
      int event_count;
      XEventClass ∗event_list;
      int this_device_mode, other_devices_mode;
      Time time;
 XUngrabDevice(display, device, time)
      Display ∗display;
      XDevice ∗device;
      Time time;

引数

display X サーバとの接続を指定する。

device グラブまたはリリースするデバイスを指定する。

grab_window デバイスに関係するウィンドウの ID を指定する。

owner_events
イベントが通常通りデバイスから報告されるのか、 またはイベントリストによって選択された場合に グラブ ウィンドウに関して報告されるのかを指定する。

event_count 配列 event_list 内のエレメントの数を指定する。

event_list クライアントが受信しようとするイベントのクラスを指定する イベント クラス リストへのポインタを指定する。 これらのイベントクラスはグラブしようとする デバイスから得られるものでなければなりません。

this_device_mode
このデバイスからイベント処理を 追加指定する。 GrabModeSync または GrabModeAsync を指定可。

other_devices_mode
他のデバイスからイベント処理を 追加指定する。 GrabModeSync または GrabModeAsync を指定可。

time 時刻を指定する。 タイムスタンプまたは CurrentTime を指定可。

解説

XGrabDevice リクエストはデバイスのコントロールをアクティブにグラブし、 DeviceFocusIn および DeviceFocusOut イベントを生成します。 また、グラブしているクライアントにのみデバイスイベントが報告されます。 XGrabDevice はこのクライアントによって あらゆるアクティブデバイスグラブも無効にします。 event_list はイベントクラスのリストへのポインタとなります。 このリストはグラブがアクティブな間にクライアントが受信しようとする イベントを示します。 オーナイベントが False の場合、 生成された全てのデバイスイベントは 選択された grab_window に関して報告されます。 オーナイベントが True で 生成されたデバイスイベントが通常のものなら、 クライアントに通常どおり報告されます。 そうでなければ、 event_list に指定されたイベントのみ grab_window に対して報告されます。

this_device_mode 引数が GrabModeAsync の場合、 デバイスイベント処理は通常どおり継続します。 デバイスがこのクライアントによって現在フリーズしている場合、 デバイスイベントの処理が回復します。 this_device_mode 引数が GrabModeSync の場合、 デバイスの状態 (クライアントによって見れる) がフリーズして現われ、 X サーバはグラしているクライアント がリリースする XAllowDeviceEvents コールを 発行するまで、 またはデバイスグラブがリリースするまで デバイスイベントを生成しません。 実際のデバイス変更は、 デバイスがフリーズしている間失われません。 後の処理に対してサーバの待ち行列に入れられるだけです。

other_devices_mode が GrabModeAsync の場合、 他のデバイスからのイベント処理はグラブの動作によって 影響されません。 other_devices_mode が GrabModeSync の場合、 グラブされたデバイスを除き全てのデバイス の状態 (クライアントアプリケーションによって見れる) はフリーズして現われ、 X サーバはグラブしているクライアントが リリースする XAllowDeviceEvents コールを発行するまで、 またはデバイスグラブがリリースされるまで それらのデバイスからさらにイベントは生成しません。 実際のイベントはデバイスがフリーズする間失われません。 後の処理のためにサーバの待ち行列に入れられるだけです。

デバイスが実際に他のクライアントによってグラブされている場合、 XGrabDevice は失敗し、AlreadyGrabbed を返します。 grab_window が見えない場合、 失敗し、GrabNotViewable を返します。 デバイスが他のクライアントの実際のグラブによってフリーズしている場合、 失敗し、GrabFrozen を返します。 指定時刻が last-device-grab の時刻より早い場合、 または現在の X サーバの時刻より遅い場合、 失敗し、GrabInvalidTime を返します。 そうでなければ、last-device-grab の時刻が指定の時刻に 設定されます。 ( CurrentTime が現在の X サーバの時刻によって置き換えられます) クライアントが有効でグラグがアクティブな間、 グラブされたデバイスがクライアントによってクローズされている場合、 アクティブなグラブがリリースされます。 デバイスがリクエストしているクライアントのアクティブなグラブによってのみ フリーズしている場合、 それは解除されます。

XGrabDevice は BadClass、BadDevice、BadValue および BadWindow エラーを生成します。

XUngrabDevice リクエストは、 このクライアントが XGrabDevice または XGrabDeviceKey からアクティブにグラブ する場合、 そのデバイスおよびキューされたイベントをリリースします。 そのグラブによって他のデバイスがフリーズされた場合、 XUngrabDevice はそれらを解除します。 指定時刻がlast-device-grab の時刻より早かったり、 現在の X サーバ時刻より遅い場合、 XUngrabDevice はデバイスおよびキューされたイベントを リリースしません。 また、 DeviceFocusIn および DeviceFocusOut イベントを生成します。 アクティブなデバイスのグラブのイベントウィンドウが見えなくなった場合、 X サーバは自動的に UngrabDevice リクエストを行います。 XUngrabDevice は BadDevice エラーを生成します。

自己診断

BadDevice 無効デバイスが指定された。 指定デバイスが存在しない、 または XOpenInputDevice 経由にてこのクライアント によってオープンされていない。 指定デバイスが X キーボードまたは X ポインタデバイスの場合、 このエラーが発生します。

BadValue いくつかの数値が、 リクエストによって認められる範囲外である。 指定範囲が引数に対してでなければ、 引数のタイプで定義した範囲全てが認められます。 二者択一のセットで定義された引数の場合、このエラーが発生します。

BadWindow Window 引数の値が指定ウィンドウに一致しない。

関連事項

XAllowDeviceEvents(3XI), XGrabDeviceButton(3XI), XGrabDeviceKey(3XI),
Programming With Xlib

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026