---
name: "XNextEvent"
section: "3"
platform: "linux"
package: "libx11"
version: "1.8.14-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XNextEvent"
---

# XNextEvent(3)

select events by type

## NAME

XNextEvent, XPeekEvent, XWindowEvent, XCheckWindowEvent, XMaskEvent, XCheckMaskEvent, XCheckTypedEvent, XCheckTypedWindowEvent - select events by type

## SYNTAX

int XNextEvent(Display \**display*, XEvent \**event\_return*);

int XPeekEvent(Display \**display*, XEvent \**event\_return*);

int XWindowEvent(Display \**display*, Window *w*, long *event\_mask*, XEvent \**event\_return*);

Bool XCheckWindowEvent(Display \**display*, Window *w*, long *event\_mask*, XEvent \**event\_return*);

int XMaskEvent(Display \**display*, long *event\_mask*, XEvent \**event\_return*);

Bool XCheckMaskEvent(Display \**display*, long *event\_mask*, XEvent \**event\_return*);

Bool XCheckTypedEvent(Display \**display*, int *event\_type*, XEvent \**event\_return*);

Bool XCheckTypedWindowEvent(Display \**display*, Window *w*, int *event\_type*, XEvent \**event\_return*);

## ARGUMENTS

- *display*

  Specifies the connection to the X server.

- *event\_mask*

  Specifies the event mask.

- *event\_return*

  Returns the matched event's associated structure.

- *event\_return*

  Returns the next event in the queue.

- *event\_return*

  Returns a copy of the matched event's associated structure.

- *event\_type*

  Specifies the event type to be compared.

- *w*

  Specifies the window whose event you are interested in.

## DESCRIPTION

The **XNextEvent** function copies the first event from the event queue into the specified **XEvent** structure and then removes it from the queue. If the event queue is empty, **XNextEvent** flushes the output buffer and blocks until an event is received.

The **XPeekEvent** function returns the first event from the event queue, but it does not remove the event from the queue. If the queue is empty, **XPeekEvent** flushes the output buffer and blocks until an event is received. It then copies the event into the client-supplied **XEvent** structure without removing it from the event queue.

The **XWindowEvent** function searches the event queue for an event that matches both the specified window and event mask. When it finds a match, **XWindowEvent** removes that event from the queue and copies it into the specified **XEvent** structure. The other events stored in the queue are not discarded. If a matching event is not in the queue, **XWindowEvent** flushes the output buffer and blocks until one is received.

The **XCheckWindowEvent** function searches the event queue and then the events available on the server connection for the first event that matches the specified window and event mask. If it finds a match, **XCheckWindowEvent** removes that event, copies it into the specified **XEvent** structure, and returns **True**. The other events stored in the queue are not discarded. If the event you requested is not available, **XCheckWindowEvent** returns **False**, and the output buffer will have been flushed.

The **XMaskEvent** function searches the event queue for the events associated with the specified mask. When it finds a match, **XMaskEvent** removes that event and copies it into the specified **XEvent** structure. The other events stored in the queue are not discarded. If the event you requested is not in the queue, **XMaskEvent** flushes the output buffer and blocks until one is received.

The **XCheckMaskEvent** function searches the event queue and then any events available on the server connection for the first event that matches the specified mask. If it finds a match, **XCheckMaskEvent** removes that event, copies it into the specified **XEvent** structure, and returns **True**. The other events stored in the queue are not discarded. If the event you requested is not available, **XCheckMaskEvent** returns **False**, and the output buffer will have been flushed.

The **XCheckTypedEvent** function searches the event queue and then any events available on the server connection for the first event that matches the specified type. If it finds a match, **XCheckTypedEvent** removes that event, copies it into the specified **XEvent** structure, and returns **True**. The other events in the queue are not discarded. If the event is not available, **XCheckTypedEvent** returns **False**, and the output buffer will have been flushed.

The **XCheckTypedWindowEvent** function searches the event queue and then any events available on the server connection for the first event that matches the specified type and window. If it finds a match, **XCheckTypedWindowEvent** removes the event from the queue, copies it into the specified **XEvent** structure, and returns **True**. The other events in the queue are not discarded. If the event is not available, **XCheckTypedWindowEvent** returns **False**, and the output buffer will have been flushed.

## SEE ALSO

[**XAnyEvent**(3)](/XAnyEvent/3.md), [**XIfEvent**(3)](/XIfEvent/3.md), [**XPutBackEvent**(3)](/XPutBackEvent/3.md), [**XSendEvent**(3)](/XSendEvent/3.md)\
 *Xlib - C Language X Interface*
