XGetFeedbackControl(3XI) — NEWS-OS Programmer’s Manual
名称
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 (ファイル XI.h に定義) と同じ値を持つ XInputClassInfo 構造体を返します。
XGetFeedbackControl リクエストは XFeedbackState 構造体のリストへの ポインタを返します。 リストの各項目はデバイスがサポートするフィードバックを記述します。 項目の長さは可変で、リスト内の次の項目に移れるように長さを格納してい ます。
現在定義されているフィードバッククラス: KbdFeedbackClass、 PtrFeedbackClass、 StringFeedbackClass、 IntegerFeedbackClass、 LedFeedbackClass、 および BellFeedbackClass。 これらの定数はファイル XI.h に定義されています。 入力デバイスは 0 個以上のフィードバッククラスを サポートでき、同一クラスに複数のフィードバックをサポートします。 各フィードバックはクラス識別子、ID を持ち、 それは入力デバイスに関するクラスの中でユニークです。 ID は XChangeFeedbackControl リクエストを作成するときに、 フィードバックを識別するために使用されます。
XGetFeedbackControl は BadDevice または BadMatch エラーを生成します。
XChangeFeedbackControl リクエストは 指定デバイス上の一つのフィードバックの値を変更します。 フィードバックは リクエストによって渡される 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;
XLed[8~FeedbackControl 構造体は LED フィードバック に対してコントロールされる属性を定義します。
typedef struct {
XID class;
int length;
XID id;
int led_mask;
int led_values;
} XLedFeedbackControl;
自己診断
BadDevice 無効デバイスが指定された。 指定デバイスが存在しない、 または XOpenInputDevice を経由してこのクライアントによってオープンされていない。 XChangeKeyboardDevice または XChangePointerDevice リクエスト を経由して、 他のいくつかのクライアントが指定デバイス を X キーボードまたはX ポインタにしようとした場合、 このエラーが発生します。
BadMatch XGetFeedbackControl リクエスト がフィードバックを持たないデバイス を指定することで実行されたり、 または XChangeFeedbackControl リクエストが 無効なフィードバックタイプを持つ XFeedbackControl 構造体によって 実行された場合、 このエラーが発生します。 マスクビットの無効な組合せが指定されたり (キーボードフィードバックに対して DvAutoRepeatMode でなく DvKey)、 またはストリングフィードバックに対して 無効な KeySym が指定された場合も発生します。
BadValue いくつかの数値が XChangeFeedbackControl リクエスト で認められた範囲外である。 指定の範囲が引数に関して指定された場合を除いて、 引数のタイプで認められた範囲全てが認められます。 二者択一のセットで定義された引数の場合、 このエラーが発生します。
関連事項
Programming With Xlib
NEWS-OSRelease 4.2.1R