Other Alias
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 リクエストの許容範囲を 越えているものがある。 引き数に対して特定の範囲が指定されていなければ、引き数の型で定義されている 全ての範囲が許される。選択肢として定義されている引き数はこのエラーを起こ すことがある。