### 5.3 Event Types ¶

This section describes all event types by listing their fields and basic information on when they are generated. All events are defined in the module `Xlib.protocol.event`. All event types have the following two attributes:

Instance Variable of `Event`: type ¶

  Stores the X type code of this event. Type codes are integers in the range 2-127, and are defined with symbolic names in `Xlib.X`. The symbolic names are the same as the event class names, except for the special event `AnyEvent`.

Instance Variable of `Event`: send_event ¶

  This attribute is normally 0, meaning that the event was generated by the X server. It is set to 1 if this event was instead sent from another client.

Event object can be created by instantiating the corresponding event class, providing all the attributes described for the event as keyword arguments.

Event: KeyPress ¶
Event: KeyRelease ¶
Event: ButtonPress ¶
Event: ButtonRelease ¶
Event: MotionNotify ¶

  These events are generated when a key or a button logically changes state, or when the pointer logically moves. In the discussion below, the source window is the window that the event occured in. The event may be generated on some other window than the source window, see XKeyEvent(3X11) for details. The same man page also describes `MotionNotify`.

  Instance Variable of `KeyButtonPointerEvent`: time ¶

    The server X time when this event was generated.

  Instance Variable of `KeyButtonPointerEvent`: root ¶

    The root window which the source window is an inferior of.

  Instance Variable of `KeyButtonPointerEvent`: window ¶

    The window the event is reported on.

  Instance Variable of `KeyButtonPointerEvent`: same_screen ¶

    Set to 1 if `window` is on the same screen as `root`, 0 otherwise.

  Instance Variable of `KeyButtonPointerEvent`: child ¶

    If the source window is an inferior of `window`, `child` is set to the child of `window` that is the ancestor of (or is) the source window. Otherwise it is set to `X.NONE`.

  Instance Variable of `KeyButtonPointerEvent`: root_x ¶
  Instance Variable of `KeyButtonPointerEvent`: root_y ¶

    The pointer coordinates at the time of the event, relative to the root window.

  Instance Variable of `KeyButtonPointerEvent`: event_x ¶
  Instance Variable of `KeyButtonPointerEvent`: event_y ¶

    The pointer coordinates at the time of the event, relative to `window`. If `window` is not on the same screen as `root`, these are set to 0.

  Instance Variable of `KeyButtonPointerEvent`: state ¶

    The logical state of the button and modifier keys just before the event.

  Instance Variable of `KeyButtonPointerEvent`: detail ¶

    For `KeyPress` and `KeyRelease`, this is the keycode of the event key.

    For `ButtonPress` and `ButtonRelease`, this is the button of the event.

    For `MotionNotify`, this is either `X.NotifyNormal` or `X.NotifyHint`.

Event: EnterNotify ¶
Event: LeaveNotify ¶

  If pointer motion or window hierarchy change causes the pointer to be in another window than before, these events are generated instead of a `MotionNotify` event.

  The semantics are quite complex, see XCrossingEvent(3X11) for details.

  Instance Variable of `EnterLeaveEvent`: time ¶

    The server X time when this event was generated.

  Instance Variable of `EnterLeaveEvent`: root ¶

    The root window of the pointer at the end of this event.

  Instance Variable of `EnterLeaveEvent`: window ¶

    The window the event is reported for.

  Instance Variable of `EnterLeaveEvent`: child ¶

    In a `LeaveNotify` event, if a child of `window` contains the initial pointer position, this is set to that child window. In a `EnterNotify` event, if a child of `window` contains the final pointer position, this is set to that child window. Otherwise this is set to `X.NONE`.

  Instance Variable of `EnterLeaveEvent`: root_x ¶
  Instance Variable of `EnterLeaveEvent`: root_y ¶

    The final pointer position relative to `root`.

  Instance Variable of `EnterLeaveEvent`: event_x ¶
  Instance Variable of `EnterLeaveEvent`: event_y ¶

    The final pointer position relative to `window`.

  Instance Variable of `EnterLeaveEvent`: state ¶

    The modifier and button state at the time of the event.

  Instance Variable of `EnterLeaveEvent`: mode ¶

    One of `X.NotifyNormal`, `X.NotifyGrab` or `X.NotifyUngrab`.

  Instance Variable of `EnterLeaveEvent`: detail ¶

    One of `X.NotifyAncestor`, `X.NotifyVirtual`, `X.NotifyInferior`, `X.NotifyNonlinear`, or `X.NotifyNonlinearVirtual`.

  Instance Variable of `EnterLeaveEvent`: flags ¶

    If bit 0 is set, `window` is the focus window or an inferior of it. If bit 1 is set, `window` is on the same screen as `root`.

Event: FocusIn ¶
Event: FocusOut ¶

  These events are generated when the focus changes. This is also very complex events, see XFocusChangeEvent(3X11) for details.

  Instance Variable of `FocusEvent`: window ¶

    The window the event is generated for.

  Instance Variable of `FocusEvent`: mode ¶

    One of `X.NotifyNormal`, `X.NotifyWhileGrabbed`, `X.NotifyGrab`, or `X.NotifyUngrab`.

  Instance Variable of `FocusEvent`: detail ¶

    One of `X.NotifyAncestor`, `X.NotifyVirtual`, `X.NotifyInferior`, `X.NotifyNonlinear`, `X.NotifyNonlinearVirtual`, `X.NotifyPointer`, `X.NotifyPointerRoot`, or `X.NONE`.

Event: KeymapNotify ¶

  This event is generated immediately after every `EnterNotify` and `FocusIn`.

  Instance Variable of `KeymapNotify`: data ¶

    A list of 31 eight-bit integers, as returned by query_keymap.

Event: Expose ¶

  This event is generated when regions of a window has to be redrawn. The regions are decomposed into a set of rectangles, and an `Expose` event is generated for each rectangle.

  Instance Variable of `Expose`: window ¶

    The window containing regions to redraw.

  Instance Variable of `Expose`: x ¶
  Instance Variable of `Expose`: y ¶
  Instance Variable of `Expose`: width ¶
  Instance Variable of `Expose`: height ¶

    The coordinates of the rectangle to redraw.

  Instance Variable of `Expose`: count ¶

    At least this many more `Expose` events will immediately follow for this window. If this is the last event, `count` is set to 0.

    This allows a simple application to ignore all `Expose` events with a non-zero `count`, and then redraw the entire window when the zero event is received.

Event: GraphicsExpose ¶
Event: NoExpose ¶

  These events may be generated for drawables when a graphics context with `graphics_exposures` selected is used. See XGraphicsExposeEvent(3X11) for details.

  Both events have these attributes:

  Instance Variable of `GraphicsExpose`: drawable ¶

    The drawable of the event.

  Instance Variable of `GraphicsExpose`: major_event ¶
  Instance Variable of `GraphicsExpose`: minor_event ¶

    The major and minor number of the request that generated this event. For the core protocol `major_event` is always 62 (CopyArea) or 63 (CopyPlane), and `minor_event` is always 0.

  GraphicsExpose have these additional attributes:

  Instance Variable of `GraphicsExpose`: x ¶
  Instance Variable of `GraphicsExpose`: y ¶
  Instance Variable of `GraphicsExpose`: width ¶
  Instance Variable of `GraphicsExpose`: height ¶

    The coordinates of the event region.

  Instance Variable of `GraphicsExpose`: count ¶

    At least this many more `GraphicsExposure` events follows. The last one has `count` set to 0.

Event: VisibilityNotify ¶

  These events are generated when the visibility of a viewable window is changed. See XVisibilityNotifyEvent(3X11).

  Instance Variable of `VisibiltyNotify`: window ¶

    The window of the event.

  Instance Variable of `VisibiltyNotify`: state ¶

    One of `X.VisibilityUnobscured`, `X.VisibilityPartiallyObscured`, or `X.VisibilityFullyObscured`.

Event: CreateNotify ¶

  This event is generated when a window is created. `X.SubstructureNotifyMask` must be selected on the parent of the new window to receive this event.

  Instance Variable of `CreateNotify`: parent ¶

    The parent of the new window.

  Instance Variable of `CreateNotify`: window ¶

    The new window.

  Instance Variable of `CreateNotify`: x ¶
  Instance Variable of `CreateNotify`: y ¶
  Instance Variable of `CreateNotify`: width ¶
  Instance Variable of `CreateNotify`: height ¶
  Instance Variable of `CreateNotify`: border_width ¶
  Instance Variable of `CreateNotify`: override ¶

    These values are fetched from the `create_window` call.

Event: DestroyNotify ¶

  This event is generated when a window is destroyed.

  Instance Variable of `DestroyNotify`: event ¶

    The window that the event is generated for.

  Instance Variable of `DestroyNotify`: window ¶

    The window that was destroyed.

Event: UnmapNotify ¶

  This event is generated when a window is unmapped.

  Instance Variable of `UnmapNotify`: event ¶

    The window that the event is generated for.

  Instance Variable of `UnmapNotify`: window ¶

    The window that was unmapped.

  Instance Variable of `Event`: from_configure ¶

    This is true if `window` was unmapped because its parent was resized and `window` had win-gravity `X.UnmapGravity`.

Event: MapNotify ¶

  This event is generated when a window is mapped.

  Instance Variable of `MapNotify`: event ¶

    The window that the event is generated for.

  Instance Variable of `MapNotify`: window ¶

    The window that was mapped.

  Instance Variable of `Event`: override ¶

    This is set from the corresponding window attribute.

Event: MapRequest ¶

  This event is reported to the client that has set `X.SubstructureRedirectMask` on a window, and an unmapped child of that window attempts to be mapped by some other client, unless the child has override-redirect set.

  Instance Variable of `MapRequest`: parent ¶

    The parent window.

  Instance Variable of `MapRequest`: window ¶

    The child window that attempts to be mapped.

Event: ReparentNotify ¶

  This event is reported to clients selecting `X.SubstructureNotifyMask` on either the old or the new parent and to clients selecting `X.StructureNotifyMask` on the reparented window.

  Instance Variable of `ReparentNotify`: event ¶

    The window the event is generated for.

  Instance Variable of `ReparentNotify`: window ¶

    The reparented window.

  Instance Variable of `ReparentNotify`: parent ¶

    The new parent window.

  Instance Variable of `ReparentNotify`: x ¶
  Instance Variable of `ReparentNotify`: y ¶

    The coordinates of the upper-left outer corner of `window` in `parent`.

  Instance Variable of `ReparentNotify`: override ¶

    This is set from the corresponding attribute on `window`.

Event: ConfigureNotify ¶

  This event is generated when a configure request actually changes the state of the window.

  Instance Variable of `ConfigureNotify`: event ¶

    The window that the event is generated for.

  Instance Variable of `ConfigureNotify`: window ¶

    The window that has been changed.

  Instance Variable of `ConfigureNotify`: x ¶
  Instance Variable of `ConfigureNotify`: y ¶
  Instance Variable of `ConfigureNotify`: width ¶
  Instance Variable of `ConfigureNotify`: height ¶
  Instance Variable of `ConfigureNotify`: border_width ¶

    The new coordinate and geometry of `window`.

  Instance Variable of `ConfigureNotify`: above_sibling ¶

    This is `X.NONE` if this window is at the bottom of the window stack. Otherwise it is the sibling window that `window` is immediately above.

  Instance Variable of `ConfigureNotify`: override ¶

    This is set from the corresponding attribute on `window`.

Event: ConfigureRequest ¶

  This event is reported to the client that has set `X.SubstructureRedirectMask` on the parent of a window that another client attempts to configure, unless the window has override-redirect set.

  Instance Variable of `ConfigureRequest`: parent ¶

    The parent of the window being configured.

  Instance Variable of `ConfigureRequest`: window ¶

    The window being configured.

  Instance Variable of `ConfigureRequest`: value_mask ¶

    A bitmask indicating which values that the caller tries to change.

  Instance Variable of `ConfigureRequest`: x ¶
  Instance Variable of `ConfigureRequest`: y ¶
  Instance Variable of `ConfigureRequest`: width ¶
  Instance Variable of `ConfigureRequest`: height ¶
  Instance Variable of `ConfigureRequest`: border_width ¶

    The window geometry in the configure call. If `X.CWX`, `X.CWY`, `X.CWWidth`, `X.CWHeight`, or `X.CWBorderWidth` is set in `value_mask`, the corresponding attributes contains the new value as given in the configure call, otherwise the current value is used.

  Instance Variable of `ConfigureRequest`: stack_mode ¶

    If `X.CWStackMode` is set in `value_mask`, this is the stack mode specified in the configure call, one of `X.Above`, `X.Below`, `X.TopIf`, `X.BottomIf`, or `X.Opposite`. If the flag is not set, this is set to `X.Above`.

  Instance Variable of `ConfigureRequest`: sibling ¶

    If `X.CWSibling` is set in `value_mask`, this is the sibling window specified in the configure call. If the flag is not set, this is set to `X.NONE`.

Event: GravityNotify ¶

  This event is generated when a window is moved because its parent’s size has changed.

  Instance Variable of `GravityNotify`: event ¶

    The window the event is generated for.

  Instance Variable of `GravityNotify`: window ¶

    The window that moved.

  Instance Variable of `GravityNotify`: x ¶
  Instance Variable of `GravityNotify`: y ¶

    The new coordinates of the upper-left outer corner of `window`.

Event: ResizeRequest ¶

  This is reported to the client selecting `X.ResizeRedirectMask` on a window, and another client attempts to resize it.

  Instance Variable of `ResizeRedirect`: window ¶

    The window that was attempted to be resized.

  Instance Variable of `ResizeRedirect`: width ¶
  Instance Variable of `ResizeRedirect`: height ¶

    The requested size of the window, excluding the border.

Event: CirculateNotify ¶

  This event is generated when a window is restacked caused by a circulate call.

  Instance Variable of `Event`: event ¶

    The window the event is reported on.

  Instance Variable of `Event`: window ¶

    The window that has been restacked.

  Instance Variable of `Event`: place ¶

    Either `X.PlaceOnTop` or `X.PlaceOnBottom`.

Event: CirculateRequest ¶

  This event is reported to the client that has set `X.SubstructureRedirectMask` on the parent of a window that needs to be restacked as a result of a circulate call on the parent.

  Instance Variable of `CirculateRequest`: parent ¶

    The parent window.

  Instance Variable of `CirculateRequest`: window ¶

    The window that should be restacked.

  Instance Variable of `CirculateRequest`: place ¶

    Where `window` should be placed, either `X.PlaceOnTop` or `X.PlaceOnBottom`.

Event: PropertyNotify ¶

  This event is generated when a property on a window is changed.

  Instance Variable of `Event`: window ¶

    The window which the property is or was set on.

  Instance Variable of `Event`: atom ¶

    The atom identifying the property.

  Instance Variable of `Event`: time ¶

    The server X time when the property was changed.

  Instance Variable of `Event`: state ¶

    What was changed, either `X.PropertyNewValue` or `X.PropertyDelete`.

Event: SelectionClear ¶

  This event is reported to the owner of a selection when it has gotten a new owner.

  Instance Variable of `SelectionClear`: window ¶

    The owner window of the selection.

  Instance Variable of `SelectionClear`: atom ¶

    The selection atom.

  Instance Variable of `SelectionClear`: time ¶

    The server X time when the selection was last changed.

Event: SelectionRequest ¶

  This event is reported to the owner of a selection when a client requests it by calling convert_selection.

  Instance Variable of `SelectionRequest`: owner ¶

    The owner window of the selection.

  Instance Variable of `SelectionRequest`: requestor ¶
  Instance Variable of `SelectionRequest`: selection ¶
  Instance Variable of `SelectionRequest`: target ¶
  Instance Variable of `SelectionRequest`: property ¶
  Instance Variable of `SelectionRequest`: time ¶

    These attributes are fetched from the convert_selection call.

Event: SelectionNotify ¶

  This event is generated by the server if there are no owner of a selection when convert_selection is called. If there is an owner, it should send this event to the requestor when the selection has been converted.

  Instance Variable of `SelectionNotify`: requestor ¶
  Instance Variable of `SelectionNotify`: selection ¶
  Instance Variable of `SelectionNotify`: target ¶
  Instance Variable of `SelectionNotify`: property ¶
  Instance Variable of `SelectionNotify`: time ¶

    See XSelectionEvent(3X11).

Event: ColormapNotify ¶

  This event is generated when the colormap attribute of a window is set, or when a window’s colormap is installed or uninstalled.

  Instance Variable of `ColormapNotify`: window ¶

    The affected window.

  Instance Variable of `ColormapNotify`: colormap ¶

    The colormap of the window, or `X.NONE`.

  Instance Variable of `ColormapNotify`: new ¶

    Set to 1 if the colormap attribute has been set, 0 when the colormap is installed or uninstalled.

  Instance Variable of `ColormapNotify`: state ¶

    Indicates whether the colormap is installed or not, either `X.ColormapInstalled` or `X.ColormapUninstalled`.

Event: MappingNotify ¶

  This event is sent to all clients, without any event mask having to be set. It is sent when the keyboard or pointer mapping is changed.

  Instance Variable of `MappingNotify`: request ¶

    The mapping that has changed, one of `X.MappingModifier`, `X.MappingKeyboard` or `X.Pointer`.

  Instance Variable of `MappingNotify`: first_keycode ¶
  Instance Variable of `MappingNotify`: count ¶

    If the keyboard mapping has changed, this is the range of modified keycodes.

Event: ClientMessage ¶

  This event is only generated by clients using send_event.

  Instance Variable of `ClientMessage`: window ¶

    The destination window of the event.

  Instance Variable of `ClientMessage`: client_type ¶

    The type of message, an atom.

  Instance Variable of `ClientMessage`: data ¶

    The message data as a tuple: `(format, mdata)`

    Format must be one of 8, 16, or 32. mdata must either be a string of exactly 20 characters, or a list of exactly 20, 10 or 5 integers depending of the format.

Event: AnyEvent ¶

  This event is represents an event the Xlib does not recognise. These should never be returned by `Display.next_event()`, but they might be useful for sending special events to other clients.

  Instance Variable of `AnyEvent`: detail ¶

    An eight-bit integer.

  Instance Variable of `AnyEvent`: data ¶

    A string of exactly 28 characters.