Next Prev Up

# 12.2 Selecting Events

A client selects which types of events it receives from a specific window. The window event-mask attribute, set by the client, determines which event types are selected (see window-event-mask in paragraph 4.3, Window Attributes). Most types of events are received by a client only if they are selected for some window.

In the X protocol, an event-mask is represented as a bit string. CLX also allows an event mask to be defined by a list of event-mask-class keywords. The functions make-event-keys and make-event-mask can be used to convert between these two forms of an event-mask. In general, including an event-mask-class keyword in an event-mask causes one or more related event types to be selected. The following table describes the event types selected by each event-mask-class keyword.

Event Mask Keyword | Event Types Selected
--- | ---
:button-1-motion | :motion-notify when :button-1 is down
:button-2-motion | :motion-notify when :button-2 is down
:button-3-motion | :motion-notify when :button-3 is down
:button-4-motion | :motion-notify when :button-4 is down
:button-5-motion | :motion-notify when :button-5 is down
:button-motion | :motion-notify when any pointer button is down
:button-press | :button-press
:button-release | :button-release
:colormap-change | :colormap-notify
:enter-window | :enter-notify
:exposure | :exposure
:focus-change | :focus-in, :focus-out
:key-press | :key-press
:key-release | :key-release
:keymap-state | :keymap-notify
:leave-window | :leave-notify
:owner-grab-button | Pointer events while button is grabbed
:pointer-motion | :motion-notify
:pointer-motion-hint | Single :motion-notify only
:property-change | :property-notify
:resize-redirect | :resize-request
:structure-notify | :circulate-notify, :configure-notify, :destroy-notify, :gravity-notify, :map-notify, :reparent-notify, :unmap-notify
:substructure-redirect | :circulate-request, :configure-request, :map-request
:visibility-change | :visibility-notify

Some types of events do not have to be selected to be received and therefore are not represented in an event-mask. For example, the copy-plane and copy-area functions cause :graphics-exposure and :no-exposure events to be reported, unless exposures are turned :off in the graphics context (see copy-area and copy-plane in paragraph 6.2, Area and Plane Operations, and gcontext-exposures in paragraph 5.4.6, Exposures). Also, :selection-clear, :selection-request, :selection-notify and :client-message events can be received at any time, but they are generally sent only to clients using selections (see paragraph 12.12.7, Client Communications Events). :mapping-notify is always sent to clients when the keyboard mapping is changed.

Any client can select events for any window. A window maintains a separate event-mask for each interested client. In general, multiple clients can select for the same events on a window. After the X server generates an event, it sends it to all clients which selected it. However, the following restrictions apply to sharing window events among multiple clients. For a given window:

- Only one client at a time can include :substructure-redirect in its event-mask
- Only one client at a time can can include :button-press in its event-mask
- Only one client at a time can include :resize-redirect in its event-mask

Next Prev Up

© 1988, 1989 Texas Instruments Incorporated
Conversion to HTML made by Gilbert Baumann.
Last build: Tue Dec 16 23:30:42 1997