XSendEvent(3X11) — UNIX Programmer’s Manual
名称
XSendEvent, XDisplayMotionBufferSize, XGetMotionEvents - イベントを送 信する
形式
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;
引数
displayX サーバへのコネクションを指定します。
event_maskイベントマスクを指定します。
event_send送信するイベントを指すポインタを指定する。
nevents_return
動作履歴バッファから、イベント数を返します。
propagateブール値を指定します。
start
stopイベントが、動作履歴バッファから返されるインターバルを指定します。 timestamp または CurrentTime を渡すことができます。
wイベントが送信される先のウィンドウ PointerWindow または InputFocus を指定します。
解説
XSendEvent 関数は、デスティネーションウィンドウを識別し、どのクライアントが指定 されたイベントを受信すべきかを決定し、アクティブなグラブを無視します。 この関数は、イベントマスクを渡すことを要求します。 有効なイベントマスク名の説明については、8.3 節を参照してください。 この関数は w 引数を用いて、次のようにデスティネーションウィンドウを識 別します。
•w が PointerWindow の場合、 デスティネーションウィンドウは、ポインタを含んだウィンドウです。
•w が InputFocus で、フォーカスウィンドウがポインタを含んでいる場合は、デスティネーシ ョンウィンドウは、そのポインタを含んだウィンドウです。 そうでない場合は、デスティネーションウィンドウは、フォーカスウィンド ウです。 どのクライアントが、指定されたイベントを受信しなければならないかを決 定するために、 XSendEvent は、次のように propagate 引数を使用します。
•event_mask が空のセットである場合、 イベントは、デスティネーションウィンドウを作成したクライアントへ送信 されます。 クライアントがもはや存在しない場合には、 イベントは何も送信されません。
•propagate(引数)が False の場合、 event_mask 引数のイベントタイプのデスティネーションに選ばれている、あ らゆるクライアントへ送信されます。
•propagate 引数が True で、 クライアントが event_mask のイベントタイプをデスティネーションで、選 択していない場合は、 そのデスティネーションは、あるクライアントが event_mask の型を選んで いるデスティネーション、およびインタービーンウィンドウがその do-not-propagate-mask に、その型をもっていないデスティネーションの一 番近い先祖親と置き換えられます。 そのようなウィンドウが何も存在しない場合、または、ウィンドウがフォー カスウィンドウの先祖で、 InputFocus が、本来デスティネーションとして指定されている場合は、イベントはどん なクライアントへも送信されません。 そうでない場合は、イベントは、 event_mask で指定されたどんなタイプの 最終デスティネーションで選択されている、あらゆるクライアントへ通知さ れます。 XEvent 構造体のイベントは、 必要に応じて X サーバが正確に内容をバイトスワップできるように、拡張 部(または、 BadValue エラー結果) が定義するイベントのうちのひとつ、または、コアイベントのうちのひとつで なければなりません。 イベントの内容は、 send_event を以前のイベントで True にさせ、イベントに正しく通し番号を設定させることを除いては、 X サーバ により、変更されたり、チェックされたりしません。 ワイヤプロトコルフォーマットへの変換が失敗した場合は、 XSendEvent は 0 を返し、成功した場合は、 0 でない値を返します。 .PN XSendEvent は、 BadValue および BadWindow エラーを生じることがあります。 サーバは、 MotionNotify イベントが通知するよりも細かくするために、ポインタ動作の最近の履歴を 保持します。 XGetMotionEvents 関数は、この履歴を利用可能にします。 XGetMotionEvents 関数は、指定された開始および終了時間の間に来たイベントで、現在の位置 での指定されたウィンドウ(そのボーダを含む)内にある座標をもつ、動 作履歴バッファ内のすべてのイベントを返します。 開始時間が終了時間よりも後の場合、または、開始時間が将来にある場合は、 イベントは何も返されません。 終了時間が将来にある場合は、 CurrentTime を指定するのと同じことです。 .PN XGetMotionEvents は、 BadWindow エラーを生じることがあります。
診断
BadValue ある数値が許容範囲を越えた引数の値の範囲が明示されない限り、引数のタ イプによって決まる最大の範囲まで指定可能です。 選択形式の引数も、このエラーを生じることがあります。
BadWindow
Window 引数の値が、定義された Window を指さない。
関連事項
XIfEvent(3X11), XNextEvent(3X11), XPutBackEvent(3X11)
Xlib − C Language X Interface
NEWS-OSRelease 3.3