XButtonEvent, XKeyEvent, XMotionEvent - KeyPress, KeyRelease, ButtonPress,
ButtonRelease, MotionNotify
イベント構造体
構造体¶
KeyPress,
KeyRelease,
ButtonPress,
ButtonRelease,
MotionNotify
イベントに対する構造体の内容を示す。
typedef struct {
int type;
unsigned long serial;
Bool send_event;
Display *display;
Window window;
Window root;
Window subwindow;
Time time;
int 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;
Display *display;
Window window;
Window root;
Window subwindow;
Time time;
int 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;
unsigned long serial;
Bool send_event;
Display *display;
Window window;
Window root;
Window subwindow;
Time time;
int x, y;
int x_root, y_root;
unsigned int state;
char is_hint;
Bool same_screen;
} XMotionEvent;
typedef XMotionEvent XPointerMovedEvent;
このイベントを受け取ったとき、構造体のメンバは以下のように設定されてい
る。
type
メンバはイベントの型を一意に識別する定数の名前である。
例えば、X
サーバがクライアントアプリケーションに
GraphicsExpose
イベントを通知するとき、X
サーバは type メンバに
GraphicsExpose を設定した
XGraphicsExposeEvent
構造体を送る。 display
メンバはイベントが読み出されたディスプレイへのポインタである。
send_event
メンバには、このイベントが
SendEvent
プロトコルリクエストから送られてきた場合に
True が設定される。 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
メンバはイベントウィンドウとルートウィンドウが同じスクリー
ン上にあるかどうかを示すもので、
True か
False
が設定される。
True
の場合は、イベントウィンドウとルートウィンドウは同じスクリーン上にある。
False
の場合は、イベントウィンドウとルートウィンドウは異なるスクリーン上にあ
る。
元のウィンドウがイベントウィンドウの下位ウィンドウであれば、構造体の
subwindow
メンバには、元のウィンドウであるイベントウィンドウの子ウィン
ドウあるいは元のウィンドウの祖先であるイベントウィンドウの子ウィンドウ
が設定される。
そうでない場合には、X
サーバは subwindow メンバに
None を設定する。 time
メンバには、イベントが発生した時刻が設定される。この時刻はミリ
秒単位で表される。
イベントウィンドウがルートウィンドウと同じスクリーン上にある場合、x,
y
メンバにはイベントウィンドウの原点からの相対座標が設定される。
そうでない場合には、x,
y には 0 が設定される。
state
メンバは、イベント直前のポインタのボタンやモディファイアキーの論
理的状態を示す。
これはボタンやモディファイアキーの1つ以上のマスク値のビットごとの論理
和を取ったものである。
マスク値には以下のものがある。
Button1Mask,
Button2Mask,
Button3Mask,
Button4Mask,
Button5Mask,
ShiftMask,
LockMask,
ControlMask,
Mod1Mask,
Mod2Mask,
Mod3Mask,
Mod4Mask,
Mod5Mask.
構造体のそれぞれには、詳細な情報を示すためのメンバがある。
XKeyPressedEvent 構造体と
XKeyReleasedEvent
構造体の場合は、これは
keycode メンバである。
このメンバには、キーボードの物理キーを表す数値が設定される。
このキーコードはキーボード上のどれかのキーに対する任意の表現である。
(12.7 章と 16.1
章を参照のこと)
XButtonPressedEvent 構造体と
XButtonReleasedEvent
構造体の場合は、これは
button メンバである。
これは状態が変化したボタンを表すもので、
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