XGetDeviceMotionEvents(3) デバイスの動作履歴を取得する

Other Alias

XDeviceTimeCoord

書式

XDeviceTimeCoord *XGetDeviceMotionEvents(display, device, start, stop,
nevents_return, mode_return, axis_count_return)

      Display *display;

      XDevice *device;

      Time startstop; 


      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
通知されている軸の数が返される。

説明

X サーバによっては、デバイスの動作の最近の履歴を保持していて、 DeviceMotionNotify イベントが通知するよりも細かくデバイスの動作を調べられるものが ある。 XGetDeviceMotionEvents はこの履歴を利用可能にする。

XGetDeviceMotionEvents リクエストは、指定した開始時刻と終了時刻 の間に起きた動作履歴バッファ内の全てのイベントを返す。 両端の時間はこれに含まれる。 開始時刻が終了時刻よりも遅い場合や、開始時刻が未来である場合には、 イベントは全く返されない。 終了時刻が未来の場合は、CurrentTime を指定した場合と同じになる。

mode はデバイスが絶対位置データ(mode=Absolute)と相対位置デー タ(mode=Relative)のいずれを通知しているか示す。 デバイスによっては、XSetDeviceMode リクエストを使ってこのモード を変更できる。 これらの定数はファイル XI.h で定義されている。 axis_count は、デバイスが通知している軸かバリュエータの数を返す。

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

構造体

XDeviceTimeCoord 構造体の内容を示す。

typedef struct {
        Time time;
        int *data;
} XDeviceTimeCoord;

time メンバには、ミリ秒単位で時刻が設定される。 data メンバには、整数の配列へのポインタが設定される。 これらの整数には、デバイスが通知した各バリュエータや軸の値が設定される。 配列の要素の値はデバイスのモードに依存する。モードが Absolute ならば、値はデバイスが生成した生の値である。クライアン トは、デバイスが生成できる最大値を用いて、これらの値のスケール調整をす る。デバイスの各軸の最大値は、XListInputDevices リクエストが返す XAxisInfo 構造体の max_val フィールドとして通知される。モードが Relative ならば、データの値はデバイスが生成する相対値である。

クライアントは XFreeDeviceMotionEvents を使用して、このリクエス トが返したデータを解放すること。

このクライアントは、エラー BadDevice, BadMatch を起こすこ とがある。

返り値

BadDevice
不正なデバイスが指定された。指定されたデバイスが存在しないか、 このクライアントが XOpenInputDevice でデバイスをオープンしていない。 このエラーは、指定されたデバイスが X のキーボードデバイスや X のポインタ デバイスである場合にも起こる。
BadMatch
このエラーは、バリュエータを持たず、動作の軸を通知しないデバイスを指定 して XGetDeviceMotionEvents リクエストを行なった場合に起こる。 こる。