XGetDeviceMotionEvents(3XI) — NEWS-OS Programmer’s Manual
名称
XGetDeviceMotionEvents, XDeviceTimeCoord − デバイスの動作履歴を得る
形式
XDeviceTimeCoord ∗XGetDeviceMotionEvents(display, device, start, stop,
nevents_return, mode_return, axis_count_return)
Display ∗display;
XDevice ∗device;
Time start, stop;
int ∗nevents_return;
int ∗mode_return;
int ∗axis_count_return;
引数
display X サーバとの接続を指定する。
device 要求する動作履歴のデバイスを指定する。
start
stop 動作履歴バッファからイベントが戻される間隔を指定する。 タイムスタンプまたは CurrentTime を指定できます。
nevents_return
動作履歴バッファからイベント数を返します。
mode_return デバイスモード (Absolute または Relative) を返します。
axis_count_return
報告される軸の数を返します。
解説
サーバはデバイスの最近の動作履歴をDeviceMotionNotify イベントよりも いわゆる『細かい粒度』で保持します。 XGetDeviceMotionEvents リクエストはこの履歴を有効にします。
XGetDeviceMotionEvents リクエストは 開始、終了時間の範囲内に ある稼働履歴バッファの全てのイベント を返します。 開始時刻が停止時刻より遅かったり、 開始時刻が現在時刻より後に設定してあると、 イベントは返されません。 停nn止時刻が現在より後の場合、 CurrentTime の指定と同様になります。
mode はデバイスが絶対位置データ (mode=Absolute) を報告するか、または相対的な移動データ (mode=Relative) を報告するかを示します。 XSetDeviceMode リクエストを経由して、 いくつかのデバイスはモードを変更できます。 これらの定数はファイル XI.h にて定義します。 axis_count はデバイスによって報告されるバリュエータまたは 軸の数を返します。
XGetDeviceMotionEvents は BadDevice または BadMatch エラーを返すことがあります。
構造体
XDeviceTimeCoord 構造体を以下に示します。
typedef struct {
Time time;
int ∗data;
} XDeviceTimeCoord;
時刻 (time) はミリ秒単位で設定。 日付 (date) はある整数の配列へのポインタです。 これらの整数はデバイスによって報告される 各バリュエータまたは軸の値として設定されます。 デバイスによって報告される稼働の軸毎に 一つのエレメントがあります。 配列のエレメントの値はデバイスのモードによって変化します。 そのモードが Absoluteの場合、 その値はデバイスが生成するままの値となります。 これらはデバイスが生成できる最大値を使用する クライアントプログラムによって計測できます。 デバイスの各軸に対する最大値は XListInputDevices リクエストによって 返される XAxisInfo の max_val フィールドにて報告されます。 モードが Relative の場合、 そのデータ値はデバイスにより生成される 相対値となります。
このリクエストによって返されるデータを開放するため、 XFreeDeviceMotionEvents を使用します。
このリクエストによって返されるエラー: BadDevice, BadMatch。
自己診断
BadDevice 無効デバイスが指定された。 指定デバイスが存在しない、 または XOpenInputDevice 経由にて クライアントからオープンされていない。 指定デバイスが X キーボードまたは X ポインタデバイスの場合、 このエラーが発生します。
BadMatch XGetDeviceMotionEvents リクエストが バリュエータを持たず、稼働の軸を持たないデバイス を指定することで実行される場合、 このエラーが発生します。
関連事項
Programming with Xlib
NEWS-OSRelease 4.2.1R