XGetDeviceControl(3X11)

名前
XGetDeviceControl, XChangeDeviceControl - 入力デバイス制御の問い合わせと変更

書式
XDeviceControl * XGetDeviceControl(display, device, control)
      Display *display;
      XDevice *device;
      int *controlType;

int XChangeDeviceControl(display, device, controlType, control)
      Display *display;
      XDevice *device;
      int controlType;
      XDeviceControl *control;

引き数

display
    X サーバへの接続を指定。

device
    制御についての問い合わせや変更を行うデバイスを指定。

controlType
    問い合わせや変更を行う制御のタイプを指定。

control
    デバイスに対する新しい値を格納している XDeviceControl 構造体のア ドレスを指定。

説明
これらのリクエストにより、デバイス制御をサポートしている入力デバイスの 操作をできる。リクエストを出したデバイスがデバイスの制御をサポートして いない場合、BadMatch エラーが起こる。

これらのリクエストで使用できる有効なデバイス制御のタイプを以下に示す。

DEVICE_RESOLUTION
    入力デバイス上のバリュエータの解像度の問い合わせと変更を行う。

XGetDeviceControl リクエストは XDeviceControl 構造体へのポ インタを返す。

XGetDeviceControl はエラー BadDevice, BadMatch を起 こすことがある。

XChangeDeviceControl リクエストは、指定したデバイスの1つの制御に 関する値を変更する。制御はリクエストと共に渡される XDeviceControl 構造体の id フィールドによって識別される。

XChangeDeviceControl はエラー BadDevice, BadMatch, BadValue を起こすことがある。

構造体
制御のそれぞれはその制御に特有の構造体によって記述される。 これらの構造体はファイル XInput.h 内で定義されている。

XDeviceControl は2つのフィールドを持つ汎用的な構造体である。 この構造体は、それぞれの制御クラスの始め2つのフィールドを持つ。

typedef struct {
	XID class;
	int length;
} XDeviceControl;

XDeviceResolutionState 構造体はバリュエータを持つデバイスに対し て、デバイスの解像度について返される情報を定義する。

typedef struct {
	XID     control;
	int     length;
	int     num_valuators;
	int     *resolutions;
	int     *min_resolutions;
	int     *max_resolutions;
} XDeviceResolutionState;

XDeviceResolutionControl 構造体はキーボードデバイスに対して、制 御することができる属性を定義する。

typedef struct {
	XID     control;
	int     length;
	int     first_valuator;
	int     num_valuators;
	int     *resolutions;
} XDeviceResolutionControl;

返り値

BadDevice
    不正なデバイスが指定された。指定されたデバイスが存在しないか、クライア ントが XOpenInputDevice を使ってオープンしていない。このエラーは 指定したデバイスが、他のクライアントの XChangeKeyboardDevice リ クエストや XChangePointerDevice リクエストによって X のキーボー ドや X のポインタデバイスになった時にも起こる。

BadMatch
    このエラーは、制御できないデバイスを指定して XGetDeviceControl リクエストを行なった時や、不正なデバイスのタイプを持つ XDeviceControl 構造体で XChangeDeviceControl リクエストを 行った時に起こる。 また、このエラーはマスクビットの不正な組合せが指定されたとき(キーボー ドデバイスに対して DvKey が指定されているが DvAutoRepeatMode が指定されていない時)や文字列デバイスに対して不 正な KeySym が指定されたときにも起こる。

BadValue
    指定された数値に、XChangeDeviceControl リクエストの許容範囲を越 えているものがある。 引き数に対して特定の範囲が指定されていなければ、引き数の型で定義されている 全ての範囲が許される。選択肢として定義されている引き数はこのエラーを起こ すことがある。

関連項目
Programming With Xlib