XAnyEvent, XEvent - generic X event structures
All the event structures declared in <X11/Xlib.h> have the following common members:
The type member is set to the event type constant name that uniquely identifies it. For example, when the X server reports a GraphicsExpose event to a client application, it sends an XGraphicsExposeEvent structure with the type member set to GraphicsExpose. The display member is set to a pointer to the display the event was read on. The send_event member is set to True if the event came from a SendEvent protocol request. The serial member is set from the serial number reported in the protocol but expanded from the 16-bit least-significant bits to a full 32-bit value. The window member is set to the window that is most useful to toolkit dispatchers.
The XEvent structure is a union of the individual structures declared for each event type:
typedef union _XEvent { int type; must not be changed
XAnyEvent xany; XKeyEvent xkey; XButtonEvent xbutton; XMotionEvent
xmotion; XCrossingEvent xcrossing; XFocusChangeEvent xfocus;
XExposeEvent xexpose; XGraphicsExposeEvent xgraphicsexpose;
XNoExposeEvent xnoexpose; XVisibilityEvent xvisibility;
XCreateWindowEvent xcreatewindow; XDestroyWindowEvent
xdestroywindow; XUnmapEvent xunmap; XMapEvent xmap;
XMapRequestEvent xmaprequest; XReparentEvent xreparent;
XConfigureEvent xconfigure; XGravityEvent xgravity;
XResizeRequestEvent xresizerequest; XConfigureRequestEvent
xconfigurerequest; XCirculateEvent xcirculate;
XCirculateRequestEvent xcirculaterequest; XPropertyEvent xproperty;
XSelectionClearEvent xselectionclear; XSelectionRequestEvent
xselectionrequest; XSelectionEvent xselection; XColormapEvent
xcolormap; XClientMessageEvent xclient; XMappingEvent xmapping;
XErrorEvent xerror; XKeymapEvent xkeymap; long pad[24]; }
XEvent;