Scroll to navigation

XListInputDevices(3X11) X FUNCTIONS XListInputDevices(3X11)

名前

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 のキーボード、その他の入 力デバイスが含まれる。さらにこのリストには、現在は利用可能でないが要求 すれば X サーバを通じてアクセスすることができる入力デバイスも含まれる。
サーバの実装によっては、サーバを初期化したときに全ての入力デバイスを利 用可能にするものがあるかもしれない。あるいは、クライアントが入力デバイ スへのアクセスを要求するときまで待つものもあるかもしれない。後者の場合 には、ある時には入力デバイスは利用可能としてリストされ、別の時にはリス トされないこともある。
サーバが利用可能な各入力デバイスについて、XListInputDevices リクエスト は XDeviceInfo 構造体を返す。この構造体は構造体のリストへのポインタを 含んでおり、リストの各要素はデバイスがサポートしている入力のクラス1つ に関する情報を持っている。
 
XDeviceInfo 構造体は以下のように定義されている。
 
typedef struct _XDeviceInfo
{
	XID		id;        
	Atom		type;
	char		*name;
	int		num_classes;
	int		use;
	XAnyClassPtr	inputclassinfo;
} XDeviceInfo;
id メンバは 0-128 の範囲の数字で、デバイスを一意に特定する。この数字は サーバが初期化を行ったときに割り当てられる。
type フィールドは Atom 型であり、デバイスの性質を示す。
name フィールドは、定義されているデバイスのタイプの1つに対応する、 NULL で終る文字列へのポインタを持つ。この名前は以下に示す文字列のいず れかである(ヘッダファイル 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 構造体の name フィールドと直接比較すること ができ、また、XDeviceInfo 構造体の type フィールドと比較することができ るアトムを取得するために XInternAtom リクエストで使うことができる。
num_classes フィールドは 0-255 の範囲の値であり、ListInputDevices が返 す情報について、デバイスがサポートしている入力クラスの数を示す。入力ク ラスによっては、ListInputDevices が情報を全く返さないものもある(Focus クラスや Proximiti クラスなど)。
use フィールドはデバイスが現在どのように使用されているかを示す。この値 が IsXKeyboard ならば、現在このデバイスは X のキーボードとして使 われている。値が IsXPointer ならば、このデバイスは現在 X のポイ ンタとして使われている。また、値が IsXExtensionDevice ならば、こ のデバイスは拡張デバイスとして使用することができる。
inputclassinfo フィールドは、入力クラスに依存する最初のデータへのポイ ンタを持っている。この最初の2つのフィールドは全てのクラスで共通である。
class フィールドは 0-255 の範囲の数である。この数は情報が返される入力 のクラスを一意に区別する。現在定義されているクラスは、KeyClass, ButtonClass, ValuatorClass である。
length フィールドは 0-255 の範囲の数である。この数は、この入力クラスに 含まれているデータのバイト数を示す。この長さは class フィールドと length フィールドを含んでいる。
XKeyInfo 構造体は、デバイス上のキーの特性を記述する。これは以下のよう に定義されている:
typedef struct _XKeyInfo {
	XID			class;
	int			length;
	unsigned short		min_keycode;
	unsigned short		max_keycode;
	unsigned short		num_keys;
} XKeyInfo;
min_keycode は KEYCODE 型である。これはデバイスが通知する最小のキーコー ドを指定する。最小のキーコードは8未満にはならない。
min_keycode は KEYCODE 型である。これはデバイスが通知する最大のキーコー ドを指定する。最大のキーコードは255より大きくはならない。
num_keys はデバイスが持っているキーの数を示す。
XButtonInfo 構造体は、デバイス上のボタンの特性を定義する。これは以下の ように定義されている:
typedef struct _XButtonInfo {
	XID		class;
	int		length;
	short		num_buttons;
} XButtonInfo;
num_bottons はデバイスが持っているボタンの数を示す。
XValuatorInfo 構造体は、デバイス上のバリュエータの特性を定義する。これ は以下のように定義されている:
typedef struct	_XValuatorInfo {
	XID			class;
	int			length;
	unsigned char		num_axes;
	unsigned char		mode;
	unsigned long		motion_buffer;
	XAxisInfoPtr		axes;
} XValuatorInfo;
num_axes はデバイスがサポートしている軸の数を示す。
mode は定数であり、Absolute と Relative のいずれかである。デバイスによっ ては、SetDeviceMode リクエストによって mode を動的に変えることができる。
motion_buffer_size はデバイスの動作履歴バッファが持つことができる要素 数を示す基数である。
axis フィールドは XAxisInfo 構造体へのポインタを持つ。
XAxisInfo 構造体は以下のように定義されている:
typedef struct _XAxisInfo {
	int 	resolution;
	int 	min_value;
	int 	max_value;
} XAxisInfo;
解像度は、カウント数/メートルの値を持つ。
min_value フィールドは、この軸に対してデバイスが通知する最小値を示す。 モードが Relative であるデバイスに対しては、min_value フィールドは 0 となる。
max_value フィールドは、この軸に対してデバイスが通知する最大値を示す。 モードが Relative であるデバイスに対しては、max_value フィールドは 0 となる。
XListInputDevices によって生成された XDeviceInfo の配列を 解放するには、 XFreeDeviceList を使用すること。

返り値

無し。

関連項目

Programming with Xlib
Release 6.5 X Version 11