XGetDeviceMotionEvents(3X11)

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

関連項目
Programming with Xlib