https://invisible-island.net/xterm/xtoolkit/
XtAddEventHandler, XtAddRawEventHandler, XtRemoveEventHandler, XtRemoveRawEventHandler, XtInsertEventHandler, XtInsertRawEventHandler - add and remove event handlers
#include <X11/Intrinsic.h> void XtAddEventHandler(Widget w, EventMask event_mask, Boolean nonmask- able, XtEventHandler proc, XtPointer client_data); void XtAddRawEventHandler(Widget w, EventMask event_mask, Boolean non- maskable, XtEventHandler proc, XtPointer client_data); void XtRemoveEventHandler(Widget w, EventMask event_mask, Boolean non- maskable, XtEventHandler proc, XtPointer client_data); void XtRemoveRawEventHandler(Widget w, EventMask event_mask, Boolean nonmaskable, XtEventHandler proc, XtPointer client_data); void XtInsertEventHandler(Widget w, EventMask event_mask, Boolean non- maskable, XtEventHandler proc, XtPointer client_data, XtListPo- sition position); void XtInsertRawEventHandler(Widget w, EventMask event_mask, Boolean nonmaskable, XtEventHandler proc, XtPointer client_data, XtList- Position position); typedef enum { XtListHead, XtListTail } XtListPosition;
client_data Specifies additional data to be passed to the client's event handler. event_mask Specifies the event mask for which to call or unregister this procedure. nonmaskable Specifies a Boolean value that indicates whether this proce- dure should be called or removed on the nonmaskable events ( GraphicsExpose, NoExpose, SelectionClear, SelectionRequest, SelectionNotify, ClientMessage, and MappingNotify). proc Specifies the procedure that is to be added or removed. w Specifies the widget for which this event handler is being registered. position Specifies when the event handler is to be called relative to other previously registered handlers.
The XtAddEventHandler function registers a procedure with the dispatch mechanism that is to be called when an event that matches the mask occurs on the specified widget. If the procedure is already registered with the same client_data, the specified mask is ORed into the existing mask. If the widget is realized, XtAddEventHandler calls XSelectInput, if necessary. The XtAddRawEventHandler function is similar to XtAddEventHandler except that it does not affect the widget's mask and never causes an XSelectInput for its events. Note that the widget might already have those mask bits set because of other nonraw event handlers registered on it. The XtRemoveRawEventHandler function stops the specified procedure from receiving the specified events. Because the procedure is a raw event handler, this does not affect the widget's mask and never causes a call on XSelectInput. XtInsertEventHandler is identical to XtAddEventHandler with the addi- tional position argument. If position is XtListHead, the event handler is registered to that it will be called before any event handlers that were previously registered for the same widget. If position is XtList- Tail, the event handler is registered to be called after any previously registered event handlers. If the procedure is already registered with the same client_data value, the specified mask augments the existing mask and the procedure is repositioned in the list. XtInsertRawEventHandler is similar to XtInsertEventHandler except that it does not modify the widget's event mask and never causes an XSelect- Input for the specified events. If the procedure is already registered with the same client_data value, the specified mask augments the exist- ing mask and the procedure is repositioned in the list.
XtAppNextEvent(3), XtBuildEventMask(3) X Toolkit Intrinsics – C Language Interface Xlib - C Language X Interface X Version 11 libXt 1.1.5.2 XtAddEventHandler(3)