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