XSendEvent(3X11)

名前
XSendEvent, XDisplayMotionBufferSize, XGetMotionEvents, XTimeCoord - イベント構造体とポインタ移動履歴構造体の送信

書式
Status XSendEvent(display, w, propagate, event_mask, event_send)
      Display *display;
      Window w;
      Bool propagate;
      long event_mask;
      XEvent *event_send;

unsigned long XDisplayMotionBufferSize(display)
        Display *display;

XTimeCoord *XGetMotionEvents(display, w, start, stop, nevents_return)
      Display *display;
      Window w;
      Time start, stop;
      int *nevents_return;

引き数

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

event_mask
    イベントマスクを指定。

event_send
    送るイベントを指定。

nevents_return
    移動履歴バッファからイベントの数が返される。

propagate
    真偽値を指定。

start

stop
    イベントが移動履歴バッファより返される時間間隔を指定。 タイムスタンプか を指定する。

w   イベントを送る先のウィンドウ、 のいずれかを指定。

説明
関数 は対象ウィンドウを識別し、指定したイベントをどのクライアントが受け取る か決定し、アクティブなグラブを無視する。 この関数にはイベントマスクを渡さなければならない。 正しいイベントマスク名に関しては 10.3 章を参照すること。 この関数は引き数 w を用いて、以下のようにして対象ウィンドウを識別する。

•   w が ならば、対象ウィンドウはポインタを含むウィンドウである。

•   w が であり、フォーカスウィンドウがポインタを含むならば、対象ウィンドウはポ インタを含むウィンドウである。 そうでなければ、対象ウィンドウはフォーカスウィンドウである。

は引き数 propagate を以下のように使って、指定したイベントをどのクライア ントが受け取るか決定する。

•   イベントマスクが空集合の場合、イベントは対象ウィンドウを作成したクライ アントに送られる。 そのクライアントがもはや存在しない場合には、イベントはどこにも送られな い。

•   propagate が の場合、イベントは対象ウィンドウでイベントマスクを使ってそのイベントタ イプを選択している全てのクライアントに送られる。

•   propagate が であり、イベントマスクを使って対象ウィンドウでそのイベントタイプを選択 しているクライアントが無い場合には、次の条件を満たす最も近い祖先ウィン ドウに置き換えられる。その条件とは、対象ウィンドウはクライアントのどれ かがイベントマスクでそのタイプを選択していることと、間にあるウィンドウ がそのイベントの伝播を止めるようなマスクを持っていないことである。 そのようなウィンドウが無い場合や、そのウィンドウがフォーカスウィンドウ の親であり、元々 が対象ウィンドウとして指定されていた場合には、このイベントはどのクライ アントにも送られない。 そうでない場合、このイベントは、最終的な対象ウィンドウ上で指定したタイ プのイベントをイベントマスクを使って選択している全てのクライアントに通 知される。

X サーバが必要に応じて構造体の中身のバイト交換を正しく行えるように、 構造体はコアイベントの1つであるか、拡張として定義されたイベントの1つで なければならない(そうでない場合にはエラー となる)。 それ以外の場合には、X サーバによるイベント構造体の内容の変更、チェック は行われない。ただし、転送されるイベントでは send_event は強制的に にされ、イベントのシリアル番号も正しくセットされる。 従って、これらのフィールドと display フィールドは からは無視される。

は伝送プロトコルフォーマットへの変換に失敗した場合はゼロを返し、そうで なければゼロ以外の値を返す。 は エラーを起こすことがある。

サーバによってはポインタの動きの最近の履歴を保持していて、 イベントが通知するよりも細かくマウスの動きを与えることができるものがあ る。 関数 は、この履歴を利用可能にする。

関数 指定した開始時刻から終了時刻まで(両端を含む)に起きたマウスの移動履歴の バッファ内のイベントを全て返す。このイベントは指定したウィンドウ内(境 界を含む)での現在位置の座標を持っている。 サーバが移動履歴をサポートしていないか、開始時刻が終了時刻より遅いか、 開始時刻が現在時刻より後である場合には、イベントは全く返されない。 この場合、 は NULL を返す。 終了時刻が現在時刻より後の場合は、 を指定したことになる。 はエラー を起こすことがある。

構造体
構造体の内容を示す。

typedef struct {
    Time time;
    short x, y; } XTimeCoord;

time メンバにはミリ秒単位で時刻がセットされる。 x, y メンバには、指定したウィンドウの原点に対する座標でポインタの座標 がセットされ、通知される。

返り値

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

A value for a Window argument does not name a defined Window.

関連項目
XAnyEvent(3X11), XIfEvent(3X11), XNextEvent(3X11), XPutBackEvent(3X11)
Xlib - C Language X Interface