aboutsummaryrefslogtreecommitdiff
path: root/libX11/specs/libX11/CH10
diff options
context:
space:
mode:
Diffstat (limited to 'libX11/specs/libX11/CH10')
-rw-r--r--libX11/specs/libX11/CH103886
1 files changed, 0 insertions, 3886 deletions
diff --git a/libX11/specs/libX11/CH10 b/libX11/specs/libX11/CH10
deleted file mode 100644
index 76502fb9e..000000000
--- a/libX11/specs/libX11/CH10
+++ /dev/null
@@ -1,3886 +0,0 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining
-.\" a copy of this software and associated documentation files (the
-.\" "Software"), to deal in the Software without restriction, including
-.\" without limitation the rights to use, copy, modify, merge, publish,
-.\" distribute, sublicense, and/or sell copies of the Software, and to
-.\" permit persons to whom the Software is furnished to do so, subject to
-.\" the following conditions:
-.\"
-.\" The above copyright notice and this permission notice shall be included
-.\" in all copies or substantial portions of the Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-.\" OTHER DEALINGS IN THE SOFTWARE.
-.\"
-.\" Except as contained in this notice, the name of the X Consortium shall
-.\" not be used in advertising or otherwise to promote the sale, use or
-.\" other dealings in this Software without prior written authorization
-.\" from the X Consortium.
-.\"
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
-.\" Digital Equipment Corporation
-.\"
-.\" Portions Copyright \(co 1990, 1991 by
-.\" Tektronix, Inc.
-.\"
-.\" Permission to use, copy, modify and distribute this documentation for
-.\" any purpose and without fee is hereby granted, provided that the above
-.\" copyright notice appears in all copies and that both that copyright notice
-.\" and this permission notice appear in all copies, and that the names of
-.\" Digital and Tektronix not be used in in advertising or publicity pertaining
-.\" to this documentation without specific, written prior permission.
-.\" Digital and Tektronix makes no representations about the suitability
-.\" of this documentation for any purpose.
-.\" It is provided ``as is'' without express or implied warranty.
-.\"
-\&
-.sp 1
-.ce 3
-\s+1\fBChapter 10\fP\s-1
-
-\s+1\fBEvents\fP\s-1
-.sp 2
-.nr H1 10
-.nr H2 0
-.nr H3 0
-.nr H4 0
-.nr H5 0
-.na
-.LP
-.XS
-Chapter 10: Events
-.XE
-A client application communicates with the X server through the connection you
-establish with the
-.PN XOpenDisplay
-.IN "XOpenDisplay"
-function.
-A client application sends requests to the X server over this connection.
-.IN "Requests" "" "@DEF@"
-These requests are made by the Xlib functions that are
-called in the client application.
-Many Xlib functions cause the X server to generate events,
-and the user's typing or moving the pointer can generate events asynchronously.
-The X server returns events to the client on the same connection.
-.LP
-This chapter discusses the following topics associated with events:
-.IP \(bu 5
-Event types
-.IP \(bu 5
-Event structures
-.IP \(bu 5
-Event masks
-.IP \(bu 5
-Event processing
-.LP
-Functions for handling events are dealt with in the next chapter.
-.NH 2
-Event Types
-.XS
-\*(SN Event Types
-.XE
-.LP
-.IN "Event" "types"
-An event is data generated asynchronously by the X server as a result of some
-device activity or as side effects of a request sent by an Xlib function.
-.IN "Event"
-Device-related events propagate from the source window to ancestor windows
-until some client application has selected that event type
-or until the event is explicitly discarded.
-The X server generally sends an event to a client application
-only if the client has specifically asked to be informed of that event type,
-typically by setting the event-mask attribute of the window.
-The mask can also be set when you create a window
-or by changing the window's
-event-mask.
-You can also mask out events that would propagate to ancestor windows
-by manipulating the
-do-not-propagate mask of the window's attributes.
-However,
-.PN MappingNotify
-events are always sent to all clients.
-.IN "Input Control"
-.IN "Output Control"
-.LP
-An event type describes a specific event generated by the X server.
-For each event type,
-a corresponding constant name is defined in
-.hN X11/X.h ,
-which is used when referring to an event type.
-.IN "Event" "categories"
-The following table lists the event category
-and its associated event type or types.
-The processing associated with these events is discussed in section 10.5.
-.LP
-.\".CP T 1
-.\"Event Categories and Event Types
-.LP
-.TS H
-lw(2.25i) lw(3.5i).
-_
-.sp 6p
-.B
-Event Category Event Type
-.sp 6p
-_
-.sp 6p
-.TH
-.R
-T{
-Keyboard events
-T} T{
-.PN KeyPress ,
-.PN KeyRelease
-T}
-.sp 6p
-T{
-Pointer events
-T} T{
-.PN ButtonPress ,
-.PN ButtonRelease ,
-.PN MotionNotify
-T}
-.sp 6p
-T{
-Window crossing events
-T} T{
-.PN EnterNotify ,
-.PN LeaveNotify
-T}
-.sp 6p
-T{
-Input focus events
-T} T{
-.PN FocusIn ,
-.PN FocusOut
-T}
-.sp 6p
-T{
-Keymap state notification event
-T} T{
-.PN KeymapNotify
-T}
-.sp 6p
-T{
-Exposure events
-T} T{
-.PN Expose ,
-.PN GraphicsExpose ,
-.PN NoExpose
-T}
-.sp 6p
-T{
-Structure control events
-T} T{
-.PN CirculateRequest ,
-.PN ConfigureRequest ,
-.PN MapRequest ,
-.PN ResizeRequest
-T}
-.sp 6p
-T{
-Window state notification events
-T} T{
-.PN CirculateNotify ,
-.PN ConfigureNotify ,
-.PN CreateNotify ,
-.PN DestroyNotify ,
-.PN GravityNotify ,
-.PN MapNotify ,
-.PN MappingNotify ,
-.PN ReparentNotify ,
-.PN UnmapNotify ,
-.br
-.PN VisibilityNotify
-T}
-.sp 6p
-T{
-Colormap state notification event
-T} T{
-.PN ColormapNotify
-T}
-.sp 6p
-T{
-Client communication events
-T} T{
-.PN ClientMessage ,
-.PN PropertyNotify ,
-.PN SelectionClear ,
-.PN SelectionNotify ,
-.PN SelectionRequest
-T}
-.sp 6p
-_
-.TE
-.\".LP
-.\"Table 8-1 lists the event types and the Xlib functions that could cause
-.\"the X server to generate that event type.
-.\"The event types are listed alphabetically.
-.\"Note that the error event is not listed in this table.
-.\"For a list of the constants associated with an error event, see the Handling
-.\"Errors section in this chapter.
-.\".LP
-.\".so eventtable
-.NH 2
-Event Structures
-.XS
-\*(SN Event Structures
-.XE
-.LP
-For each event type,
-a corresponding structure is declared in
-.hN X11/Xlib.h .
-All the event structures have the following common members:
-.LP
-.IN "XAnyEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type;
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
-} XAnyEvent;
-.De
-.LP
-.eM
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.PN GraphicsExpose
-event to a client application, it sends an
-.PN XGraphicsExposeEvent
-structure with the type member set to
-.PN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.PN True
-if the event came from a
-.PN SendEvent
-protocol request.
-The serial member is set from the serial number reported in the protocol
-but expanded from the 16-bit least-significant bits to a full 32-bit value.
-The window member is set to the window that is most useful to toolkit
-dispatchers.
-.LP
-The X server can send events at any time in the input stream.
-Xlib stores any events received while waiting for a reply in an event queue
-for later use.
-Xlib also provides functions that allow you to check events
-in the event queue (see section 11.3).
-.LP
-In addition to the individual structures declared for each event type, the
-.PN XEvent
-structure is a union of the individual structures declared for each event type.
-Depending on the type,
-you should access members of each event by using the
-.PN XEvent
-union.
-.LP
-.IN "XEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef union _XEvent {
- int type; /* must not be changed */
- XAnyEvent xany;
- XKeyEvent xkey;
- XButtonEvent xbutton;
- XMotionEvent xmotion;
- XCrossingEvent xcrossing;
- XFocusChangeEvent xfocus;
- XExposeEvent xexpose;
- XGraphicsExposeEvent xgraphicsexpose;
- XNoExposeEvent xnoexpose;
- XVisibilityEvent xvisibility;
- XCreateWindowEvent xcreatewindow;
- XDestroyWindowEvent xdestroywindow;
- XUnmapEvent xunmap;
- XMapEvent xmap;
- XMapRequestEvent xmaprequest;
- XReparentEvent xreparent;
- XConfigureEvent xconfigure;
- XGravityEvent xgravity;
- XResizeRequestEvent xresizerequest;
- XConfigureRequestEvent xconfigurerequest;
- XCirculateEvent xcirculate;
- XCirculateRequestEvent xcirculaterequest;
- XPropertyEvent xproperty;
- XSelectionClearEvent xselectionclear;
- XSelectionRequestEvent xselectionrequest;
- XSelectionEvent xselection;
- XColormapEvent xcolormap;
- XClientMessageEvent xclient;
- XMappingEvent xmapping;
- XErrorEvent xerror;
- XKeymapEvent xkeymap;
- long pad[24];
-} XEvent;
-.De
-.LP
-.eM
-An
-.PN XEvent
-structure's first entry always is the type member,
-which is set to the event type.
-The second member always is the serial number of the protocol request
-that generated the event.
-The third member always is send_event,
-which is a
-.PN Bool
-that indicates if the event was sent by a different client.
-The fourth member always is a display,
-which is the display that the event was read from.
-Except for keymap events,
-the fifth member always is a window,
-which has been carefully selected to be useful to toolkit dispatchers.
-To avoid breaking toolkits,
-the order of these first five entries is not to change.
-Most events also contain a time member,
-which is the time at which an event occurred.
-In addition, a pointer to the generic event must be cast before it
-is used to access any other information in the structure.
-.NH 2
-Event Masks
-.XS
-\*(SN Event Masks
-.XE
-.LP
-.IN "Event mask" "" "@DEF@"
-Clients select event reporting of most events relative to a window.
-To do this, pass an event mask to an Xlib event-handling
-function that takes an event_mask argument.
-The bits of the event mask are defined in
-.hN X11/X.h .
-Each bit in the event mask maps to an event mask name,
-which describes the event or events you want the X server to
-return to a client application.
-.LP
-Unless the client has specifically asked for them,
-most events are not reported to clients when they are generated.
-Unless the client suppresses them by setting graphics-exposures in the GC to
-.PN False ,
-.PN GraphicsExpose
-and
-.PN NoExpose
-are reported by default as a result of
-.PN XCopyPlane
-and
-.PN XCopyArea .
-.PN SelectionClear ,
-.PN SelectionRequest ,
-.PN SelectionNotify ,
-or
-.PN ClientMessage
-cannot be masked.
-Selection-related events are only sent to clients cooperating
-with selections (see section 4.5).
-When the keyboard or pointer mapping is changed,
-.PN MappingNotify
-is always sent to clients.
-.LP
-.\"Table 8-2
-The following table
-lists the event mask constants you can pass to
-the event_mask argument and
-the circumstances in which you would want to specify the
-event mask:
-.LP
-.\" .CP T 2
-.\"Event Mask Definitions
-.TS H
-lw(2i) lw(3.5i).
-_
-.sp 6p
-.B
-Event Mask Circumstances
-.sp 6p
-_
-.sp 6p
-.TH
-.R
-T{
-.PN NoEventMask
-T} T{
-No events wanted
-T}
-T{
-.PN KeyPressMask
-T} T{
-Keyboard down events wanted
-T}
-T{
-.PN KeyReleaseMask
-T} T{
-Keyboard up events wanted
-T}
-T{
-.PN ButtonPressMask
-T} T{
-Pointer button down events wanted
-T}
-T{
-.PN ButtonReleaseMask
-T} T{
-Pointer button up events wanted
-T}
-T{
-.PN EnterWindowMask
-T} T{
-Pointer window entry events wanted
-T}
-T{
-.PN LeaveWindowMask
-T} T{
-Pointer window leave events wanted
-T}
-T{
-.PN PointerMotionMask
-T} T{
-Pointer motion events wanted
-T}
-T{
-.PN PointerMotionHintMask
-T} T{
-Pointer motion hints wanted
-T}
-T{
-.PN Button1MotionMask
-T} T{
-Pointer motion while button 1 down
-T}
-T{
-.PN Button2MotionMask
-T} T{
-Pointer motion while button 2 down
-T}
-T{
-.PN Button3MotionMask
-T} T{
-Pointer motion while button 3 down
-T}
-T{
-.PN Button4MotionMask
-T} T{
-Pointer motion while button 4 down
-T}
-T{
-.PN Button5MotionMask
-T} T{
-Pointer motion while button 5 down
-T}
-T{
-.PN ButtonMotionMask
-T} T{
-Pointer motion while any button down
-T}
-T{
-.PN KeymapStateMask
-T} T{
-Keyboard state wanted at window entry and focus in
-T}
-T{
-.PN ExposureMask
-T} T{
-Any exposure wanted
-T}
-T{
-.PN VisibilityChangeMask
-T} T{
-Any change in visibility wanted
-T}
-T{
-.PN StructureNotifyMask
-T} T{
-Any change in window structure wanted
-T}
-T{
-.PN ResizeRedirectMask
-T} T{
-Redirect resize of this window
-T}
-T{
-.PN SubstructureNotifyMask
-T} T{
-Substructure notification wanted
-T}
-T{
-.PN SubstructureRedirectMask
-T} T{
-Redirect structure requests on children
-T}
-T{
-.PN FocusChangeMask
-T} T{
-Any change in input focus wanted
-T}
-T{
-.PN PropertyChangeMask
-T} T{
-Any change in property wanted
-T}
-T{
-.PN ColormapChangeMask
-T} T{
-Any change in colormap wanted
-T}
-T{
-.PN OwnerGrabButtonMask
-T} T{
-Automatic grabs should activate with owner_events set to
-.PN True
-T}
-.sp 6p
-_
-.TE
-.LP
-.NH 2
-Event Processing Overview
-.XS
-\*(SN Event Processing Overview
-.XE
-.LP
-The event reported to a client application during event processing
-depends on which event masks you provide as the event-mask attribute
-for a window.
-For some event masks, there is a one-to-one correspondence between
-the event mask constant and the event type constant.
-For example, if you pass the event mask
-.PN ButtonPressMask ,
-the X server sends back only
-.PN ButtonPress
-events.
-.IN "CurrentTime"
-Most events contain a time member,
-which is the time at which an event occurred.
-.LP
-In other cases, one event mask constant can map to several event type constants.
-For example, if you pass the event mask
-.PN SubstructureNotifyMask ,
-the X server can send back
-.PN CirculateNotify ,
-.PN ConfigureNotify ,
-.PN CreateNotify ,
-.PN DestroyNotify ,
-.PN GravityNotify ,
-.PN MapNotify ,
-.PN ReparentNotify ,
-or
-.PN UnmapNotify
-events.
-.LP
-In another case,
-two event masks can map to one event type.
-For example,
-if you pass either
-.PN PointerMotionMask
-or
-.PN ButtonMotionMask ,
-the X server sends back
-a
-.PN MotionNotify
-event.
-.LP
-The following table
-lists the event mask,
-its associated event type or types,
-and the structure name associated with the event type.
-Some of these structures actually are typedefs to a generic structure
-that is shared between two event types.
-Note that N.A. appears in columns for which the information is not applicable.
-.LP
-.ps 9
-.nr PS 9
-.TS H
-lw(1.5i) lw(1i) lw(1.5i) lw(1.5i).
-_
-.sp 6p
-.B
-Event Mask Event Type Structure Generic Structure
-.sp 6p
-_
-.sp 6p
-.TH
-.R
-ButtonMotionMask MotionNotify XPointerMovedEvent XMotionEvent
-Button1MotionMask
-Button2MotionMask
-Button3MotionMask
-Button4MotionMask
-Button5MotionMask
-.sp 6p
-ButtonPressMask ButtonPress XButtonPressedEvent XButtonEvent
-.sp 6p
-ButtonReleaseMask ButtonRelease XButtonReleasedEvent XButtonEvent
-.sp 6p
-ColormapChangeMask ColormapNotify XColormapEvent
-.sp 6p
-EnterWindowMask EnterNotify XEnterWindowEvent XCrossingEvent
-.sp 6p
-LeaveWindowMask LeaveNotify XLeaveWindowEvent XCrossingEvent
-.sp 6p
-ExposureMask Expose XExposeEvent
-GCGraphicsExposures in GC GraphicsExpose XGraphicsExposeEvent
- NoExpose XNoExposeEvent
-.sp 6p
-FocusChangeMask FocusIn XFocusInEvent XFocusChangeEvent
- FocusOut XFocusOutEvent XFocusChangeEvent
-.sp 6p
-KeymapStateMask KeymapNotify XKeymapEvent
-.sp 6p
-KeyPressMask KeyPress XKeyPressedEvent XKeyEvent
-KeyReleaseMask KeyRelease XKeyReleasedEvent XKeyEvent
-.sp 6p
-OwnerGrabButtonMask N.A. N.A.
-.sp 6p
-PointerMotionMask MotionNotify XPointerMovedEvent XMotionEvent
-PointerMotionHintMask N.A. N.A.
-.sp 6p
-PropertyChangeMask PropertyNotify XPropertyEvent
-.sp 6p
-ResizeRedirectMask ResizeRequest XResizeRequestEvent
-.sp 6p
-StructureNotifyMask CirculateNotify XCirculateEvent
- ConfigureNotify XConfigureEvent
- DestroyNotify XDestroyWindowEvent
- GravityNotify XGravityEvent
- MapNotify XMapEvent
- ReparentNotify XReparentEvent
- UnmapNotify XUnmapEvent
-.sp 6p
-SubstructureNotifyMask CirculateNotify XCirculateEvent
- ConfigureNotify XConfigureEvent
- CreateNotify XCreateWindowEvent
- DestroyNotify XDestroyWindowEvent
- GravityNotify XGravityEvent
- MapNotify XMapEvent
- ReparentNotify XReparentEvent
- UnmapNotify XUnmapEvent
-.sp 6p
-SubstructureRedirectMask CirculateRequest XCirculateRequestEvent
- ConfigureRequest XConfigureRequestEvent
- MapRequest XMapRequestEvent
-.sp 6p
-N.A. ClientMessage XClientMessageEvent
-.sp 6p
-N.A. MappingNotify XMappingEvent
-.sp 6p
-N.A. SelectionClear XSelectionClearEvent
-.sp 6p
-N.A. SelectionNotify XSelectionEvent
-.sp 6p
-N.A. SelectionRequest XSelectionRequestEvent
-.sp 6p
-VisibilityChangeMask VisibilityNotify XVisibilityEvent
-.sp 6p
-_
-.TE
-.ps 11
-.nr PS 11
-.LP
-The sections that follow describe the processing that occurs
-when you select the different event masks.
-The sections are organized according to these processing categories:
-.IP \(bu 5
-Keyboard and pointer events
-.IP \(bu 5
-Window crossing events
-.IP \(bu 5
-Input focus events
-.IP \(bu 5
-Keymap state notification events
-.IP \(bu 5
-Exposure events
-.IP \(bu 5
-Window state notification events
-.IP \(bu 5
-Structure control events
-.IP \(bu 5
-Colormap state notification events
-.IP \(bu 5
-Client communication events
-.NH 2
-Keyboard and Pointer Events
-.XS
-\*(SN Keyboard and Pointer Events
-.XE
-.LP
-This section discusses:
-.IP \(bu 5
-Pointer button events
-.IP \(bu 5
-Keyboard and pointer events
-.NH 3
-Pointer Button Events
-.XS
-\*(SN Pointer Button Events
-.XE
-.LP
-The following describes the event processing that occurs when a pointer button
-press is processed with the pointer in some window w and
-when no active pointer grab is in progress.
-.LP
-The X server searches the ancestors of w from the root down,
-looking for a passive grab to activate.
-If no matching passive grab on the button exists,
-the X server automatically starts an active grab for the client receiving
-the event and sets the last-pointer-grab time to the current server time.
-The effect is essentially equivalent to an
-.PN XGrabButton
-with these client passed arguments:
-.TS H
-lw(1.5i) lw(3.5i).
-_
-.sp 6p
-.B
-Argument Value
-.sp 6p
-_
-.sp 6p
-.TH
-.R
-T{
-\fIw\fP
-T} T{
-The event window
-T}
-T{
-\fIevent_mask\fP
-T} T{
-The client's selected pointer events on the event window
-T}
-T{
-\fIpointer_mode\fP
-T} T{
-.PN GrabModeAsync
-T}
-T{
-\fIkeyboard_mode\fP
-T} T{
-.PN GrabModeAsync
-T}
-T{
-\fIowner_events\fP
-T} T{
-.PN True ,
-if the client has selected
-.PN OwnerGrabButtonMask
-on the event window,
-otherwise
-.PN False
-T}
-T{
-\fIconfine_to\fP
-T} T{
-.PN None
-T}
-T{
-\fIcursor\fP
-T} T{
-.PN None
-T}
-.sp 6p
-_
-.TE
-.LP
-The active grab is automatically terminated when
-the logical state of the pointer has all buttons released.
-Clients can modify the active grab by calling
-.PN XUngrabPointer
-and
-.PN XChangeActivePointerGrab .
-.NH 3
-Keyboard and Pointer Events
-.XS
-\*(SN Keyboard and Pointer Events
-.XE
-.LP
-.IN "Events" "ButtonPress"
-.IN "Events" "ButtonRelease"
-.IN "Events" "KeyPress"
-.IN "Events" "KeyRelease"
-.IN "Events" "MotionNotify"
-This section discusses the processing that occurs for the
-keyboard events
-.PN KeyPress
-and
-.PN KeyRelease
-and the pointer events
-.PN ButtonPress ,
-.PN ButtonRelease ,
-and
-.PN MotionNotify .
-For information about the keyboard event-handling utilities,
-see chapter 11.
-.LP
-.IN "KeyPress" "" "@DEF@"
-.IN "KeyRelease" "" "@DEF@"
-The X server reports
-.PN KeyPress
-or
-.PN KeyRelease
-events to clients wanting information about keys that logically change state.
-Note that these events are generated for all keys,
-even those mapped to modifier bits.
-.IN "ButtonPress" "" "@DEF@"
-.IN "ButtonRelease" "" "@DEF@"
-The X server reports
-.PN ButtonPress
-or
-.PN ButtonRelease
-events to clients wanting information about buttons that logically change state.
-.LP
-.IN "MotionNotify" "" "@DEF@"
-The X server reports
-.PN MotionNotify
-events to clients wanting information about when the pointer logically moves.
-The X server generates this event whenever the pointer is moved
-and the pointer motion begins and ends in the window.
-The granularity of
-.PN MotionNotify
-events is not guaranteed,
-but a client that selects this event type is guaranteed
-to receive at least one event when the pointer moves and then rests.
-.LP
-The generation of the logical changes lags the physical changes
-if device event processing is frozen.
-.LP
-To receive
-.PN KeyPress ,
-.PN KeyRelease ,
-.PN ButtonPress ,
-and
-.PN ButtonRelease
-events, set
-.PN KeyPressMask ,
-.PN KeyReleaseMask ,
-.PN ButtonPressMask ,
-and
-.PN ButtonReleaseMask
-bits in the event-mask attribute of the window.
-.LP
-To receive
-.PN MotionNotify
-events, set one or more of the following event
-masks bits in the event-mask attribute of the window.
-.IP \(bu 5
-.PN Button1MotionMask \ \-
-.PN Button5MotionMask
-.IP
-The client application receives
-.PN MotionNotify
-events only when one or more of the specified buttons is pressed.
-.IP \(bu 5
-.PN ButtonMotionMask
-.IP
-The client application receives
-.PN MotionNotify
-events only when at least one button is pressed.
-.IP \(bu 5
-.PN PointerMotionMask
-.IP
-The client application receives
-.PN MotionNotify
-events independent of the state of
-the pointer buttons.
-.IP \(bu 5
-.PN PointerMotionHintMask
-.IP
-If
-.PN PointerMotionHintMask
-is selected in combination with one or more of the above masks,
-the X server is free to send only one
-.PN MotionNotify
-event (with the is_hint member of the
-.PN XPointerMovedEvent
-structure set to
-.PN NotifyHint )
-to the client for the event window,
-until either the key or button state changes,
-the pointer leaves the event window, or the client calls
-.PN XQueryPointer
-or
-.PN XGetMotionEvents .
-The server still may send
-.PN MotionNotify
-events without is_hint set to
-.PN NotifyHint .
-.LP
-The source of the event is the viewable window that the pointer is in.
-The window used by the X server to report these events depends on
-the window's position in the window hierarchy
-and whether any intervening window prohibits the generation of these events.
-Starting with the source window,
-the X server searches up the window hierarchy until it locates the first
-window specified by a client as having an interest in these events.
-If one of the intervening windows has its do-not-propagate-mask
-set to prohibit generation of the event type,
-the events of those types will be suppressed.
-Clients can modify the actual window used for reporting by performing
-active grabs and, in the case of keyboard events, by using the focus window.
-.LP
-The structures for these event types contain:
-.LP
-.IN "XButtonEvent" "" "@DEF@"
-.IN "XButtonPressedEvent" "" "@DEF@"
-.IN "XButtonReleasedEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* ButtonPress or ButtonRelease */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* ``event'' window it is reported relative to */
- Window root; /* root window that the event occurred on */
- Window subwindow; /* child window */
- Time time; /* milliseconds */
- int x, y; /* pointer x, y coordinates in event window */
- int x_root, y_root; /* coordinates relative to root */
- unsigned int state; /* key or button mask */
- unsigned int button; /* detail */
- Bool same_screen; /* same screen flag */
-} XButtonEvent;
-typedef XButtonEvent XButtonPressedEvent;
-typedef XButtonEvent XButtonReleasedEvent;
-.De
-.LP
-.IN "XKeyEvent" "" "@DEF@"
-.IN "XKeyPressedEvent" "" "@DEF@"
-.IN "XKeyReleasedEvent" "" "@DEF@"
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* KeyPress or KeyRelease */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* ``event'' window it is reported relative to */
- Window root; /* root window that the event occurred on */
- Window subwindow; /* child window */
- Time time; /* milliseconds */
- int x, y; /* pointer x, y coordinates in event window */
- int x_root, y_root; /* coordinates relative to root */
- unsigned int state; /* key or button mask */
- unsigned int keycode; /* detail */
- Bool same_screen; /* same screen flag */
-} XKeyEvent;
-typedef XKeyEvent XKeyPressedEvent;
-typedef XKeyEvent XKeyReleasedEvent;
-.De
-.LP
-.IN "XMotionEvent" "" "@DEF@"
-.IN "XPointerMovedEvent" "" "@DEF@"
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* MotionNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* ``event'' window reported relative to */
- Window root; /* root window that the event occurred on */
- Window subwindow; /* child window */
- Time time; /* milliseconds */
- int x, y; /* pointer x, y coordinates in event window */
- int x_root, y_root; /* coordinates relative to root */
- unsigned int state; /* key or button mask */
- char is_hint; /* detail */
- Bool same_screen; /* same screen flag */
-} XMotionEvent;
-typedef XMotionEvent XPointerMovedEvent;
-.De
-.LP
-.eM
-These structures have the following common members:
-window, root, subwindow, time, x, y, x_root, y_root, state, and same_screen.
-The window member is set to the window on which the
-event was generated and is referred to as the event window.
-As long as the conditions previously discussed are met,
-this is the window used by the X server to report the event.
-The root member is set to the source window's root window.
-The x_root and y_root members are set to the pointer's coordinates
-relative to the root window's origin at the time of the event.
-.LP
-The same_screen member is set to indicate whether the event
-window is on the same screen
-as the root window and can be either
-.PN True
-or
-.PN False .
-If
-.PN True ,
-the event and root windows are on the same screen.
-If
-.PN False ,
-the event and root windows are not on the same screen.
-.LP
-If the source window is an inferior of the event window,
-the subwindow member of the structure is set to the child of the event window
-that is the source window or the child of the event window that is
-an ancestor of the source window.
-Otherwise, the X server sets the subwindow member to
-.PN None .
-The time member is set to the time when the event was generated
-and is expressed in milliseconds.
-.LP
-If the event window is on the same screen as the root window,
-the x and y members
-are set to the coordinates relative to the event window's origin.
-Otherwise, these members are set to zero.
-.LP
-The state member is set to indicate the logical state of the pointer buttons
-and modifier keys just prior to the event,
-which is the bitwise inclusive OR of one or more of the
-button or modifier key masks:
-.PN Button1Mask ,
-.PN Button2Mask ,
-.PN Button3Mask ,
-.PN Button4Mask ,
-.PN Button5Mask ,
-.PN ShiftMask ,
-.PN LockMask ,
-.PN ControlMask ,
-.PN Mod1Mask ,
-.PN Mod2Mask ,
-.PN Mod3Mask ,
-.PN Mod4Mask ,
-and
-.PN Mod5Mask .
-.LP
-Each of these structures also has a member that indicates the detail.
-For the
-.PN XKeyPressedEvent
-and
-.PN XKeyReleasedEvent
-structures, this member is called a keycode.
-It is set to a number that represents a physical key on the keyboard.
-The keycode is an arbitrary representation for any key on the keyboard
-(see sections 12.7 and 16.1).
-.LP
-For the
-.PN XButtonPressedEvent
-and
-.PN XButtonReleasedEvent
-structures, this member is called button.
-It represents the pointer button that changed state and can be the
-.PN Button1 ,
-.PN Button2 ,
-.PN Button3 ,
-.PN Button4 ,
-or
-.PN Button5
-value.
-For the
-.PN XPointerMovedEvent
-structure, this member is called is_hint.
-It can be set to
-.PN NotifyNormal
-or
-.PN NotifyHint .
-.LP
-Some of the symbols mentioned in this section have fixed values, as
-follows:
-.TS H
-lw(2i) lw(3.5i).
-_
-.sp 6p
-.B
-Symbol Value
-.sp 6p
-_
-.sp 6p
-.TH
-.R
-T{
-.PN Button1MotionMask
-T} T{
-(1L<<8)
-T}
-T{
-.PN Button2MotionMask
-T} T{
-(1L<<9)
-T}
-T{
-.PN Button3MotionMask
-T} T{
-(1L<<10)
-T}
-T{
-.PN Button4MotionMask
-T} T{
-(1L<<11)
-T}
-T{
-.PN Button5MotionMask
-T} T{
-(1L<<12)
-T}
-T{
-.PN Button1Mask
-T} T{
-(1<<8)
-T}
-T{
-.PN Button2Mask
-T} T{
-(1<<9)
-T}
-T{
-.PN Button3Mask
-T} T{
-(1<<10)
-T}
-T{
-.PN Button4Mask
-T} T{
-(1<<11)
-T}
-T{
-.PN Button5Mask
-T} T{
-(1<<12)
-T}
-T{
-.PN ShiftMask
-T} T{
-(1<<0)
-T}
-T{
-.PN LockMask
-T} T{
-(1<<1)
-T}
-T{
-.PN ControlMask
-T} T{
-(1<<2)
-T}
-T{
-.PN Mod1Mask
-T} T{
-(1<<3)
-T}
-T{
-.PN Mod2Mask
-T} T{
-(1<<4)
-T}
-T{
-.PN Mod3Mask
-T} T{
-(1<<5)
-T}
-T{
-.PN Mod4Mask
-T} T{
-(1<<6)
-T}
-T{
-.PN Mod5Mask
-T} T{
-(1<<7)
-T}
-T{
-.PN Button1
-T} T{
-1
-T}
-T{
-.PN Button2
-T} T{
-2
-T}
-T{
-.PN Button3
-T} T{
-3
-T}
-T{
-.PN Button4
-T} T{
-4
-T}
-T{
-.PN Button5
-T} T{
-5
-T}
-.sp 6p
-_
-.TE
-.NH 2
-Window Entry/Exit Events
-.XS
-\*(SN Window Entry/Exit Events
-.XE
-.LP
-.IN "Events" "EnterNotify"
-.IN "Events" "LeaveNotify"
-This section describes the processing that
-occurs for the window crossing events
-.PN EnterNotify
-and
-.PN LeaveNotify .
-.IN "EnterNotify" "" "@DEF@"
-.IN "LeaveNotify" "" "@DEF@"
-If a pointer motion or a window hierarchy change causes the
-pointer to be in a different window than before, the X server reports
-.PN EnterNotify
-or
-.PN LeaveNotify
-events to clients who have selected for these events.
-All
-.PN EnterNotify
-and
-.PN LeaveNotify
-events caused by a hierarchy change are
-generated after any hierarchy event
-.Pn ( UnmapNotify ,
-.PN MapNotify ,
-.PN ConfigureNotify ,
-.PN GravityNotify ,
-.PN CirculateNotify )
-caused by that change;
-however, the X protocol does not constrain the ordering of
-.PN EnterNotify
-and
-.PN LeaveNotify
-events with respect to
-.PN FocusOut ,
-.PN VisibilityNotify ,
-and
-.PN Expose
-events.
-.LP
-This contrasts with
-.PN MotionNotify
-events, which are also generated when the pointer moves
-but only when the pointer motion begins and ends in a single window.
-An
-.PN EnterNotify
-or
-.PN LeaveNotify
-event also can be generated when some client application calls
-.PN XGrabPointer
-and
-.PN XUngrabPointer .
-.LP
-To receive
-.PN EnterNotify
-or
-.PN LeaveNotify
-events, set the
-.PN EnterWindowMask
-or
-.PN LeaveWindowMask
-bits of the event-mask attribute of the window.
-.LP
-The structure for these event types contains:
-.LP
-.IN "XCrossingEvent" "" "@DEF@"
-.IN "XEnterWindowEvent" "" "@DEF@"
-.IN "XLeaveWindowEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* EnterNotify or LeaveNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* ``event'' window reported relative to */
- Window root; /* root window that the event occurred on */
- Window subwindow; /* child window */
- Time time; /* milliseconds */
- int x, y; /* pointer x, y coordinates in event window */
- int x_root, y_root; /* coordinates relative to root */
- int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
- int detail;
- /*
- * NotifyAncestor, NotifyVirtual, NotifyInferior,
- * NotifyNonlinear,NotifyNonlinearVirtual
- */
- Bool same_screen; /* same screen flag */
- Bool focus; /* boolean focus */
- unsigned int state; /* key or button mask */
-} XCrossingEvent;
-typedef XCrossingEvent XEnterWindowEvent;
-typedef XCrossingEvent XLeaveWindowEvent;
-.De
-.LP
-.eM
-The window member is set to the window on which the
-.PN EnterNotify
-or
-.PN LeaveNotify
-event was generated and is referred to as the event window.
-This is the window used by the X server to report the event,
-and is relative to the root
-window on which the event occurred.
-The root member is set to the root window of the screen
-on which the event occurred.
-.LP
-For a
-.PN LeaveNotify
-event,
-if a child of the event window contains the initial position of the pointer,
-the subwindow component is set to that child.
-Otherwise, the X server sets the subwindow member to
-.PN None .
-For an
-.PN EnterNotify
-event, if a child of the event window contains the final pointer position,
-the subwindow component is set to that child or
-.PN None .
-.LP
-The time member is set to the time when the event was generated
-and is expressed in milliseconds.
-The x and y members are set to the coordinates of the pointer position in
-the event window.
-This position is always the pointer's final position,
-not its initial position.
-If the event window is on the same
-screen as the root window, x and y are the pointer coordinates
-relative to the event window's origin.
-Otherwise, x and y are set to zero.
-The x_root and y_root members are set to the pointer's coordinates relative to the
-root window's origin at the time of the event.
-.LP
-The same_screen member is set to indicate whether the event window is on the same screen
-as the root window and can be either
-.PN True
-or
-.PN False .
-If
-.PN True ,
-the event and root windows are on the same screen.
-If
-.PN False ,
-the event and root windows are not on the same screen.
-.LP
-The focus member is set to indicate whether the event window is the focus window or an
-inferior of the focus window.
-The X server can set this member to either
-.PN True
-or
-.PN False .
-If
-.PN True ,
-the event window is the focus window or an inferior of the focus window.
-If
-.PN False ,
-the event window is not the focus window or an inferior of the focus window.
-.LP
-The state member is set to indicate the state of the pointer buttons and
-modifier keys just prior to the
-event.
-The X server can set this member to the bitwise inclusive OR of one
-or more of the button or modifier key masks:
-.PN Button1Mask ,
-.PN Button2Mask ,
-.PN Button3Mask ,
-.PN Button4Mask ,
-.PN Button5Mask ,
-.PN ShiftMask ,
-.PN LockMask ,
-.PN ControlMask ,
-.PN Mod1Mask ,
-.PN Mod2Mask ,
-.PN Mod3Mask ,
-.PN Mod4Mask ,
-.PN Mod5Mask .
-.LP
-The mode member is set to indicate whether the events are normal events,
-pseudo-motion events
-when a grab activates, or pseudo-motion events when a grab deactivates.
-The X server can set this member to
-.PN NotifyNormal ,
-.PN NotifyGrab ,
-or
-.PN NotifyUngrab .
-.LP
-The detail member is set to indicate the notify detail and can be
-.PN NotifyAncestor ,
-.PN NotifyVirtual ,
-.PN NotifyInferior ,
-.PN NotifyNonlinear ,
-or
-.PN NotifyNonlinearVirtual .
-.NH 3
-Normal Entry/Exit Events
-.XS
-\*(SN Normal Entry/Exit Events
-.XE
-.LP
-.PN EnterNotify
-and
-.PN LeaveNotify
-events are generated when the pointer moves from
-one window to another window.
-Normal events are identified by
-.PN XEnterWindowEvent
-or
-.PN XLeaveWindowEvent
-structures whose mode member is set to
-.PN NotifyNormal .
-.IP \(bu 5
-When the pointer moves from window A to window B and A is an inferior of B,
-the X server does the following:
-.RS
-.IP \- 5
-It generates a
-.PN LeaveNotify
-event on window A, with the detail member of the
-.PN XLeaveWindowEvent
-structure set to
-.PN NotifyAncestor .
-.IP \- 5
-It generates a
-.PN LeaveNotify
-event on each window between window A and window B, exclusive,
-with the detail member of each
-.PN XLeaveWindowEvent
-structure set to
-.PN NotifyVirtual .
-.IP \- 5
-It generates an
-.PN EnterNotify
-event on window B, with the detail member of the
-.PN XEnterWindowEvent
-structure set to
-.PN NotifyInferior .
-.RE
-.IP \(bu 5
-When the pointer moves from window A to window B and B is an inferior of A,
-the X server does the following:
-.RS
-.IP \- 5
-It generates a
-.PN LeaveNotify
-event on window A,
-with the detail member of the
-.PN XLeaveWindowEvent
-structure set to
-.PN NotifyInferior .
-.IP \- 5
-It generates an
-.PN EnterNotify
-event on each window between window A and window B, exclusive, with the
-detail member of each
-.PN XEnterWindowEvent
-structure set to
-.PN NotifyVirtual .
-.IP \- 5
-It generates an
-.PN EnterNotify
-event on window B, with the detail member of the
-.PN XEnterWindowEvent
-structure set to
-.PN NotifyAncestor .
-.RE
-.IP \(bu 5
-When the pointer moves from window A to window B
-and window C is their least common ancestor,
-the X server does the following:
-.RS
-.IP \- 5
-It generates a
-.PN LeaveNotify
-event on window A,
-with the detail member of the
-.PN XLeaveWindowEvent
-structure set to
-.PN NotifyNonlinear .
-.IP \- 5
-It generates a
-.PN LeaveNotify
-event on each window between window A and window C, exclusive,
-with the detail member of each
-.PN XLeaveWindowEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-It generates an
-.PN EnterNotify
-event on each window between window C and window B, exclusive,
-with the detail member of each
-.PN XEnterWindowEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-It generates an
-.PN EnterNotify
-event on window B, with the detail member of the
-.PN XEnterWindowEvent
-structure set to
-.PN NotifyNonlinear .
-.RE
-.IP \(bu 5
-When the pointer moves from window A to window B on different screens,
-the X server does the following:
-.RS
-.IP \- 5
-It generates a
-.PN LeaveNotify
-event on window A,
-with the detail member of the
-.PN XLeaveWindowEvent
-structure set to
-.PN NotifyNonlinear .
-.IP \- 5
-If window A is not a root window,
-it generates a
-.PN LeaveNotify
-event on each window above window A up to and including its root,
-with the detail member of each
-.PN XLeaveWindowEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-If window B is not a root window,
-it generates an
-.PN EnterNotify
-event on each window from window B's root down to but not including
-window B, with the detail member of each
-.PN XEnterWindowEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-It generates an
-.PN EnterNotify
-event on window B, with the detail member of the
-.PN XEnterWindowEvent
-structure set to
-.PN NotifyNonlinear .
-.RE
-.\".SH 3
-.NH 3
-Grab and Ungrab Entry/Exit Events
-.XS
-\*(SN Grab and Ungrab Entry/Exit Events
-.XE
-.LP
-Pseudo-motion mode
-.PN EnterNotify
-and
-.PN LeaveNotify
-events are generated when a pointer grab activates or deactivates.
-Events in which the pointer grab activates
-are identified by
-.PN XEnterWindowEvent
-or
-.PN XLeaveWindowEvent
-structures whose mode member is set to
-.PN NotifyGrab .
-Events in which the pointer grab deactivates
-are identified by
-.PN XEnterWindowEvent
-or
-.PN XLeaveWindowEvent
-structures whose mode member is set to
-.PN NotifyUngrab
-(see
-.PN XGrabPointer ).
-.IP \(bu 5
-When a pointer grab activates after any initial warp into a confine_to
-window and before generating any actual
-.PN ButtonPress
-event that activates the grab,
-G is the grab_window for the grab,
-and P is the window the pointer is in,
-the X server does the following:
-.RS
-.IP \- 5
-It generates
-.PN EnterNotify
-and
-.PN LeaveNotify
-events (see section 10.6.1)
-with the mode members of the
-.PN XEnterWindowEvent
-and
-.PN XLeaveWindowEvent
-structures set to
-.PN NotifyGrab .
-These events are generated
-as if the pointer were to suddenly warp from
-its current position in P to some position in G.
-However, the pointer does not warp, and the X server uses the pointer position
-as both the initial and final positions for the events.
-.RE
-.IP \(bu 5
-When a pointer grab deactivates after generating any actual
-.PN ButtonRelease
-event that deactivates the grab,
-G is the grab_window for the grab,
-and P is the window the pointer is in,
-the X server does the following:
-.RS
-.IP \- 5
-It generates
-.PN EnterNotify
-and
-.PN LeaveNotify
-events (see section 10.6.1)
-with the mode members of the
-.PN XEnterWindowEvent
-and
-.PN XLeaveWindowEvent
-structures set to
-.PN NotifyUngrab .
-These events are generated as if the pointer were to suddenly warp from
-some position in G to its current position in P.
-However, the pointer does not warp, and the X server uses the
-current pointer position as both the
-initial and final positions for the events.
-.RE
-.NH 2
-Input Focus Events
-.XS
-\*(SN Input Focus Events
-.XE
-.LP
-.IN "Events" "FocusIn"
-.IN "Events" "FocusOut"
-This section describes the processing that occurs for the input focus events
-.PN FocusIn
-and
-.PN FocusOut .
-.IN "FocusIn" "" "@DEF@"
-.IN "FocusOut" "" "@DEF@"
-The X server can report
-.PN FocusIn
-or
-.PN FocusOut
-events to clients wanting information about when the input focus changes.
-The keyboard is always attached to some window
-(typically, the root window or a top-level window),
-which is called the focus window.
-The focus window and the position of the pointer determine the window that
-receives keyboard input.
-Clients may need to know when the input focus changes
-to control highlighting of areas on the screen.
-.LP
-To receive
-.PN FocusIn
-or
-.PN FocusOut
-events, set the
-.PN FocusChangeMask
-bit in the event-mask attribute of the window.
-.LP
-The structure for these event types contains:
-.LP
-.IN "XFocusChangeEvent" "" "@DEF@"
-.IN "XFocusInEvent" "" "@DEF@"
-.IN "XFocusOutEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* FocusIn or FocusOut */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window of event */
- int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
- int detail;
- /*
- * NotifyAncestor, NotifyVirtual, NotifyInferior,
- * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
- * NotifyPointerRoot, NotifyDetailNone
- */
-} XFocusChangeEvent;
-typedef XFocusChangeEvent XFocusInEvent;
-typedef XFocusChangeEvent XFocusOutEvent;
-.De
-.LP
-.eM
-The window member is set to the window on which the
-.PN FocusIn
-or
-.PN FocusOut
-event was generated.
-This is the window used by the X server to report the event.
-The mode member is set to indicate whether the focus events
-are normal focus events,
-focus events while grabbed,
-focus events
-when a grab activates, or focus events when a grab deactivates.
-The X server can set the mode member to
-.PN NotifyNormal ,
-.PN NotifyWhileGrabbed ,
-.PN NotifyGrab ,
-or
-.PN NotifyUngrab .
-.LP
-All
-.PN FocusOut
-events caused by a window unmap are generated after any
-.PN UnmapNotify
-event; however, the X protocol does not constrain the ordering of
-.PN FocusOut
-events with respect to
-generated
-.PN EnterNotify ,
-.PN LeaveNotify ,
-.PN VisibilityNotify ,
-and
-.PN Expose
-events.
-.LP
-Depending on the event mode,
-the detail member is set to indicate the notify detail and can be
-.PN NotifyAncestor ,
-.PN NotifyVirtual ,
-.PN NotifyInferior ,
-.PN NotifyNonlinear ,
-.PN NotifyNonlinearVirtual ,
-.PN NotifyPointer ,
-.PN NotifyPointerRoot ,
-or
-.PN NotifyDetailNone .
-.NH 3
-Normal Focus Events and Focus Events While Grabbed
-.XS
-\*(SN Normal Focus Events and Focus Events While Grabbed
-.XE
-.LP
-Normal focus events are identified by
-.PN XFocusInEvent
-or
-.PN XFocusOutEvent
-structures whose mode member is set to
-.PN NotifyNormal .
-Focus events while grabbed are identified by
-.PN XFocusInEvent
-or
-.PN XFocusOutEvent
-structures whose mode member is set to
-.PN NotifyWhileGrabbed .
-The X server processes normal focus and focus events while grabbed according to
-the following:
-.IP \(bu 5
-When the focus moves from window A to window B, A is an inferior of B,
-and the pointer is in window P,
-the X server does the following:
-.RS
-.IP \- 5
-It generates a
-.PN FocusOut
-event on window A, with the detail member of the
-.PN XFocusOutEvent
-structure set to
-.PN NotifyAncestor .
-.IP \- 5
-It generates a
-.PN FocusOut
-event on each window between window A and window B, exclusive,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyVirtual .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on window B, with the detail member of the
-.PN XFocusOutEvent
-structure set to
-.PN NotifyInferior .
-.IP \- 5
-If window P is an inferior of window B
-but window P is not window A or an inferior or ancestor of window A,
-it generates a
-.PN FocusIn
-event on each window below window B, down to and including window P,
-with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyPointer .
-.RE
-.IP \(bu 5
-When the focus moves from window A to window B, B is an inferior of A,
-and the pointer is in window P,
-the X server does the following:
-.RS
-.IP \- 5
-If window P is an inferior of window A
-but P is not an inferior of window B or an ancestor of B,
-it generates a
-.PN FocusOut
-event on each window from window P up to but not including window A,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyPointer .
-.IP \- 5
-It generates a
-.PN FocusOut
-event on window A,
-with the detail member of the
-.PN XFocusOutEvent
-structure set to
-.PN NotifyInferior .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on each window between window A and window B, exclusive, with the
-detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyVirtual .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on window B, with the detail member of the
-.PN XFocusInEvent
-structure set to
-.PN NotifyAncestor .
-.RE
-.IP \(bu 5
-When the focus moves from window A to window B,
-window C is their least common ancestor,
-and the pointer is in window P,
-the X server does the following:
-.RS
-.IP \- 5
-If window P is an inferior of window A,
-it generates a
-.PN FocusOut
-event on each window from window P up to but not including window A,
-with the detail member of the
-.PN XFocusOutEvent
-structure set to
-.PN NotifyPointer .
-.IP \- 5
-It generates a
-.PN FocusOut
-event on window A,
-with the detail member of the
-.PN XFocusOutEvent
-structure set to
-.PN NotifyNonlinear .
-.IP \- 5
-It generates a
-.PN FocusOut
-event on each window between window A and window C, exclusive,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on each window between C and B, exclusive,
-with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on window B, with the detail member of the
-.PN XFocusInEvent
-structure set to
-.PN NotifyNonlinear .
-.IP \- 5
-If window P is an inferior of window B, it generates a
-.PN FocusIn
-event on each window below window B down to and including window P,
-with the detail member of the
-.PN XFocusInEvent
-structure set to
-.PN NotifyPointer .
-.RE
-.IP \(bu 5
-When the focus moves from window A to window B on different screens
-and the pointer is in window P,
-the X server does the following:
-.RS
-.IP \- 5
-If window P is an inferior of window A, it generates a
-.PN FocusOut
-event on each window from window P up to but not including window A,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyPointer .
-.IP \- 5
-It generates a
-.PN FocusOut
-event on window A,
-with the detail member of the
-.PN XFocusOutEvent
-structure set to
-.PN NotifyNonlinear .
-.IP \- 5
-If window A is not a root window,
-it generates a
-.PN FocusOut
-event on each window above window A up to and including its root,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-If window B is not a root window,
-it generates a
-.PN FocusIn
-event on each window from window B's root down to but not including
-window B, with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on window B, with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyNonlinear .
-.IP \- 5
-If window P is an inferior of window B, it generates a
-.PN FocusIn
-event on each window below window B down to and including window P,
-with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyPointer .
-.RE
-.IP \(bu 5
-When the focus moves from window A to
-.PN PointerRoot
-(events sent to the window under the pointer)
-or
-.PN None
-(discard), and the pointer is in window P,
-the X server does the following:
-.RS
-.IP \- 5
-If window P is an inferior of window A, it generates a
-.PN FocusOut
-event on each window from window P up to but not including window A,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyPointer .
-.IP \- 5
-It generates a
-.PN FocusOut
-event on window A, with the detail member of the
-.PN XFocusOutEvent
-structure set to
-.PN NotifyNonlinear .
-.IP \- 5
-If window A is not a root window,
-it generates a
-.PN FocusOut
-event on each window above window A up to and including its root,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on the root window of all screens, with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyPointerRoot
-(or
-.PN NotifyDetailNone ).
-.IP \- 5
-If the new focus is
-.PN PointerRoot ,
-it generates a
-.PN FocusIn
-event on each window from window P's root down to and including window P,
-with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyPointer .
-.RE
-.IP \(bu 5
-When the focus moves from
-.PN PointerRoot
-(events sent to the window under the pointer)
-or
-.PN None
-to window A, and the pointer is in window P,
-the X server does the following:
-.RS
-.IP \- 5
-If the old focus is
-.PN PointerRoot ,
-it generates a
-.PN FocusOut
-event on each window from window P up to and including window P's root,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyPointer .
-.IP \- 5
-It generates a
-.PN FocusOut
-event on all root windows,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyPointerRoot
-(or
-.PN NotifyDetailNone ).
-.IP \- 5
-If window A is not a root window,
-it generates a
-.PN FocusIn
-event on each window from window A's root down to but not including window A,
-with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyNonlinearVirtual .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on window A,
-with the detail member of the
-.PN XFocusInEvent
-structure set to
-.PN NotifyNonlinear .
-.IP \- 5
-If window P is an inferior of window A, it generates a
-.PN FocusIn
-event on each window below window A down to and including window P,
-with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyPointer .
-.RE
-.IP \(bu 5
-When the focus moves from
-.PN PointerRoot
-(events sent to the window under the pointer)
-to
-.PN None
-(or vice versa), and the pointer is in window P,
-the X server does the following:
-.RS
-.IP \- 5
-If the old focus is
-.PN PointerRoot ,
-it generates a
-.PN FocusOut
-event on each window from window P up to and including window P's root,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to
-.PN NotifyPointer .
-.IP \- 5
-It generates a
-.PN FocusOut
-event on all root windows,
-with the detail member of each
-.PN XFocusOutEvent
-structure set to either
-.PN NotifyPointerRoot
-or
-.PN NotifyDetailNone .
-.IP \- 5
-It generates a
-.PN FocusIn
-event on all root windows,
-with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyDetailNone
-or
-.PN NotifyPointerRoot .
-.IP \- 5
-If the new focus is
-.PN PointerRoot ,
-it generates a
-.PN FocusIn
-event on each window from window P's root down to and including window P,
-with the detail member of each
-.PN XFocusInEvent
-structure set to
-.PN NotifyPointer .
-.RE
-.\".SH 3
-.NH 3
-Focus Events Generated by Grabs
-.XS
-\*(SN Focus Events Generated by Grabs
-.XE
-.LP
-Focus events in which the keyboard grab activates
-are identified by
-.PN XFocusInEvent
-or
-.PN XFocusOutEvent
-structures whose mode member is set to
-.PN NotifyGrab .
-Focus events in which the keyboard grab deactivates
-are identified by
-.PN XFocusInEvent
-or
-.PN XFocusOutEvent
-structures whose mode member is set to
-.PN NotifyUngrab
-(see
-.PN XGrabKeyboard ).
-.IP \(bu 5
-When a keyboard grab activates before generating any actual
-.PN KeyPress
-event that activates the grab,
-G is the grab_window, and F is the current focus,
-the X server does the following:
-.RS
-.IP \- 5
-It generates
-.PN FocusIn
-and
-.PN FocusOut
-events, with the mode members of the
-.PN XFocusInEvent
-and
-.PN XFocusOutEvent
-structures set to
-.PN NotifyGrab .
-These events are generated
-as if the focus were to change from
-F to G.
-.RE
-.IP \(bu 5
-When a keyboard grab deactivates after generating any actual
-.PN KeyRelease
-event that deactivates the grab,
-G is the grab_window, and F is the current focus,
-the X server does the following:
-.RS
-.IP \- 5
-It generates
-.PN FocusIn
-and
-.PN FocusOut
-events, with the mode members of the
-.PN XFocusInEvent
-and
-.PN XFocusOutEvent
-structures set to
-.PN NotifyUngrab .
-These events are generated
-as if the focus were to change from
-G to F.
-.RE
-.NH 2
-Key Map State Notification Events
-.XS
-\*(SN Key Map State Notification Events
-.XE
-.LP
-.IN "Events" "KeymapNotify"
-.IN "KeymapNotify" "" "@DEF@"
-The X server can report
-.PN KeymapNotify
-events to clients that want information about changes in their keyboard state.
-.LP
-To receive
-.PN KeymapNotify
-events, set the
-.PN KeymapStateMask
-bit in the event-mask attribute of the window.
-The X server generates this event immediately after every
-.PN EnterNotify
-and
-.PN FocusIn
-event.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XKeymapEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-/* generated on EnterWindow and FocusIn when KeymapState selected */
-typedef struct {
- int type; /* KeymapNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- char key_vector[32];
-} XKeymapEvent;
-.De
-.LP
-.eM
-The window member is not used but is present to aid some toolkits.
-The key_vector member is set to the bit vector of the keyboard.
-Each bit set to 1 indicates that the corresponding key
-is currently pressed.
-The vector is represented as 32 bytes.
-Byte N (from 0) contains the bits for keys 8N to 8N + 7
-with the least significant bit in the byte representing key 8N.
-.NH 2
-Exposure Events
-.XS
-\*(SN Exposure Events
-.XE
-.LP
-The X protocol does not guarantee to preserve the contents of window
-regions when
-the windows are obscured or reconfigured.
-Some implementations may preserve the contents of windows.
-Other implementations are free to destroy the contents of windows
-when exposed.
-X expects client applications to assume the responsibility for
-restoring the contents of an exposed window region.
-(An exposed window region describes a formerly obscured window whose
-region becomes visible.)
-Therefore, the X server sends
-.PN Expose
-events describing the window and the region of the window that has been exposed.
-A naive client application usually redraws the entire window.
-A more sophisticated client application redraws only the exposed region.
-.NH 3
-Expose Events
-.XS
-\*(SN Expose Events
-.XE
-.LP
-.IN "Events" "Expose"
-.IN "Expose" "" "@DEF@"
-The X server can report
-.PN Expose
-events to clients wanting information about when the contents of window regions
-have been lost.
-The circumstances in which the X server generates
-.PN Expose
-events are not as definite as those for other events.
-However, the X server never generates
-.PN Expose
-events on windows whose class you specified as
-.PN InputOnly .
-The X server can generate
-.PN Expose
-events when no valid contents are available for regions of a window
-and either the regions are visible,
-the regions are viewable and the server is (perhaps newly) maintaining
-backing store on the window,
-or the window is not viewable but the server is (perhaps newly) honoring the
-window's backing-store attribute of
-.PN Always
-or
-.PN WhenMapped .
-The regions decompose into an (arbitrary) set of rectangles,
-and an
-.PN Expose
-event is generated for each rectangle.
-For any given window,
-the X server guarantees to report contiguously
-all of the regions exposed by some action that causes
-.PN Expose
-events, such as raising a window.
-.LP
-To receive
-.PN Expose
-events, set the
-.PN ExposureMask
-bit in the event-mask attribute of the window.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XExposeEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* Expose */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- int x, y;
- int width, height;
- int count; /* if nonzero, at least this many more */
-} XExposeEvent;
-.De
-.LP
-.eM
-The window member is set to the exposed (damaged) window.
-The x and y members are set to the coordinates relative to the window's origin
-and indicate the upper-left corner of the rectangle.
-The width and height members are set to the size (extent) of the rectangle.
-The count member is set to the number of
-.PN Expose
-events that are to follow.
-If count is zero, no more
-.PN Expose
-events follow for this window.
-However, if count is nonzero, at least that number of
-.PN Expose
-events (and possibly more) follow for this window.
-Simple applications that do not want to optimize redisplay by distinguishing
-between subareas of its window can just ignore all
-.PN Expose
-events with nonzero counts and perform full redisplays
-on events with zero counts.
-.NH 3
-GraphicsExpose and NoExpose Events
-.XS
-\*(SN GraphicsExpose and NoExpose Events
-.XE
-.LP
-.IN "Events" "GraphicsExpose"
-.IN "Events" "NoExpose"
-.IN "GraphicsExpose" "" "@DEF@"
-The X server can report
-.PN GraphicsExpose
-events to clients wanting information about when a destination region could not
-be computed during certain graphics requests:
-.PN XCopyArea
-or
-.PN XCopyPlane .
-The X server generates this event whenever a destination region could not be
-computed because of an obscured or out-of-bounds source region.
-In addition, the X server guarantees to report contiguously all of the regions exposed by
-some graphics request
-(for example, copying an area of a drawable to a destination
-drawable).
-.LP
-.IN "NoExpose" "" "@DEF@"
-The X server generates a
-.PN NoExpose
-event whenever a graphics request that might
-produce a
-.PN GraphicsExpose
-event does not produce any.
-In other words, the client is really asking for a
-.PN GraphicsExpose
-event but instead receives a
-.PN NoExpose
-event.
-.LP
-To receive
-.PN GraphicsExpose
-or
-.PN NoExpose
-events, you must first set the graphics-exposure
-attribute of the graphics context to
-.PN True .
-You also can set the graphics-expose attribute when creating a graphics
-context using
-.PN XCreateGC
-or by calling
-.PN XSetGraphicsExposures .
-.LP
-The structures for these event types contain:
-.LP
-.IN "XGraphicsExposeEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* GraphicsExpose */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Drawable drawable;
- int x, y;
- int width, height;
- int count; /* if nonzero, at least this many more */
- int major_code; /* core is CopyArea or CopyPlane */
- int minor_code; /* not defined in the core */
-} XGraphicsExposeEvent;
-.De
-.LP
-.IN "XNoExposeEvent" "" "@DEF@"
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* NoExpose */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Drawable drawable;
- int major_code; /* core is CopyArea or CopyPlane */
- int minor_code; /* not defined in the core */
-} XNoExposeEvent;
-.De
-.LP
-.eM
-Both structures have these common members: drawable, major_code, and minor_code.
-The drawable member is set to the drawable of the destination region on
-which the graphics request was to be performed.
-The major_code member is set to the graphics request initiated by the client
-and can be either
-.PN X_CopyArea
-or
-.PN X_CopyPlane .
-If it is
-.PN X_CopyArea ,
-a call to
-.PN XCopyArea
-initiated the request.
-If it is
-.PN X_CopyPlane ,
-a call to
-.PN XCopyPlane
-initiated the request.
-These constants are defined in
-.hN X11/Xproto.h .
-The minor_code member,
-like the major_code member,
-indicates which graphics request was initiated by
-the client.
-However, the minor_code member is not defined by the core
-X protocol and will be zero in these cases,
-although it may be used by an extension.
-.LP
-The
-.PN XGraphicsExposeEvent
-structure has these additional members: x, y, width, height, and count.
-The x and y members are set to the coordinates relative to the drawable's origin
-and indicate the upper-left corner of the rectangle.
-The width and height members are set to the size (extent) of the rectangle.
-The count member is set to the number of
-.PN GraphicsExpose
-events to follow.
-If count is zero, no more
-.PN GraphicsExpose
-events follow for this window.
-However, if count is nonzero, at least that number of
-.PN GraphicsExpose
-events (and possibly more) are to follow for this window.
-.NH 2
-Window State Change Events
-.XS
-\*(SN Window State Change Events
-.XE
-.LP
-The following sections discuss:
-.IP \(bu 5
-.PN CirculateNotify
-events
-.IP \(bu 5
-.PN ConfigureNotify
-events
-.IP \(bu 5
-.PN CreateNotify
-events
-.IP \(bu 5
-.PN DestroyNotify
-events
-.IP \(bu 5
-.PN GravityNotify
-events
-.IP \(bu 5
-.PN MapNotify
-events
-.IP \(bu 5
-.PN MappingNotify
-events
-.IP \(bu 5
-.PN ReparentNotify
-events
-.IP \(bu 5
-.PN UnmapNotify
-events
-.IP \(bu 5
-.PN VisibilityNotify
-events
-.\" .SH 3
-.NH 3
-CirculateNotify Events
-.XS
-\*(SN CirculateNotify Events
-.XE
-.LP
-.IN "Events" "CirculateNotify"
-.IN "CirculateNotify" "" "@DEF@"
-The X server can report
-.PN CirculateNotify
-events to clients wanting information about when a window changes
-its position in the stack.
-The X server generates this event type whenever a window is actually restacked
-as a result of a client application calling
-.PN XCirculateSubwindows ,
-.PN XCirculateSubwindowsUp ,
-or
-.PN XCirculateSubwindowsDown .
-.LP
-To receive
-.PN CirculateNotify
-events, set the
-.PN StructureNotifyMask
-bit in the event-mask attribute of the window
-or the
-.PN SubstructureNotifyMask
-bit in the event-mask attribute of the parent window
-(in which case, circulating any child generates an event).
-.LP
-The structure for this event type contains:
-.LP
-.IN "XCirculateEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* CirculateNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- int place; /* PlaceOnTop, PlaceOnBottom */
-} XCirculateEvent;
-.De
-.LP
-.eM
-The event member is set either to the restacked window or to its parent,
-depending on whether
-.PN StructureNotify
-or
-.PN SubstructureNotify
-was selected.
-The window member is set to the window that was restacked.
-The place member is set to the window's position after the restack occurs and
-is either
-.PN PlaceOnTop
-or
-.PN PlaceOnBottom .
-If it is
-.PN PlaceOnTop ,
-the window is now on top of all siblings.
-If it is
-.PN PlaceOnBottom ,
-the window is now below all siblings.
-.NH 3
-ConfigureNotify Events
-.XS
-\*(SN ConfigureNotify Events
-.XE
-.LP
-.IN "Events" "ConfigureNotify"
-.IN "ConfigureNotify" "" "@DEF@"
-The X server can report
-.PN ConfigureNotify
-events to clients wanting information about actual changes to a window's
-state, such as size, position, border, and stacking order.
-The X server generates this event type whenever one of the following configure
-window requests made by a client application actually completes:
-.IP \(bu 5
-A window's size, position, border, and/or stacking order is reconfigured
-by calling
-.PN XConfigureWindow .
-.IP \(bu 5
-The window's position in the stacking order is changed by calling
-.PN XLowerWindow ,
-.PN XRaiseWindow ,
-or
-.PN XRestackWindows .
-.IP \(bu 5
-A window is moved by calling
-.PN XMoveWindow .
-.IP \(bu 5
-A window's size is changed by calling
-.PN XResizeWindow .
-.IP \(bu 5
-A window's size and location is changed by calling
-.PN XMoveResizeWindow .
-.IP \(bu 5
-A window is mapped and its position in the stacking order is changed
-by calling
-.PN XMapRaised .
-.IP \(bu 5
-A window's border width is changed by calling
-.PN XSetWindowBorderWidth .
-.LP
-To receive
-.PN ConfigureNotify
-events, set the
-.PN StructureNotifyMask
-bit in the event-mask attribute of the window or the
-.PN SubstructureNotifyMask
-bit in the event-mask attribute of the parent window
-(in which case, configuring any child generates an event).
-.LP
-The structure for this event type contains:
-.LP
-.IN "XConfigureEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* ConfigureNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- int x, y;
- int width, height;
- int border_width;
- Window above;
- Bool override_redirect;
-} XConfigureEvent;
-.De
-.LP
-.eM
-The event member is set either to the reconfigured window or to its parent,
-depending on whether
-.PN StructureNotify
-or
-.PN SubstructureNotify
-was selected.
-The window member is set to the window whose size, position,
-border, and/or stacking
-order was changed.
-.LP
-The x and y members are set to the coordinates relative to the parent window's
-origin and indicate the position of the upper-left outside corner of the window.
-The width and height members are set to the inside size of the window,
-not including
-the border.
-The border_width member is set to the width of the window's border, in pixels.
-.LP
-The above member is set to the sibling window and is used
-for stacking operations.
-If the X server sets this member to
-.PN None ,
-the window whose state was changed is on the bottom of the stack
-with respect to sibling windows.
-However, if this member is set to a sibling window,
-the window whose state was changed is placed on top of this sibling window.
-.LP
-The override_redirect member is set to the override-redirect attribute of the
-window.
-Window manager clients normally should ignore this window if the
-override_redirect member
-is
-.PN True .
-.NH 3
-CreateNotify Events
-.XS
-\*(SN CreateNotify Events
-.XE
-.LP
-.IN "Events" "CreateNotify"
-.IN "CreateNotify" "" "@DEF@"
-The X server can report
-.PN CreateNotify
-events to clients wanting information about creation of windows.
-The X server generates this event whenever a client
-application creates a window by calling
-.PN XCreateWindow
-or
-.PN XCreateSimpleWindow .
-.LP
-To receive
-.PN CreateNotify
-events, set the
-.PN SubstructureNotifyMask
-bit in the event-mask attribute of the window.
-Creating any children then generates an event.
-.LP
-The structure for the event type contains:
-.LP
-.IN "XCreateWindowEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* CreateNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window parent; /* parent of the window */
- Window window; /* window id of window created */
- int x, y; /* window location */
- int width, height; /* size of window */
- int border_width; /* border width */
- Bool override_redirect; /* creation should be overridden */
-} XCreateWindowEvent;
-.De
-.LP
-.eM
-The parent member is set to the created window's parent.
-The window member specifies the created window.
-The x and y members are set to the created window's coordinates relative
-to the parent window's origin and indicate the position of the upper-left
-outside corner of the created window.
-The width and height members are set to the inside size of the created window
-(not including the border) and are always nonzero.
-The border_width member is set to the width of the created window's border, in pixels.
-The override_redirect member is set to the override-redirect attribute of the
-window.
-Window manager clients normally should ignore this window
-if the override_redirect member is
-.PN True .
-.NH 3
-DestroyNotify Events
-.XS
-\*(SN DestroyNotify Events
-.XE
-.LP
-.IN "Events" "DestroyNotify"
-.IN "DestroyNotify" "" "@DEF@"
-The X server can report
-.PN DestroyNotify
-events to clients wanting information about which windows are destroyed.
-The X server generates this event whenever a client application destroys a
-window by calling
-.PN XDestroyWindow
-or
-.PN XDestroySubwindows .
-.LP
-The ordering of the
-.PN DestroyNotify
-events is such that for any given window,
-.PN DestroyNotify
-is generated on all inferiors of the window
-before being generated on the window itself.
-The X protocol does not constrain the ordering among
-siblings and across subhierarchies.
-.LP
-To receive
-.PN DestroyNotify
-events, set the
-.PN StructureNotifyMask
-bit in the event-mask attribute of the window or the
-.PN SubstructureNotifyMask
-bit in the event-mask attribute of the parent window
-(in which case, destroying any child generates an event).
-.LP
-The structure for this event type contains:
-.LP
-.IN "XDestroyWindowEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* DestroyNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
-} XDestroyWindowEvent;
-.De
-.LP
-.eM
-The event member is set either to the destroyed window or to its parent,
-depending on whether
-.PN StructureNotify
-or
-.PN SubstructureNotify
-was selected.
-The window member is set to the window that is destroyed.
-.NH 3
-GravityNotify Events
-.XS
-\*(SN GravityNotify Events
-.XE
-.LP
-.IN "Events" "GravityNotify"
-.IN "GravityNotify" "" "@DEF@"
-The X server can report
-.PN GravityNotify
-events to clients wanting information about when a window is moved because of a
-change in the size of its parent.
-The X server generates this event whenever a client
-application actually moves a child window as a result of resizing its parent by calling
-.PN XConfigureWindow ,
-.PN XMoveResizeWindow ,
-or
-.PN XResizeWindow .
-.LP
-To receive
-.PN GravityNotify
-events, set the
-.PN StructureNotifyMask
-bit in the event-mask attribute of the window or the
-.PN SubstructureNotifyMask
-bit in the event-mask attribute of the parent window
-(in which case, any child that is moved because its parent has been resized
-generates an event).
-.LP
-The structure for this event type contains:
-.LP
-.IN "XGravityEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* GravityNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- int x, y;
-} XGravityEvent;
-.De
-.LP
-.eM
-The event member is set either to the window that was moved or to its parent,
-depending on whether
-.PN StructureNotify
-or
-.PN SubstructureNotify
-was selected.
-The window member is set to the child window that was moved.
-The x and y members are set to the coordinates relative to the
-new parent window's origin
-and indicate the position of the upper-left outside corner of the
-window.
-.NH 3
-MapNotify Events
-.XS
-\*(SN MapNotify Events
-.XE
-.LP
-.IN "Events" "MapNotify"
-.IN "MapNotify" "" "@DEF@"
-The X server can report
-.PN MapNotify
-events to clients wanting information about which windows are mapped.
-The X server generates this event type whenever a client application changes the
-window's state from unmapped to mapped by calling
-.PN XMapWindow ,
-.PN XMapRaised ,
-.PN XMapSubwindows ,
-.PN XReparentWindow ,
-or as a result of save-set processing.
-.LP
-To receive
-.PN MapNotify
-events, set the
-.PN StructureNotifyMask
-bit in the event-mask attribute of the window or the
-.PN SubstructureNotifyMask
-bit in the event-mask attribute of the parent window
-(in which case, mapping any child generates an event).
-.LP
-The structure for this event type contains:
-.LP
-.IN "XMapEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* MapNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- Bool override_redirect; /* boolean, is override set... */
-} XMapEvent;
-.De
-.LP
-.eM
-The event member is set either to the window that was mapped or to its parent,
-depending on whether
-.PN StructureNotify
-or
-.PN SubstructureNotify
-was selected.
-The window member is set to the window that was mapped.
-The override_redirect member is set to the override-redirect attribute
-of the window.
-Window manager clients normally should ignore this window
-if the override-redirect attribute is
-.PN True ,
-because these events usually are generated from pop-ups,
-which override structure control.
-.NH 3
-MappingNotify Events
-.XS
-\*(SN MappingNotify Events
-.XE
-.LP
-.IN "Events" "MappingNotify"
-.IN "MappingNotify" "" "@DEF@"
-The X server reports
-.PN MappingNotify
-events to all clients.
-There is no mechanism to express disinterest in this event.
-The X server generates this event type whenever a client application
-successfully calls:
-.IP \(bu 5
-.PN XSetModifierMapping
-to indicate which KeyCodes are to be used as modifiers
-.IP \(bu 5
-.PN XChangeKeyboardMapping
-to change the keyboard mapping
-.IP \(bu 5
-.PN XSetPointerMapping
-to set the pointer mapping
-.LP
-The structure for this event type contains:
-.LP
-.IN "XMappingEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* MappingNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* unused */
- int request; /* one of MappingModifier, MappingKeyboard,
- MappingPointer */
- int first_keycode; /* first keycode */
- int count; /* defines range of change w. first_keycode*/
-} XMappingEvent;
-.De
-.LP
-.eM
-The request member is set to indicate the kind of mapping change that occurred
-and can be
-.PN MappingModifier ,
-.PN MappingKeyboard ,
-or
-.PN MappingPointer .
-If it is
-.PN MappingModifier ,
-the modifier mapping was changed.
-If it is
-.PN MappingKeyboard ,
-the keyboard mapping was changed.
-If it is
-.PN MappingPointer ,
-the pointer button mapping was changed.
-The first_keycode and count members are set only
-if the request member was set to
-.PN MappingKeyboard .
-The number in first_keycode represents the first number in the range
-of the altered mapping,
-and count represents the number of keycodes altered.
-.LP
-To update the client application's knowledge of the keyboard,
-you should call
-.PN XRefreshKeyboardMapping .
-.NH 3
-ReparentNotify Events
-.XS
-\*(SN ReparentNotify Events
-.XE
-.LP
-.IN "Events" "ReparentNotify"
-.IN "ReparentNotify" "" "@DEF@"
-The X server can report
-.PN ReparentNotify
-events to clients wanting information about changing a window's parent.
-The X server generates this event whenever a client
-application calls
-.PN XReparentWindow
-and the window is actually reparented.
-.LP
-To receive
-.PN ReparentNotify
-events, set the
-.PN StructureNotifyMask
-bit in the event-mask attribute of the window or the
-.PN SubstructureNotifyMask
-bit in the event-mask attribute of either the old or the new parent window
-(in which case, reparenting any child generates an event).
-.LP
-The structure for this event type contains:
-.LP
-.IN "XReparentEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* ReparentNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- Window parent;
- int x, y;
- Bool override_redirect;
-} XReparentEvent;
-.De
-.LP
-.eM
-The event member is set either to the reparented window
-or to the old or the new parent, depending on whether
-.PN StructureNotify
-or
-.PN SubstructureNotify
-was selected.
-The window member is set to the window that was reparented.
-The parent member is set to the new parent window.
-The x and y members are set to the reparented window's coordinates relative
-to the new parent window's
-origin and define the upper-left outer corner of the reparented window.
-The override_redirect member is set to the override-redirect attribute of the
-window specified by the window member.
-Window manager clients normally should ignore this window
-if the override_redirect member is
-.PN True .
-.NH 3
-UnmapNotify Events
-.XS
-\*(SN UnmapNotify Events
-.XE
-.LP
-.IN "Events" "UnmapNotify"
-.IN "UnmapNotify" "" "@DEF@"
-The X server can report
-.PN UnmapNotify
-events to clients wanting information about which windows are unmapped.
-The X server generates this event type whenever a client application changes the
-window's state from mapped to unmapped.
-.LP
-To receive
-.PN UnmapNotify
-events, set the
-.PN StructureNotifyMask
-bit in the event-mask attribute of the window or the
-.PN SubstructureNotifyMask
-bit in the event-mask attribute of the parent window
-(in which case, unmapping any child window generates an event).
-.LP
-The structure for this event type contains:
-.LP
-.IN "XUnmapEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* UnmapNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window event;
- Window window;
- Bool from_configure;
-} XUnmapEvent;
-.De
-.LP
-.eM
-The event member is set either to the unmapped window or to its parent,
-depending on whether
-.PN StructureNotify
-or
-.PN SubstructureNotify
-was selected.
-This is the window used by the X server to report the event.
-The window member is set to the window that was unmapped.
-The from_configure member is set to
-.PN True
-if the event was generated as a result of a resizing of the window's parent when
-the window itself had a win_gravity of
-.PN UnmapGravity .
-.NH 3
-VisibilityNotify Events
-.XS
-\*(SN VisibilityNotify Events
-.XE
-.LP
-.IN "Events" "VisibilityNotify"
-.IN "VisibilityNotify" "" "@DEF@"
-The X server can report
-.PN VisibilityNotify
-events to clients wanting any change in the visibility of the specified window.
-A region of a window is visible if someone looking at the screen can
-actually see it.
-The X server generates this event whenever the visibility changes state.
-However, this event is never generated for windows whose class is
-.PN InputOnly .
-.LP
-All
-.PN VisibilityNotify
-events caused by a hierarchy change are generated
-after any hierarchy event
-.Pn ( UnmapNotify ,
-.PN MapNotify ,
-.PN ConfigureNotify ,
-.PN GravityNotify ,
-.PN CirculateNotify )
-caused by that change. Any
-.PN VisibilityNotify
-event on a given window is generated before any
-.PN Expose
-events on that window, but it is not required that all
-.PN VisibilityNotify
-events on all windows be generated before all
-.PN Expose
-events on all windows.
-The X protocol does not constrain the ordering of
-.PN VisibilityNotify
-events with
-respect to
-.PN FocusOut ,
-.PN EnterNotify ,
-and
-.PN LeaveNotify
-events.
-.LP
-To receive
-.PN VisibilityNotify
-events, set the
-.PN VisibilityChangeMask
-bit in the event-mask attribute of the window.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XVisibilityEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* VisibilityNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- int state;
-} XVisibilityEvent;
-.De
-.LP
-.eM
-The window member is set to the window whose visibility state changes.
-The state member is set to the state of the window's visibility and can be
-.PN VisibilityUnobscured ,
-.PN VisibilityPartiallyObscured ,
-or
-.PN VisibilityFullyObscured .
-The X server ignores all of a window's subwindows
-when determining the visibility state of the window and processes
-.PN VisibilityNotify
-events according to the following:
-.IP \(bu 5
-When the window changes state from partially obscured, fully obscured,
-or not viewable to viewable and completely unobscured,
-the X server generates the event with the state member of the
-.PN XVisibilityEvent
-structure set to
-.PN VisibilityUnobscured .
-.IP \(bu 5
-When the window changes state from viewable and completely unobscured or
-not viewable to viewable and partially obscured,
-the X server generates the event with the state member of the
-.PN XVisibilityEvent
-structure set to
-.PN VisibilityPartiallyObscured .
-.IP \(bu 5
-When the window changes state from viewable and completely unobscured,
-viewable and partially obscured, or not viewable to viewable and
-fully obscured,
-the X server generates the event with the state member of the
-.PN XVisibilityEvent
-structure set to
-.PN VisibilityFullyObscured .
-.NH 2
-Structure Control Events
-.XS
-\*(SN Structure Control Events
-.XE
-.LP
-This section discusses:
-.IP \(bu 5
-.PN CirculateRequest
-events
-.IP \(bu 5
-.PN ConfigureRequest
-events
-.IP \(bu 5
-.PN MapRequest
-events
-.IP \(bu 5
-.PN ResizeRequest
-events
-.NH 3
-CirculateRequest Events
-.XS
-\*(SN CirculateRequest Events
-.XE
-.LP
-.IN "Events" "CirculateRequest"
-.IN "CirculateRequest" "" "@DEF@"
-The X server can report
-.PN CirculateRequest
-events to clients wanting information about
-when another client initiates a circulate window request
-on a specified window.
-The X server generates this event type whenever a client initiates a circulate
-window request on a window and a subwindow actually needs to be restacked.
-The client initiates a circulate window request on the window by calling
-.PN XCirculateSubwindows ,
-.PN XCirculateSubwindowsUp ,
-or
-.PN XCirculateSubwindowsDown .
-.LP
-To receive
-.PN CirculateRequest
-events, set the
-.PN SubstructureRedirectMask
-in the event-mask attribute of the window.
-Then, in the future,
-the circulate window request for the specified window is not executed,
-and thus, any subwindow's position in the stack is not changed.
-For example, suppose a client application calls
-.PN XCirculateSubwindowsUp
-to raise a subwindow to the top of the stack.
-If you had selected
-.PN SubstructureRedirectMask
-on the window, the X server reports to you a
-.PN CirculateRequest
-event and does not raise the subwindow to the top of the stack.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XCirculateRequestEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* CirculateRequest */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window parent;
- Window window;
- int place; /* PlaceOnTop, PlaceOnBottom */
-} XCirculateRequestEvent;
-.De
-.LP
-.eM
-The parent member is set to the parent window.
-The window member is set to the subwindow to be restacked.
-The place member is set to what the new position in the stacking order should be
-and is either
-.PN PlaceOnTop
-or
-.PN PlaceOnBottom .
-If it is
-.PN PlaceOnTop ,
-the subwindow should be on top of all siblings.
-If it is
-.PN PlaceOnBottom ,
-the subwindow should be below all siblings.
-.NH 3
-ConfigureRequest Events
-.XS
-\*(SN ConfigureRequest Events
-.XE
-.LP
-.IN "Events" "ConfigureRequest"
-.IN "ConfigureRequest" "" "@DEF@"
-The X server can report
-.PN ConfigureRequest
-events to clients wanting information about when a different client initiates
-a configure window request on any child of a specified window.
-The configure window request attempts to
-reconfigure a window's size, position, border, and stacking order.
-The X server generates this event whenever a different client initiates
-a configure window request on a window by calling
-.PN XConfigureWindow ,
-.PN XLowerWindow ,
-.PN XRaiseWindow ,
-.PN XMapRaised ,
-.PN XMoveResizeWindow ,
-.PN XMoveWindow ,
-.PN XResizeWindow ,
-.PN XRestackWindows ,
-or
-.PN XSetWindowBorderWidth .
-.LP
-To receive
-.PN ConfigureRequest
-events, set the
-.PN SubstructureRedirectMask
-bit in the event-mask attribute of the window.
-.PN ConfigureRequest
-events are generated when a
-.PN ConfigureWindow
-protocol request is issued on a child window by another client.
-For example, suppose a client application calls
-.PN XLowerWindow
-to lower a window.
-If you had selected
-.PN SubstructureRedirectMask
-on the parent window and if the override-redirect attribute
-of the window is set to
-.PN False ,
-the X server reports a
-.PN ConfigureRequest
-event to you and does not lower the specified window.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XConfigureRequestEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* ConfigureRequest */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window parent;
- Window window;
- int x, y;
- int width, height;
- int border_width;
- Window above;
- int detail; /* Above, Below, TopIf, BottomIf, Opposite */
- unsigned long value_mask;
-} XConfigureRequestEvent;
-.De
-.LP
-.eM
-The parent member is set to the parent window.
-The window member is set to the window whose size, position, border width,
-and/or stacking order is to be reconfigured.
-The value_mask member indicates which components were specified in the
-.PN ConfigureWindow
-protocol request.
-The corresponding values are reported as given in the request.
-The remaining values are filled in from the current geometry of the window,
-except in the case of above (sibling) and detail (stack-mode),
-which are reported as
-.PN None
-and
-.PN Above ,
-respectively, if they are not given in the request.
-.NH 3
-MapRequest Events
-.XS
-\*(SN MapRequest Events
-.XE
-.LP
-.IN "Events" "MapRequest"
-.IN "MapRequest" "" "@DEF@"
-The X server can report
-.PN MapRequest
-events to clients wanting information about a different client's desire
-to map windows.
-A window is considered mapped when a map window request completes.
-The X server generates this event whenever a different client initiates
-a map window request on an unmapped window whose override_redirect member
-is set to
-.PN False .
-Clients initiate map window requests by calling
-.PN XMapWindow ,
-.PN XMapRaised ,
-or
-.PN XMapSubwindows .
-.LP
-To receive
-.PN MapRequest
-events, set the
-.PN SubstructureRedirectMask
-bit in the event-mask attribute of the window.
-This means another client's attempts to map a child window by calling one of
-the map window request functions is intercepted, and you are sent a
-.PN MapRequest
-instead.
-For example, suppose a client application calls
-.PN XMapWindow
-to map a window.
-If you (usually a window manager) had selected
-.PN SubstructureRedirectMask
-on the parent window and if the override-redirect attribute
-of the window is set to
-.PN False ,
-the X server reports a
-.PN MapRequest
-event to you
-and does not map the specified window.
-Thus, this event gives your window manager client the ability
-to control the placement of subwindows.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XMapRequestEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* MapRequest */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window parent;
- Window window;
-} XMapRequestEvent;
-.De
-.LP
-.eM
-The parent member is set to the parent window.
-The window member is set to the window to be mapped.
-.NH 3
-ResizeRequest Events
-.XS
-\*(SN ResizeRequest Events
-.XE
-.LP
-.IN "Events" "ResizeRequest"
-.IN "ResizeRequest" "" "@DEF@"
-The X server can report
-.PN ResizeRequest
-events to clients wanting information about another client's attempts to change the
-size of a window.
-The X server generates this event whenever some other client attempts to change
-the size of the specified window by calling
-.PN XConfigureWindow ,
-.PN XResizeWindow ,
-or
-.PN XMoveResizeWindow .
-.LP
-To receive
-.PN ResizeRequest
-events, set the
-.PN ResizeRedirect
-bit in the event-mask attribute of the window.
-Any attempts to change the size by other clients are then redirected.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XResizeRequestEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* ResizeRequest */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- int width, height;
-} XResizeRequestEvent;
-.De
-.LP
-.eM
-The window member is set to the window whose size another
-client attempted to change.
-The width and height members are set to the inside size of the window,
-excluding the border.
-.NH 2
-Colormap State Change Events
-.XS
-\*(SN Colormap State Change Events
-.XE
-.LP
-.IN "Events" "ColormapNotify"
-.IN "ColormapNotify" "" "@DEF@"
-The X server can report
-.PN ColormapNotify
-events to clients wanting information about when the colormap changes
-and when a colormap is installed or uninstalled.
-The X server generates this event type whenever a client application:
-.IP \(bu 5
-Changes the colormap member of the
-.PN XSetWindowAttributes
-structure by
-calling
-.PN XChangeWindowAttributes ,
-.PN XFreeColormap ,
-or
-.PN XSetWindowColormap
-.IP \(bu 5
-Installs or uninstalls the colormap by calling
-.PN XInstallColormap
-or
-.PN XUninstallColormap
-.LP
-To receive
-.PN ColormapNotify
-events, set the
-.PN ColormapChangeMask
-bit in the event-mask attribute of the window.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XColormapEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* ColormapNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- Colormap colormap; /* colormap or None */
- Bool new;
- int state; /* ColormapInstalled, ColormapUninstalled */
-} XColormapEvent;
-.De
-.LP
-.eM
-The window member is set to the window whose associated
-colormap is changed, installed, or uninstalled.
-For a colormap that is changed, installed, or uninstalled,
-the colormap member is set to the colormap associated with the window.
-For a colormap that is changed by a call to
-.PN XFreeColormap ,
-the colormap member is set to
-.PN None .
-The new member is set to indicate whether the colormap
-for the specified window was changed or installed or uninstalled
-and can be
-.PN True
-or
-.PN False .
-If it is
-.PN True ,
-the colormap was changed.
-If it is
-.PN False ,
-the colormap was installed or uninstalled.
-The state member is always set to indicate whether the colormap is installed or
-uninstalled and can be
-.PN ColormapInstalled
-or
-.PN ColormapUninstalled .
-.NH 2
-Client Communication Events
-.XS
-\*(SN Client Communication Events
-.XE
-.LP
-This section discusses:
-.IP \(bu 5
-.PN ClientMessage
-events
-.IP \(bu 5
-.PN PropertyNotify
-events
-.IP \(bu 5
-.PN SelectionClear
-events
-.IP \(bu 5
-.PN SelectionNotify
-events
-.IP \(bu 5
-.PN SelectionRequest
-events
-.NH 3
-ClientMessage Events
-.XS
-\*(SN ClientMessage Events
-.XE
-.LP
-.IN "Events" "ClientMessage"
-.IN "ClientMessage" "" "@DEF@"
-The X server generates
-.PN ClientMessage
-events only when a client calls the function
-.PN XSendEvent .
-.LP
-The structure for this event type contains:
-.LP
-.IN "XClientMessageEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 1i 3i
-.ta .5i 1i 3i
-typedef struct {
- int type; /* ClientMessage */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- Atom message_type;
- int format;
- union {
- char b[20];
- short s[10];
- long l[5];
- } data;
-} XClientMessageEvent;
-.De
-.LP
-.eM
-The message_type member is set to an atom that indicates how the data
-should be interpreted by the receiving client.
-The format member is set to 8, 16, or 32 and specifies whether the data
-should be viewed as a list of bytes, shorts, or longs.
-The data member is a union that contains the members b, s, and l.
-The b, s, and l members represent data of twenty 8-bit values,
-ten 16-bit values, and five 32-bit values.
-Particular message types might not make use of all these values.
-The X server places no interpretation on the values in the window,
-message_type, or data members.
-.NH 3
-PropertyNotify Events
-.XS
-\*(SN PropertyNotify Events
-.XE
-.LP
-.IN "Events" "PropertyNotify"
-.IN "PropertyNotify" "" "@DEF@"
-The X server can report
-.PN PropertyNotify
-events to clients wanting information about property changes
-for a specified window.
-.LP
-To receive
-.PN PropertyNotify
-events, set the
-.PN PropertyChangeMask
-bit in the event-mask attribute of the window.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XPropertyEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* PropertyNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- Atom atom;
- Time time;
- int state; /* PropertyNewValue or PropertyDelete */
-} XPropertyEvent;
-.De
-.LP
-.eM
-The window member is set to the window whose associated
-property was changed.
-The atom member is set to the property's atom and indicates which
-property was changed or desired.
-The time member is set to the server time when the property was changed.
-The state member is set to indicate whether the property was changed
-to a new value or deleted and can be
-.PN PropertyNewValue
-or
-.PN PropertyDelete .
-The state member is set to
-.PN PropertyNewValue
-when a property of the window is changed using
-.PN XChangeProperty
-or
-.PN XRotateWindowProperties
-(even when adding zero-length data using
-.PN XChangeProperty )
-and when replacing all or part of a property with identical data using
-.PN XChangeProperty
-or
-.PN XRotateWindowProperties .
-The state member is set to
-.PN PropertyDelete
-when a property of the window is deleted using
-.PN XDeleteProperty
-or, if the delete argument is
-.PN True ,
-.PN XGetWindowProperty .
-.NH 3
-SelectionClear Events
-.XS
-\*(SN SelectionClear Events
-.XE
-.LP
-.IN "Events" "SelectionClear"
-.IN "SelectionClear" "" "@DEF@"
-The X server reports
-.PN SelectionClear
-events to the client losing ownership of a selection.
-The X server generates this event type when another client
-asserts ownership of the selection by calling
-.PN XSetSelectionOwner .
-.LP
-The structure for this event type contains:
-.LP
-.IN "XSelectionClearEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* SelectionClear */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window;
- Atom selection;
- Time time;
-} XSelectionClearEvent;
-.De
-.LP
-.eM
-The selection member is set to the selection atom.
-The time member is set to the last change time recorded for the
-selection.
-The window member is the window that was specified by the current owner
-(the owner losing the selection) in its
-.PN XSetSelectionOwner
-call.
-.NH 3
-SelectionRequest Events
-.XS
-\*(SN SelectionRequest Events
-.XE
-.LP
-.IN "Events" "SelectionRequest"
-.IN "SelectionRequest" "" "@DEF@"
-The X server reports
-.PN SelectionRequest
-events to the owner of a selection.
-The X server generates this event whenever a client
-requests a selection conversion by calling
-.PN XConvertSelection
-for the owned selection.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XSelectionRequestEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* SelectionRequest */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window owner;
- Window requestor;
- Atom selection;
- Atom target;
- Atom property;
- Time time;
-} XSelectionRequestEvent;
-.De
-.LP
-.eM
-The owner member is set to the window
-that was specified by the current owner in its
-.PN XSetSelectionOwner
-call.
-The requestor member is set to the window requesting the selection.
-The selection member is set to the atom that names the selection.
-For example, PRIMARY is used to indicate the primary selection.
-The target member is set to the atom that indicates the type
-the selection is desired in.
-The property member can be a property name or
-.PN None .
-The time member is set to the timestamp or
-.PN CurrentTime
-value from the
-.PN ConvertSelection
-request.
-.LP
-The owner should convert the selection based on the specified target type
-and send a
-.PN SelectionNotify
-event back to the requestor.
-A complete specification for using selections is given in the X Consortium
-standard \fIInter-Client Communication Conventions Manual\fP.
-.NH 3
-SelectionNotify Events
-.XS
-\*(SN SelectionNotify Events
-.XE
-.LP
-.IN "Events" "SelectionNotify"
-.IN "SelectionNotify" "" "@DEF@"
-This event is generated by the X server in response to a
-.PN ConvertSelection
-protocol request when there is no owner for the selection.
-When there is an owner, it should be generated by the owner
-of the selection by using
-.PN XSendEvent .
-The owner of a selection should send this event to a requestor when a selection
-has been converted and stored as a property
-or when a selection conversion could
-not be performed (which is indicated by setting the property member to
-.PN None ).
-.LP
-If
-.PN None
-is specified as the property in the
-.PN ConvertSelection
-protocol request, the owner should choose a property name,
-store the result as that property on the requestor window,
-and then send a
-.PN SelectionNotify
-giving that actual property name.
-.LP
-The structure for this event type contains:
-.LP
-.IN "XSelectionEvent" "" "@DEF@"
-.sM
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type; /* SelectionNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- Window requestor;
- Atom selection;
- Atom target;
- Atom property; /* atom or None */
- Time time;
-} XSelectionEvent;
-.De
-.LP
-.eM
-The requestor member is set to the window associated with
-the requestor of the selection.
-The selection member is set to the atom that indicates the selection.
-For example, PRIMARY is used for the primary selection.
-The target member is set to the atom that indicates the converted type.
-For example, PIXMAP is used for a pixmap.
-The property member is set to the atom that indicates which
-property the result was stored on.
-If the conversion failed,
-the property member is set to
-.PN None .
-The time member is set to the time the conversion took place and
-can be a timestamp or
-.PN CurrentTime .
-.bp