diff options
Diffstat (limited to 'libX11/specs/libX11/CH10')
-rw-r--r-- | libX11/specs/libX11/CH10 | 3886 |
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 |