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 start, stop;
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 以外の値を返す。
XSendEvent
は
BadValue,
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