XListInputDevices(3XI) — NEWS-OS Programmer’s Manual
名称
XListInputDevices, XFreeDeviceList − 有効な入力デバイスを出力する
形式
XDeviceInfo ∗XListInputDevices(display, ndevices_return)
Display ∗display;
int ∗ndevices_return; XFreeDeviceList(list)
XDeviceInfo ∗list;
引数
display X サーバとの接続を指定する。
ndevices_return
有効なデバイスの数を返す変数への ポインタを指定する。
list フリーにするデバイスリストを指定する。 XFreeDeviceList 関数は 有効な拡張入力デバイスのリストをフリーにします。
解説
XListInputDevices リクエストは 有効な拡張入力デバイスを出力します。 このリストはX ポインタや X キーボード、 および X サーバを経由してアクセス 現在アクセスできるその他の拡張入力デバイス、 そして現在はアクセスできないがリクエストされた場合には アクセスできる入力デバイスを含みます。
いくつかのサーバのインプリメンテーションによって、 サーバの初期化時に全ての入力デバイスを有効にします。 その他のデバイスはクライアントによる入力デバイスへのアクセスが リクエストされるまで待ちます。 後者の場合、入力デバイスをある時だけ出力させることができます。
サーバに有効な各入力デバイスに対して、 XListInputDevices リクエストは XDeviceInfo 構造体を返します。 その構造体は構造体リストへのポインタを持ち、 それぞれデバイスによってサポートされる一つの入力クラスに関するデータ を保持します。
XDeviceInfo 構造体は以下のように定義します:
typedef struct _XDeviceInfo
{
XIDid;
Atomtype;
char∗name;
intnum_classes;
intuse;
XAnyClassPtrinputclassinfo;
} XDeviceInfo;
ID はデバイスを指定するユニークな値で、 その範囲は 0-128 です。 サーバによって初期化された場合、 デバイスに割り当てられます。
タイプフィールドは Atom タイプであり、 デバイスの性質を示します。
ネームフィールドは、 定義したデバイスタイプのひとつに対応するヌルで終わる文字列への ポインタを保持しています。 ネームは以下の文字列の一つに対応します。 (ヘッダファイル XI.h に定義:
XI_MOUSE XI_TABLET XI_KEYBOARD XI_TOUCHSCREEN XI_TOUCHPAD XI_BUTTONBOX XI_BARCODE XI_TRACKBALL XI_QUADRATURE XI_ID_MODULE XI_ONE_KNOB XI_NINE_KNOB XI_KNOB_BOX XI_SPACEBALL XI_DATAGLOVE XI_EYETRACKER XI_CURSORKEYS XI_FOOTMOUSE
これらのネームは XDeviceInfo 構造体のネーム フィールドと直接比較されるか、 または XDeviceInfo 構造体のタイプフィールドで 比較できる atom を返す XInternAtom リクエストで使用されます。
num_classes フィールドは ListInputDevices が返す情報に対して デバイスによってサポートする入力クラスの数を指定する 0-255 までの数です。 クラス Focus やクラス Proximity などの入力クラス は ListInputDevices によって返される情報を持ちません。
use フィールドはデバイスが現在どのように 使用されているかを指定します。 値が IsXKeyboard の場合、 デバイスは現在使用されている X キーボード となります。 その値が IsXPointer の場合、 デバイスは現在使用されている X ポインタとなります。 値が IsXExtensionDevice の場合、 デバイスは拡張デバイスとして使用できるようになります。
inputclassinfo フィールドは 最初の入力クラス特殊データへのポインタを保持します。 最初の二つのフィールドは全てのクラスに共通です。
class フィールドは 0-255 の範囲の数値です。 情報が返される入力クラスをユニークに指定します。 現在定義されているクラスは、 KeyClass、 ButtonClass、および ValuatorClass。
length フィールドは 0-255 の範囲の数値です。 この入力クラスに保持されるデータのバイト数を示します。 length はクラスおよび length フィールドを含みます。
XKeyInfo 構造体はデバイスのキーの文字を記述します。 その内容を以下に示します:
typedef struct _XKeyInfo {
XIDclass;
intlength;
unsigned shortmin_keycode;
unsigned shortmax_keycode;
unsigned shortnum_keys;
} XKeyInfo;
min_keycode はタイプ KEYCODE。 デバイスが報告する最小キーコードを指定します。 キーコードは 8 以下の数値。
max_keycode はタイプ KEYCODE。 デバイスが報告する最大キーコードを指定します。 キーコードは 255 以下の数値。
num_keys はデバイスが持つキーの数を指定します。
XButtonInfo 構造体はデバイスのボタンの文字を記述します。 その内容を以下に示します:
typedef struct _XButtonInfo {
XIDclass;
intlength;
shortnum_buttons;
} XButtonInfo;
num_buttons はデバイスが持つボタンの数を指定します。
XValuatorInfo 構造体はデバイスのバリュエータの 文字を記述します。 その内容を以下に示します:
typedef struct_XValuatorInfo {
XIDclass;
intlength;
unsigned charnum_axes;
unsigned charmode;
unsigned longmotion_buffer;
XAxisInfoPtraxes;
} XValuatorInfo;
num_axes はデバイスがサポートする軸の数を指定します。
mode 以下に示す値のどれかを保持する定数です: Absolute または Relative。 いくつかのデバイスでは SetDeviceMode リクエストを経由してのダイナミックな 変更ができるモードが可能です。
motion_buffer_size はデバイスに対する 稼働歴バッファに保持できるエレメントの数を指定する基本数値です。
axes フィールドは XAxisInfo 構造体への ポインタを保持します。
XAxisInfo 構造体の定義を以下に示します。
typedef struct _XAxisInfo {
int resolution;
int min_value;
int max_value;
} XAxisInfo;
resolution は counts/meter の数値を 保持します。
min_val フィールドはこの軸に対してデバイス が報告する最小値を指定する数値を保持します。 モードが Relative であるデバイスに対して、 min_val フィールドは 0 を保持します。
max_val フィールドはこの軸に対して デバイスが報告する最大値を指定する数を保持します。 モードが Relative であるデバイスに対して、 max_val フィールドは 0 を保持します。
XListInputDevices によって生成された XDeviceInfo 列を 開放するためには、XFreeDeviceList を使用します。
自己診断
無し。
関連事項
Programming with Xlib
NEWS-OSRelease 4.2.1R