Clients receive information asynchronously via events. These
events can be either asynchronously generated from devices, or
generated as side effects of client requests. Events are grouped into
types; events are never sent to a client by the server unless the
client has specifically asked to be informed of that type of event,
but clients can force events to be sent to other clients. Events are
typically reported relative to a window.
Ignoring (or compressing) certain redundant input events. Compression
of redundant events is controlled by the class slots
compress-exposures and compress-motion, which are shared
by all instances of a contact class.
The fundamental application control structure: wait for an event,
figure out how to handle it, process the event, then go back and wait
for the next one. In CLUE, the event loop is implemented using the
Events are requested relative to a window. The set of event types a
client requests relative to a window are described using an event
Device-related events propagate from the source window to
ancestor windows until some client has expressed interest in handling
that type of event, or until the event is discarded explicitly.
A notation for describing a certain sort of event. CLUE input
processing consists of matching an event with an event specification
found in a contact's event-translations slot and then calling
actions associated with the matching event specification.
Certain race conditions are possible when demultiplexing device events
to clients (in particular deciding where pointer and keyboard events
should be sent when in the middle of window management operations).
The event synchronization mechanism allows synchronous processing of
The smallest window containing the pointer is the source of a
device related event.
The process of determining which contact action functions will be
executed. An event translation is a list found in a contact's
event-translations slot associating an event specification with
one or more action names. Also see class event translations.
Servers do not guarantee to preserve the contents of windows when
windows are obscured or reconfigured. Exposure events are sent
to clients to inform them when contents of regions of windows have
Named extensions to the core protocol can be defined to extend
the system. Extension to output requests, resources, and event types
are all possible, and expected.