XButtonEvent(3X11)

名前
XButtonEvent, XKeyEvent, XMotionEvent - KeyPress, KeyRelease, ButtonPress, ButtonRelease, MotionNotify イベント構造体

構造体
イベントに対する構造体の内容を示す。

typedef struct {
     int type;    /* ButtonPress あるいは ButtonRelease */
    unsigned long serial;    /* 最後にサーバに処理されたリクエストの番号 */
    Bool send_event;    /* SendEvent リクエストから送られてきた場合に真 */
    Display *display;    /* イベントが読み出されたディスプレイ */
     Window window;    /* 関連して通知される ``イベント'' ウィンドウ */
     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;    /* KeyPress あるいは KeyRelease */
    unsigned long serial;    /* サーバが最後に処理したリクエストの番号 */
    Bool send_event;    /* SendEvent リクエストから送られてきたときに真 */
    Display *display;    /* イベントが読み出されたディスプレイ */
     Window window;    /* 関連して通知される ``イベント'' ウィンドウ */
     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 リクエストから送られてきたときに真 */
    Display *display;    /* イベントが読み出されたディスプレイ */
     Window window;    /* 関連して通知される ``イベント'' ウィンドウ */
     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 サーバがクライアントアプリケーションに イベントを通知するとき、X サーバは type メンバに をセットした 構造体を送る。 display メンバはイベントが読み出されたディスプレイへのポインタである。 send_event メンバには、このイベントが プロトコルリクエストから送られてきた場合に がセットされる。 serial メンバはプロトコルで通知されるシリアル番号を基にセットされる。 ただし、最少桁の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 メンバはイベントウィンドウとルートウィンドウが同じスクリー ン上にあるかどうかを示すもので、 か がセットされる。 の場合は、イベントウィンドウとルートウィンドウは同じスクリーン上にある。 の場合は、イベントウィンドウとルートウィンドウは異なるスクリーン上にあ る。

元のウィンドウがイベントウィンドウの下位ウィンドウであれば、構造体の subwindow メンバには、元のウィンドウであるイベントウィンドウの子ウィン ドウあるいは元のウィンドウの祖先であるイベントウィンドウの子ウィンドウ がセットされる。 そうでない場合には、X サーバは subwindow メンバに をセットする。 time メンバには、イベントが発生した時刻がセットされる。この時刻はミリ 秒単位で表される。

イベントウィンドウがルートウィンドウと同じスクリーン上にある場合、x, y メンバにはイベントウィンドウの原点からの相対座標がセットされる。 そうでない場合には、x, y にはゼロがセットされる。

state メンバは、イベント直前のポインタのボタンやモディファイアキーの論 理的状態を示す。 これはボタンやモディファイアキーの1つ以上のマスク値のビットごとの論理 和を取ったものである。 マスク値には以下のものがある。

構造体のそれぞれには、詳細な情報を示すためのメンバがある。 構造体と 構造体の場合は、これは keycode メンバである。 このメンバには、キーボードの物理キーを表す数値がセットされる。 このキーコードはキーボード上のどれかのキーに対する任意の表現である。 (12.7 章と 16.1 章を参照のこと)

構造体と 構造体の場合は、これは button メンバである。 これは状態が変化したボタンを表すもので、 のいずれかの値を取る。 構造体の場合は、これは is_hint メンバである。 このメンバには あるいは がセットされる。

関連項目
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