typedef union {
XAnyEvent xany;
XKeyEvent xkey;
XButtonEvent xbutton;
XMotionEvent xmotion;
XCrossingEvent xcrossing;
XFocusChangeEvent xfocus;
XExposeEvent xexpose;
XConfigureEvent xconfigure;
...
XErrorEvent xerror;
XKeymapEvent xkeymap;
} XEvent;
cause | événement provoqué |
souris | ButtonPress, ButtonRelease, MotionNotify |
clavier | KeyPress, KeyRelease |
changement de foyer entrées-clavier | FocusIn, FocusOut |
état du clavier | KeymapModify |
exposition d'une fenêtre | Expose, ... |
déplacement de pointeur dans une fenêtre | EnterNotify, LeaveNotify |
modification de géométrie d'une fenêtre | ConfigureNotify |
... | ... |
les événements :structure,
type, masque de sélection
masque d'événement | event.type | structure Event |
NoEventMask | ||
KeyPressMask | KeyPress | XKeyEvent |
KeyReleaseMask | KeyRelease | XKeyEvent |
ButtonPressMask | ButtonPress | XButtonEvent |
ButtonReleaseMask | ButtonRelease | XButtonEvent |
EnterWindowMask | EnterNotify | XCrossingEvent |
LeaveWindowMask | LeaveNotify | XCrossingEvent |
PointerMotionMask | MotionNotify | XMotionEvent |
PointerMotionHintMask | ||
Button1MotionMask | MotionNotify | XMotionEvent |
ButtonMotionMask | MotionNotify | XMotionEvent |
KeymapStateMask | KeymapNotify | XKeymapEvent |
ExposureMask | Expose | XExposeEvent |
FocusChangeMask | FocusIn, FocusOut | XFocusChangeEvent |
StructureNotifyMask | ConfigureNotify | XConfigureNotify |
... | ... | ... |
champs communs à tous les événements
:
typedef struct {
int type; type d'événement
unsigned long serial; numéro de requête
...
Display *display; canal
Window window; fenêtre qui a sélectionnée
l'événement et dans laquelle il est survenu (ou
propagé)
} XAnyEvent;
typedef struct {
int type;
...
Window window; "event" window
Window root; fenêtre racine siège
Window subwindow; la fenêtre source ou None
Time time; l'instant en milliseconde de l'événement
int x,y; coordonnées du pointeur dans window
int x_root, y_root; idem dans root
unsigned int state; masque indiquant les boutons et modifiers
enfoncés
unsigned int button; numéro du bouton de l'événement
...
} XButtonEvent; Evénement envoyé
lorsqu'un bouton de la souris est enfoncé ou relaché
dans une fenêtre ayant sélectionné l'événement.
typedef struct {
...
Window event; fenêtre recevant l'événement
Window window; fenêtre dont la géométrie est
modifiée
int x,y; nouvelle géométrie
int width, height; idem
int border_width; idem
Window above; la fenêtre soeur juste en-dessous dans la
pile, sinon None
Bool override_redirect; valeur de cet attribut de la fenêtre
modifiée
} XConfigureEvent; Evénement envoyé
lors de la modification de géométrie d'une fenêtre
typedef struct {
int type; type d'événement
unsigned long serial; numéro de dernière requête
traitée par le server
Bool send_event; vrai si l'ev vient d'un appel à XSendEvent
Display *display; canal
Window window; "event" window
Window root; fenêtre racine siège
Window subwindow; la fenêtre source ou None
Time time; l'instant en milliseconde de l'événement
int x,y; coordonnées du pointeur dans window
int x_root, y_root; idem dans root
int mode; NotifyNormal, ...
int detail; type de franchissement : NotifyAncestor, NotifyVirtual,
NotifyInferior, ...
Bool same_screen; vrai si le pointeur est resté dans le
même écran
Bool focus; vrai si la fenêtre a le focus
unsigned int state; masque indiquant les boutons et modifiers
enfoncés
} XCrossingEvent; Evénement envoyé
lorsque la souris est entrée ou sortie de la fenêtre
ayant sélectionné l'événement par
l'un des masques : EnterWindowMask, LeaveWindowMask, ...
typedef struct {
int type;
...
Window window; window "exposée"
int x,y; coordonnées du rectangle exposé dans window
int width, height; largeur et hauteur du rectangle exposé
int count; nombre d'événement expose de cette série
dans la file d'attente des événements à traiter.
} XExposeEvent; Evénement envoyé
lorsqu'une partie ou tout de la fenêtre devient visible
à l'utilisateur. Donc coordonnées de la ou les zones
rectangle à rafraîchir.
XFocusChangeEvent est l'événement indiquant à la fenêtre l'attribution du focus du clavier ou sa perte. FocusIn, FocusOut sont les event.type reçues lors des changements de Focus.
typedef struct {
int type;
...
Window window; "event" window
Window root; fenêtre racine siège
Window subwindow; la fenêtre source ou None
Time time; l'instant en milliseconde de l'événement
int x,y; coordonnées du pointeur dans window
int x_root, y_root; idem dans root
unsigned int state; masque indiquant les boutons et modifiers
enfoncés
unsigned int keycode; numéro de la touche frappée
lors de l'événement
...
} XKeyEvent; Evénement envoyé lorsqu'une
touche du clavier est frappée dans la fenêtre foyer
des entrées-clavier et ayant sélectionné
l'événement. En général, les W.M.
attribue le focus à la fenêtre qui contient le pointeur-souris.
typedef struct {
int type; type d'événement
unsigned long serial; numéro de dernière requête
traitée par le server
Bool send_event; vrai si l'ev vient d'un appel à XSendEvent
Display *display; canal
Window window; "event" window
Window root; fenêtre racine siège
Window subwindow; la fenêtre source ou None
Time time; l'instant en milliseconde de l'événement
int x,y; coordonnées du pointeur dans window
int x_root, y_root; idem dans root
unsigned int state; masque indiquant les boutons et modifiers
enfoncés
char is_hint; NotifyHint ou NotifyNormal
Bool same_screen; vrai si le pointeur est resté dans le
même écran
} XMotionEvent; Evénement envoyé
lorsque la souris a bougé dans une fenêtre ayant
sélectionné l'événement par l'un des
masques : PointerMotionMask, ButtonMotionMask, Button2MotionMask,
...
PointerMotionMask sélectionne tous les événements
movement de souris,
ButtonMotionMask uniquement lorsque l'un des boutons est enfoncé,
ButtonMotion2Mask uniquement lorsque le bouton 2 est enfoncé.
enfin, PointerMotionHintMask
ne sélectionne pas XMotionEvent, mais combiné avec
l'un des autres masques ci-dessus, il limite le nombre d'"xmotionevents"
envoyés à chaque enfoncement ou relachement d'un
bouton ou d'une touche, aux sorties de fenêtre, et au appel
de requetes XQueryPointer
et XGetMotionEvents.
index général | fonctions de la XLib | événements | types dans XLib |