Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

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

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XAnyEvent(3X11)

XCreateWindowEvent(3X11)

XCirculateEvent(3X11)

XCirculateRequestEvent(3X11)

XColormapEvent(3X11)

XConfigureEvent(3X11)

XConfigureRequestEvent(3X11)

XCrossingEvent(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)

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

イベント

XButtonEvent, XKeyEvent, XMotionEvent − KeyPress、KeyRelease、ButtonPress、ButtonRelease、およびMotionNotifyイベント構造体

構造体

KeyPress、 KeyRelease、 ButtonPress、 ButtonRelease、 および MotionNotify イベントの構造体は、以下の様になります。

typedef struct {
int type;/∗ ボタン押下またはボタン解放 ∗/
unsigned long serial;/∗ サーバが最後に処理したリクエストの通し番号 ∗/
Bool send_event;/∗ SendEventリクエストからであれば、true ∗/
Display ∗display;/∗ イベントが読まれたディスプレイ ∗/
Window window;/∗ 通知された“event”ウィンドウ ∗/
Window root;/∗ イベントが発生したルートウィンドウ ∗/
Window subwindow;/∗ 子ウィンドウ ∗/
Time time;/∗ ミリ秒 ∗/
int x, y;/∗ イベントウィンドウ内のxとy座標へのポインタ ∗/
int x_root, y_root;/∗ ルートウィンドウに基ずく座標 ∗/
unsigned int state;/∗ キーマスクまたはボタンマスク ∗/
unsigned int button;/∗ 詳細事項 ∗/
Bool same_screen;/∗ 同一スクリーンフラグ ∗/
} XButtonEvent;
typedef XButtonEvent XButtonPressedEvent;
typedef XButtonEvent XButtonReleasedEvent;

typedef struct {
int type;/∗ キー押下またはキー解放 ∗/
unsigned long serial;/∗ サーバが最後に処理したリクエストの通し番号 ∗/
Bool send_event;/∗ SendEventリクエストからであれば、true ∗/
Display ∗display;/∗ イベントが読まれたディスプレイ ∗/
Window window;/∗ 通知された“event”ウィンドウ ∗/
Window root;/∗ イベントが発生したルートウィンドウ ∗/
Window subwindow;/∗ 子ウィンドウ ∗/
Time time;/∗ ミリ秒 ∗/
int x, y;/∗ イベントウィンドウのxとy座標へのポインタ ∗/
int x_root, y_root;/∗ ルートウィンドウに基ずく座標 ∗/
unsigned int state;/∗ キーマスクまたはボタンマスク ∗/
unsigned int keycode;/∗ 詳細事項 ∗/
Bool same_screen;/∗ 同一スクリーンフラグ ∗/
} XKeyEvent;
typedef XKeyEvent XKeyPressedEvent;
typedef XKeyEvent XKeyReleasedEvent;

typedef struct {
int type;/∗ MotionNotify ∗/
unsigned long serial;/∗ サーバが最後に処理したリクエストの通し番号 ∗/
Bool send_event;/∗ SendEventリクエストからであれば、true ∗/
Display ∗display;/∗ イベントが読まれたディスプレイ ∗/
Window window;/∗ 通知された“event”ウィンドウ ∗/
Window root;/∗ イベントが発生したルートウィンドウ ∗/
Window subwindow;/∗ 子ウインド ∗/
Time time;/∗ ミリ秒 ∗/
int x, y;/∗ イベントウィンドウのxとy座標へのポインタ ∗/
int x_root, y_root;/∗ ルートウィンドウに基ずく座標 ∗/
unsigned int state;/∗ キーマスクまたはボタンマス ∗/
char is_hint;/∗ 詳細事項 ∗/
Bool same_screen;/∗ 同一スクリーンフラグ ∗/
} XMotionEvent;
typedef XMotionEvent XPointerMovedEvent;

ここに示したイベントを受信した場合、構造体のメンバは以下の様に設定されます。 typeメンバは唯一無二のイベントタイプの定数名称に設定されます。 例えば、 Xサーバが GraphicsExpose イベントをアプリケーションに通知した場合、 typeメンバが GraphicsExpose である XGraphicsExposeEvent 構造体を送ります。 displayメンバはイベントが読まれたディスプレイへのポインタに設定されます。 send_eventメンバは、 イベントが SendEvent プロトコルリクエストからであれば True に設定されます。 serialメンバは SendEvent プロトコルリクエストで通知された通し番号から設定されますが、 16ビットの最下位ビットデータら完全32ビットデータに拡張されます。 windowメンバはツールキットのディスパッチャに最適のウィンドウに設定されます。 以上の構造体に共通のメンバとしてwindow、root、 subwindow、time、 x、y、x_root、y_root、state、 same_screenなどがあり、 詳細を以下に述べます。 windowメンバはイベントが生成されたウィンドウに設定され、 イベントウィンドウとして参照されます。 設定された条件が満たされている限り、 Xサーバがイベントを通知する為のウィンドウとして使用されます。 rootメンバはソースウィンドウのルートウィンドウに設定されます。 メンバx_rootおよびy_rootはイベント発生時のルートウィンドウの原点を基にしたポインタ座標へ設定されます。 same_screenメンバはルートウィンドウと同じスクリーン上にイベントウィンドウがあるかどうかを示す為に設定され、 True または False となります。 True であれば、イベントウィンドウおよびルートウィンドウが同一スクリーン上に存在します。 False であれば、異なるウィンドウ上であることを示します。 ソースウィンドウがイベントウィンドウの下位になる場合、 構造体のsubwindowメンバがソースメンバであるか、 または先祖にあたるイベントウィンドウの子ウィンドウに設定されます。 そうでなければ、 Xサーバはsubwindowメンバを None に設定します。 timeメンバはイベントが生成された時刻に設定され、 ミリ秒で表されます。 イベントウィンドウがルートウィンドウと同じスクリーン上にある場合、 メンバのxとyはイベントウィンドウの原点を基にした座標に設定されます。 そうでなければ、 メンバはゼロに設定されます。 stateメンバはイベント直前のマウスボタンやモディファイアキーの論理状態を示す為に設定され、 マウスボタンマスクまたはモディファイアキーマスクの1つまたは複数の論理和となります。 マスクには、以下の様なものがあります。 Button1Mask、 Button2Mask、 Button3Mask、 Button4Mask、 Button5Mask、 ShiftMask、 LockMask、 ControlMask、 Mod1Mask、 Mod2Mask、 Mod3Mask、 Mod4Mask、 そして Mod5Mask。 以上の構造体のそれぞれには詳細メンバがあります。 XKeyPressedEvent および XKeyReleasedEvent 構造体に関しては、 メンバはkeycodeとなります。 それがキーボード上の物理的なキーを表す番号となります。 keycodeはキーボード上のキーの任意の表現として扱われます。(第7章参照) XButtonPressedEvent および XButtonReleasedEvent 構造体に関しては、 メンバはマウスボタンとなります。 ボタンは状態を変更したマウスボタンを表し、 Button1、 Button2、 Button3、 Button4、 または Button5 などの値となります。 XPointerMovedEvent 構造体に関しては、 メンバはis_hintとなります。そして、 NotifyNormal または NotifyHint などの値になります。

関連事項

XAnyEvent(3X11)、 XCreateWindowEvent(3X11)、 XCirculateEvent(3X11)、 XCirculateRequestEvent(3X11)、 XColormapEvent(3X11)、 XConfigureEvent(3X11)、 XConfigureRequestEvent(3X11)、 XCrossingEvent(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

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