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

# XkbOpenDisplay(3)

Checks for a compatible version of the Xkb extension in both the library and the server, and initializes the extension for use.

## NAME

XkbOpenDisplay -  Checks for a compatible version of the Xkb extension in both the library and the server, and initializes the extension for use.

## SYNOPSIS

**Display \*XkbOpenDisplay** **(\_Xconst char \****display\_name***,** **int \****event\_rtrn***,** **int \****error\_rtrn***,** **int \****major\_in\_out***,** **int \****minor\_in\_out***,** **int \****reason\_rtrn***);**

## ARGUMENTS

- *display\_name*

  hardware display name, which determines the display and communications domain to be used

- *event\_rtrn*

  backfilled with the extension base event code

- *error\_rtrn*

  backfilled with the extension base error code

- *major\_in\_out*

  compile time lib major version in, server major version out

- *minor\_in\_out*

  compile time lib min version in, server minor version out

- *reason\_rtrn*

  backfilled with a status code

## DESCRIPTION

As a convenience, you can use the function *XkbOpenDisplay* to perform these three tasks at once: open a connection to an X server, check for a compatible version of the Xkb extension in both the library and the server, and initialize the extension for use.

*XkbOpenDisplay* is a convenience function that opens an X display connection and initializes the X keyboard extension. In all cases, upon return *reason\_rtrn* contains a status value indicating success or the type of failure. If *major\_in\_out* and *minor\_in\_out* are not NULL, *XkbOpenDisplay* first calls *XkbLibraryVersion* to determine whether the client library is compatible, passing it the values pointed to by *major\_in\_out and* *minor\_in\_out. If the library is* incompatible, *XkbOpenDisplay backfills* *major\_in\_out* and *minor\_in\_out* with the major and minor extension versions of the library being used and returns NULL. If the library is compatible, *XkbOpenDisplay* next calls *XOpenDisplay* with the *display\_name.* If this fails, the function returns NULL. If successful, *XkbOpenDisplay* calls *XkbQueryExtension* and backfills the major and minor Xkb server extension version numbers in *major\_in\_out and* *minor\_in\_out. If the server* extension version is not compatible with the library extension version or if the server extension is not present, *XkbOpenDisplay* closes the display and returns NULL. When successful, the function returns the display connection.

The possible values for reason\_rtrn are:

- •

  XkbOD\_BadLibraryVersion indicates XkbLibraryVersion returned False.

- •

  XkbOD\_ConnectionRefused indicates the display could not be opened.

- •

  XkbOD\_BadServerVersion indicates the library and the server have incompatible extension versions.

- •

  XkbOD\_NonXkbServer indicates the extension is not present in the X server.

- •

  XkbOD\_Success indicates that the function succeeded.

## RETURN VALUES

- NULL

  The *XkbOpenDisplay* function returns NULL if the library is incompatible.

  The *XkbOpenDisplay* function returns NULL if the call to *XOpenDisplay* with the *display\_name* fails.

  The *XkbOpenDisplay* function returns NULL and closes the display if the server extension version is not compatible with the library extension version or if the server extension is not present.

## DIAGNOSTICS

- BadAccess

  The Xkb extension has not been properly initialized

## SEE ALSO

[**XkbLibraryVersion**(3)](/XkbLibraryVersion/3.md), [**XkbQueryExtension**(3)](/XkbQueryExtension/3.md), [**XOpenDisplay**(3)](/XOpenDisplay/3.md)
