Some of the event routines have conditional versions. They take a routine of this form which returns true if the event is wanted, else False.
Bool (*predicate)(display,event,args) Display *display; XEvent *event; char *args; XIfEvent(display,event,predicate,args) /* returns an event iff right sort*/ Display *display; XEvent *event; Bool (*predicate)(); char *args; XCheckIfEvent(display,event,predicate,args) Display *display; XEvent *event; Bool (*predicate)(); char *args; XPeekIfEvent(display,event,predicate,args) /* conditional Peek */ Display *display; XEvent *event; Bool (*predicate)(); char *args;