Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XGetMotionEvents(3X11) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XAnyEvent(3X11)

XIfEvent(3X11)

XNextEvent(3X11)

XPutBackEvent(3X11)

XSendEvent(3X11)  —  NEWS-OS Programmer’s Manual

名称

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;

引数

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 でない値を返します。 XSendEvent は、 BadValue および BadWindow エラーを生じることがあります。 サーバは、 MotionNotify イベントが通知するよりも細かくするために、ポインタ動作の最近の履歴を 保持します。 XGetMotionEvents 関数は、この履歴を利用可能にします。 XGetMotionEvents 関数は、指定された開始および終了時間の間に来たイベントで、現在の位置 での指定されたウィンドウ(そのボーダを含む)内にある座標をもつ、動 作履歴バッファ内のすべてのイベントを返します。 開始時間が終了時間よりも後の場合、または、開始時間が将来にある場合は、 イベントは何も返されません。 終了時間が将来にある場合は、 CurrentTime を指定するのと同じことです。 XGetMotionEvents は、 BadWindow エラーを生じることがあります。

構造体

XTimeCood 構造体は、次のようになっています。

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

time にはミリ秒の単位で時間が設定されます。 x と y にはポインタの座標が設定され、指定された ウィンドウの原点との相対関係がわかります。

診断

BadValue ある数値が許容範囲を越えた引数の値の範囲が明示されない限り、引数のタ イプによって決まる最大の範囲まで指定可能です。 選択形式の引数も、このエラーを生じることがあります。

BadWindow
Window 引数の値が、定義された Window を指さない。

関連事項

XAnyEvent(3X11), XIfEvent(3X11), XNextEvent(3X11), XPutBackEvent(3X11)
Xlib − C Language X Interface

NEWS-OS Release 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026