Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

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

Media Vault

Software Library

Restoration Projects

Artifacts Sought

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

名称

XOpenDevice, XCloseDevice − 拡張入力デバイスをオープン/クローズする

形式

XDevice ∗XOpenDevice(display, device_id)
      Display ∗display;
      XID device_id;
 XCloseDevice(display, device)
      Display ∗display;
      XDevice ∗device;

引数

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

device_id オープンするデバイスの ID を指定する。

device クローズするデバイスを指定する。

解説

XOpenDevice リクエストがうまくいった場合、 XDevice 構造体へのポインタを返します。

XCloseDevice リクエストは 入力拡張プロトコルリクエストを通して、 ある入力デバイスをアクセスできないようにします。 終了する前には、 入力拡張を通して入力デバイスをオープンする クライアントは CloseDevice を経由してクローズ しなければなりません。

クライアントが XCloseDevice リクエストを生成すると、 クライアントがデバイス上で持つ全てのアクティブ グラブは開放されます。 クライアントが持つ全てのイベント選択は 受け身のグラブ同様に削除されます。 リクエストしているクライアントが デバイスをアクセスしている最終クライアントの場合、 サーバはX によるデバイスへの全てのアクセス を無効にします。

XOpenDevice および XCloseDevice は BadDevice エラーを生成します。

構造体

XOpenDevice が返す XDevice 構造体を以下に示します。

typedef struct {
XID device_id;
int num_classes;
XInputClassInfo ∗classes;
} XDevice;

classes フィールドは XInputClassInfo 構造体の列へのポインタです。 この列の各エレメントは指定デバイスがサポート する入力のクラスに対するイベントタイプベースを保持します。 num_classes フィールドはclasses 列内の エレメント数を示します。

XInputClassInfo 構造体を以下に示します:

typedef struct {
unsigned char input_class;
unsigned char event_type_base;
} XInputClassInfo;

input_class フィールドはデバイス がサポートする一つのクラスを示します。 定義されたタイプには KeyClass、 ButtonClass、 ValuatorClass、 ProximityClass、 FeedbackClass、 FocusClass および OtherClass などが含まれます。 event_type_base はそのクラスの最初のイベント のイベントタイプを示します。

XInputClassInfo 構造体に 含まれる情報は XSelectExtensionEvent リクエストを生成する際に クライアントが使用する イベントクラスを保持するマクロによって使用されます。 現在定義されているマクロには以下のものが含まれます。 DeviceKeyPress、DeviceKeyRelease、DeviceButtonPress、 DeviceButtonRelese、DeviceMotionNotify、DeviceFocusIn、 DeviceFocusOut、ProximityIn、ProximityOut、 DeviceStateNotify、DeviceMappiingNotify、 ChangeDeviceNotify、DevicePointerMotionHint、 DeviceButton1Motion、DeviceButton2Motion、 DeviceButton3Motion、DeviceButton4Motion、 DeviceButton5Motion、DeviceButtonMotion、 DeviceOwnerGrabButton、DeviceButtonPressGrab、 そして NoExtensionEvent。

特殊デバイスに対する適切なイベントクラスを 獲得するためには、 そのデバイスに対する XDevice 構造体 を使用することで上記マクロのひとつが呼び出されます。 例:

DeviceKeyPress (∗device, type, eventclass);

DeviceKeyPress イベントタイプおよび 指定デバイスからの DeviceKeyPress イベント に対するイベントクラスを返します。

この eventclass はこのデバイスからの DeviceKeyPress イベントをサーバが 送るように要求する XSelectExtensionEvent リクエスト で使用できます。 選択されたイベントは XNextEvent を経由して 受け取られ、type はイベント内のタイプと 比較されるのに使用されます。

自己診断

BadDevice 無効デバイスが指定された。 指定デバイスが存在しない、 またはX キーボードやX ポインタでない。 XChangeKeyboardDevice または XChangePointerDevice リクエスト を経由して、 他のいくつかのクライアントが 指定デバイスをX キーボードまたはX ポインタデバイスにする 場合、このエラーが発生します。

関連事項

Programming with Xlib

NEWS-OSRelease 4.2.1R

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