Les événements

typedef union {
XAnyEvent xany;
XKeyEvent xkey;
XButtonEvent xbutton;
XMotionEvent xmotion;
XCrossingEvent xcrossing;
XFocusChangeEvent xfocus;
XExposeEvent xexpose;
XConfigureEvent xconfigure;
...
XErrorEvent xerror;
XKeymapEvent xkeymap;

} XEvent;

 

les événements : cause
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