Note
Some toolkits use their own event-handling functions and do not allow you to interchange these event-handling functions with those in Xlib. For further information, see the documentation supplied with the toolkit.
Most applications simply are event loops:
they wait for an event, decide what to do with it,
execute some amount of code that results in changes to the display,
and then wait for the next event.