XCrossingEvent(3X11) — NEWS-OS Programmer’s Manual
イベント
XCrossingEvent − EnterNotifyおよびLeaveNotifyイベント構造体
構造体
EnterNotify および LeaveNotify イベントの構造体は、以下の様になります。
typedef struct {
int type;/∗ EnterNotifyまたはLeaveNotify ∗/
unsigned long serial;/∗ サーバが最後に処理したリクエストの通し番号 ∗/
Bool send_event;/∗ SendEventリクエストからであれば、true ∗/
Display ∗display;/∗ イベントが読まれたディスプレイ ∗/
Window window;/∗ 通知されたイベントウィンドウ ∗/
Window root;/∗ イベントが発生したルートウィンドウ ∗/
Window subwindow;/∗ 子ウィンドウ ∗/
Time time;/∗ ミリ秒 ∗/
int x, y;/∗ イベントウィンドウ内のポインタx、y座標 ∗/
int x_root, y_root;/∗ ルートに基づいた座標 ∗/
int mode;/∗ NotifyNormal、NotifyGrab、NotifyUngrab ∗/
int detail;
/∗
∗ NotifyAncestor, NotifyVirtual, NotifyInferior,
∗ NotifyNonlinear,NotifyNonlinearVirtual
∗/
Bool same_screen;/∗ 同一スクリーンフラグ ∗/
Bool focus;/∗ ブーレンフォーカス ∗/
unsigned int state;/∗ キーマスクまたはボタンマスク ∗/
} XCrossingEvent;
typedef XCrossingEvent XEnterWindowEvent;
typedef XCrossingEvent XLeaveWindowEvent;
上記のイベントを受信した場合、 構造体のメンバは以下の様に設定されます。 typeメンバは唯一無二のイベントタイプの名称に設定されます。 例えば、 Xサーバが GraphicsExpose イベントをアプリケーションに通知した場合、 typeメンバが GraphicsExpose である XGraphicsExposeEvent 構造体を送ります。 displayメンバはイベントが読まれたディスプレイへのポインタに設定されます。 sedn_eventメンバはイベントが SendEvent プロトコルリクエストからであれば、 True に設定されます。 serialメンバはプロトコルで通知された通し番号から設定されますが、 16ビットの最下位ビットデータから完全32ビットデータに拡張されます。 windowメンバはツールキットのディスパッチャに最適のウィンドウに設定されます。 windowメンバは EnterNotify イベントまたは LeaveNotify イベントが生成されたウィンドウに設定され、 イベントウィンドウとして参照されます。 Xサーバがイベントを通知する時に使われるウィンドウであり、 イベントが発生したルートウィンドウに基づきます。 rootメンバはイベントが発生したスクリーンのルートウィンドウに設定されます。 LeaveNotify イベントに関しては、 イベントウィンドウの子ウィンドウがポインタの開始位置を保持していれば、 サブウィンドウ部品はその子ウィンドウに設定されます。 そうでなければ、 Xサーバはsubwindowメンバを None に設定します。 EnterNotify イベントに関しては、 イベントウィンドウの子ウィンドウが最終のポインタの位置を保持していれば、 サブウィンドウ部品は子ウィンドウまたは None. に設定されます。 timeメンバはイベントが生成された時刻に設定され、 ミリ秒単位で表されます。 メンバのxおよびyは、 イベントウィンドウのポインタ位置の座標に設定されます。 この位置は常にポインタの最終位置となり、 開始位置とはなりません。 もし、イベントウィンドウがルートウィンドウと同一スクリーン上にあれば、 xとyはイベントウィンドウの原点に基づくポインタ座標となります。 そうでなければ、 xとyはゼロとなります。 メンバのx_rootおよびy_rootは、 イベント発生時のルートウィンドウの原点に基づいたポインタ座標に設定されます。 same_screenメンバはイベントウィンドウがルートウィンドウと同一スクリーン上にあるかどうかを示す為に設定し、 True または False となります。 True であれば、 イベントウィンドウがルートウィンドウと同一スクリーン上にあることになります。 False であれば、 イベントウィンドウはルートウィンドウと同一スクリーン上にないことを示します。 focusメンバはイベントウィンドウがフォーカスウィンドウ、 または下位のフォーカスウィンドウになるのかを示します。 Xサーバが True または False に設定出来ます。 True であれば、 イベントウィンドウはフォーカスウィンドウまたはその下位のウィンドウとなります。 False であれば、 イベントウィンドウはフォーカスウィンドウでも下位のウィンドウでもありません。 stateメンバはイベント発生直前のマウスボタンと修飾キーの状態を示します。 Xサーバはこのメンバを単一または複数のボタンまたはモディファイアキーマスクの論理和に設定出来ます。 Button1Mask、 Button2Mask、 Button3Mask、 Button4Mask、 Button5Mask、 ShiftMask、 LockMask、 ControlMask、 Mod1Mask、 Mod2Mask、 Mod3Mask、 Mod4Mask、 Mod5Mask。 modeメンバはイベントが通常のイベント、 グラブ機能有効時の疑似動作イベント、 またはグラブ機能無効時の疑似動作イベントなのかを示す為に設定されます。 Xサーバが NotifyNormal、 NotifyGrab、 または NotifyUngrab に設定出来ます。 detailメンバはnotify detail告知詳細を示す為に設定され、 NotifyAncestor、 NotifyVirtual、 NotifyInferior、 NotifyNonlinear、 または NotifyNonlinearVirtual に設定されます。
関連事項
XAnyEvent(3X11)、 XButtonEvent(3X11)、 XCreateWindowEvent(3X11)、 XCirculateEvent(3X11)、 XCirculateRequestEvent(3X11)、 XColormapEvent(3X11)、 XConfigureEvent(3X11)、 XConfigureRequestEvent(3X11)、 XDestroyWindowEvent(3X11)、 XErrorEvent(3X11)、 XExposeEvent(3X11)、 XFocusChangeEvent(3X11)、 XGraphicsExposeEvent(3X11)、 XGravityEvent(3X11)、 XKeymapEvent(3X11)、 XMapEvent(3X11)、 XMapRequestEvent(3X11)、 XPropertyEvent(3X11)、 XReparentEvent(3X11)、 XResizeRequestEvent(3X11)、 XSelectionClearEvent(3X11)、 XSelectionEvent(3X11)、 XSelectionRequestEvent(3X11)、 XUnmapEvent(3X11)、 XVisibilityEvent(3X11)
Xlib − C Language X Interface
NEWS-OSRelease 4.1C