XGetFeedbackControl(3X11)

名前
XGetFeedbackControl, XChangeFeedbackControl - 入力デバイスのフィードバックの問い合わせ・変更

書式
XFeedbackState * XGetFeedbackControl(display, device, num_feedbacks)
      Display *display;
      XDevice *device;
      int *num_feedbacks;

int XChangeFeedbackControl(display, device, mask, control)
      Display *display;
      XDevice *device;
      Mask mask;
      XFeedbackControl *control;

引き数

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

device
    フィードバックの問い合わせまたは変更の対象のデバイスを指定。

num_feedbacks
    デバイスがサポートしているフィードバックの数が返されるアドレスを指定。

mask
    フィードバックのタイプに特有の、変更されるフィードバックを示すマスクを 指定。

control
    フィードバックの新しい値を含む XFeedbackControl 構造体のアドレス を指定。

説明
これらのリクエストは、フィードバックをサポートしているデバイスの操作を 提供する。要求されたデバイスがフィードバックをサポートしていない場合は、 エラー BadMatch が生成される。与えられたデバイスのフィードバック のサポートの有無は、XOpenDevice リクエストが返す情報によって判定 できる。フィードバックをサポートしているデバイスに対しては、 XOpenDevice は input_class フィールドが定数 FeedbackClass である XInputClassInfo 構造体を返す(定数はファイル XI.h で定義されている)。

XGetFeedbackControl リクエストは、XFeedbackState 構造体の リストへのポインタを返す。このリスト中のそれぞれの要素は、デバイスがサ ポートしているフィードバックの1つを記述する。要素の長さは可変なので、 リスト中の次の要素を参照できるようにするため、各要素は自分の長さを持っ ている。

フィードバックのクラスについては、現在は以下のものが定義されている: KbdFeedbackClass, PtrFeedbackClass, StringFeedbackClass, IntegerFeedbackClass, LedFeedbackClass, BellFeedbackClass. これらの定数は、ファイル XI.h 内で定義されている。入力デバイスは、 0個以上のクラスのフィードバックをサポートすることができ、同じクラスの 複数のフィードバックをサポートすることもできる。それぞれのフィードバッ クは、その入力デバイスに対し、そのクラス中で一意に決まるクラス識別子を 持っている。このIDは、XChangeFeedbackControl リクエストを行うと きにフィードバックを識別するために使われる。

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

XChangeFeedbackControl リクエストは、指定したデバイス上の1つの フィードバックの値を変更する。フィードバックは、リクエストに渡される XFeedbackControl 構造体の id フィールドを使って識別される。変更 するフィードバック構造体のフィールドは、リクエストに渡したマスクのビッ ト値で識別される。

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

構造体
フィードバックの各クラスは、クラスの特有の構造体で記述される。 これらの構造体は、ファイル XInput.h 内で記述されている。 XFeedbackState と XFeedbackControl は、フィードバックの各 クラスの先頭に3つのフィールドを持つ、一般的な構造体である。

typedef struct {
    XID class;
    int length;
    XID id;
} XFeedbackState, XFeedbackControl;

XKbdFeedbackState 構造体は、X のキーボード上のフィードバックと等 価なフィードバックに対して返される属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     click;
	int     percent;
	int     pitch;
	int     duration;
	int     led_mask;
	int     global_auto_repeat;
	char    auto_repeats[32];
} XKbdFeedbackState;

XPtrFeedbackState 構造体は、X のポインタ上のフィードバックと等価 なフィードバックに対して返される属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     accelNum;
	int     accelDenom;
	int     threshold;
} XPtrFeedbackState;

XIntegerFeedbackState 構造体は、整数値のフィードバックに対して返 される属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     resolution;
	int     minVal;
	int     maxVal;
} XIntegerFeedbackState;

XStringFeedbackState 構造体は、文字列のフィードバックに対して返 される属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     max_symbols;
	int     num_syms_supported;
	KeySym  *syms_supported;
} XStringFeedbackState;

XBellFeedbackState 構造体は、ベルのフィードバックに対して返され る属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     percent;
	int     pitch;
	int     duration;
} XBellFeedbackState;

XLedFeedbackState 構造体は、LED のフィードバックに対して返される 属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     led_values;
} XLedFeedbackState;

XPrtFeedbackControl 構造体は、ポインタのフィードバックに対して制 御することができる属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     accelNum;
	int     accelDenom;
	int     threshold;
} XPtrFeedbackControl;

XKbdFeedbackControl 構造体は、キーボードのフィードバックに対して 制御できる属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     click;
	int     percent;
	int     pitch;
	int     duration;
	int     led_mask;
	int     led_value;
	int     key;
	int     auto_repeat_mode;
} XKbdFeedbackControl;

XStringFeedbackControl 構造体は、文字列のフィードバックに対して 制御できる属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     num_keysyms;
	KeySym  *syms_to_display;
} XStringFeedbackControl;

XIntegerFeedbackControl 構造体は、整数値のフィードバックに対して 制御できる属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     int_to_display;
} XIntegerFeedbackControl;

XBellFeedbackControl 構造体は、ベルのフィードバックに対して制御 できる属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     percent;
	int     pitch;
	int     duration;
} XBellFeedbackControl;

XLedFeedbackControl 構造体は、LED のフィードバックに対して制御で きる属性を定義する。

typedef struct {
	XID     class;
	int     length;
	XID     id;
	int     led_mask;
	int     led_values;
} XLedFeedbackControl;

返り値

BadDevice

BadMatch
    このエラーは、フィードバックを持たないデバイスを指定して XGetFeedbackControl リクエストを行った場合や、フィードバックのタ イプが不正である XFeedbackControl 構造体を使って、 XChangeFeedbackControl リクエストを行った場合に起こる。 不正なマスクビット値の組合せを用いた場合や(キーボードのフィードバック に対して DvAutoRepeatMode 無しの DvKey を用いる等)、文字列 のフィードバックに対して不正な KeySym を指定した場合にも、このエラーが 起こる。

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

関連項目
Programming With Xlib