XSendEvent

Section: XLIB FUNCTIONS (3X11)
Updated: Release 6.3
Index xjman/web INDEX
 

名前

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 startstop; 


      int *nevents_return;  

引き数

display
X サーバへの接続を指定する。
event_mask
イベントマスクを指定する。
event_send
送るイベントを指定する。
nevents_return
移動履歴バッファからイベントの数が返される。
propagate
真偽値を指定する。
start

stop
イベントが移動履歴バッファより返される時間間隔を指定する。 タイムスタンプか CurrentTime を指定する。 PointerWindow,
w
イベントを送る先のウィンドウ、 PointerWindow, InputFocus のいずれかを指定する。
 

説明

関数 XSendEvent は対象ウィンドウを識別し、指定したイベントをどのクライアントが受け取る か決定し、アクティブなグラブを無視する。 この関数にはイベントマスクを渡さなければならない。 正しいイベントマスク名に関しては 10.3 章を参照すること。 この関数は引き数 w を用いて、以下のようにして対象ウィンドウを識別する。
*
w が PointerWindow ならば、対象ウィンドウはポインタを含むウィンドウである。
*
w が InputFocus であり、フォーカスウィンドウがポインタを含むならば、対象ウィンドウはポ インタを含むウィンドウである。 そうでなければ、対象ウィンドウはフォーカスウィンドウである。

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

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

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

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

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

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

構造体

XTimeCoord 構造体の内容を示す。


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


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

返り値

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


 

Index

名前
書式
引き数
説明
構造体
返り値
関連項目

This document was created by man2html, using the manual pages.
Time: 15:55:57 GMT, February 12, 2001