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

# XkbGetNames(3)

Obtain symbolic names from the server

## NAME

XkbGetNames - Obtain symbolic names from the server

## SYNOPSIS

**Status XkbGetNames** **(Display \****dpy***,** **unsigned int** *which***,** **XkbDescPtr** *xkb***);**

## ARGUMENTS

- *dpy*

  connection to the X server

- *which*

  mask of names or map components to be updated

- *xkb*

  keyboard description to be updated

## DESCRIPTION

*XkbGetNames* retrieves symbolic names for the components of the keyboard extension from the X server. The *which* parameter specifies the name components to be updated in the *xkb* parameter, and is the bitwise inclusive OR of the valid names mask bits defined in Table 1.

| | | | |
| --- | --- | --- | --- |
| Table 1 Symbolic Names Masks |
| Mask Bit | Value | Keyboard | Field |
|  |  | Component |
| XkbKeycodesNameMask | (1\<\<0) | Xkb-\>names | keycodes |
| XkbGeometryNameMask | (1\<\<1) | Xkb-\>names | geometry |
| XkbSymbolsNameMask | (1\<\<2) | Xkb-\>names | symbols |
| XkbPhysSymbolsNameMask | (1\<\<3) | Xkb-\>names | phys\_symbols |
| XkbTypesNameMask | (1\<\<4) | Xkb-\>names | type |
| XkbCompatNameMask | (1\<\<5) | Xkb-\>names | compat |
| XkbKeyTypeNamesMask | (1\<\<6) | Xkb-\>map | type\[\*\].name |
| XkbKTLevelNamesMask | (1\<\<7) | Xkb-\>map | type\[\*\].lvl\_names\[\*\] |
| XkbIndicatorNamesMask | (1\<\<8) | Xkb-\>names | indicators\[\*\] |
| XkbKeyNamesMask | (1\<\<9) | Xkb-\>names | keys\[\*\], num\_keys |
| XkbKeyAliasesMask | (1\<\<10) | Xkb-\>names | key\_aliases\[\*\], num\_key\_aliases |
| XkbVirtualModNamesMask | (1\<\<11) | Xkb-\>names | vmods\[\*\] |
| XkbGroupNamesMask | (1\<\<12) | Xkb-\>names | groups\[\*\] |
| XkbRGNamesMask | (1\<\<13) | Xkb-\>names | radio\_groups\[\*\], num\_rg |
| XkbComponentNamesMask | (0x3f) | Xkb-\>names | keycodes, |
|  |  |  | geometry, |
|  |  |  | symbols, |
|  |  |  | physical symbols, |
|  |  |  | types, and |
|  |  |  | compatibility map |
| XkbAllNamesMask | (0x3fff) | Xkb-\>names | all name components |

If the *names* field of the keyboard description *xkb* is NULL, *XkbGetNames* allocates and initializes the *names* component of the keyboard description before obtaining the values specified by *which.* If the *names field of* *xkb* is not NULL, *XkbGetNames* obtains the values specified by *which* and copies them into the keyboard description *Xkb.*

If the *map* component of the *xkb* parameter is NULL, *XkbGetNames* does not retrieve type or shift level names, even if XkbKeyTypeNamesMask or XkbKTLevelNamesMask are set in *which.*

*XkbGetNames* can return Success, or BadAlloc, BadLength, BadMatch, and BadImplementation errors.

To free symbolic names, use *XkbFreeNames.*

## DIAGNOSTICS

- **BadAlloc**

  Unable to allocate storage

- **BadImplementation**

  Invalid reply from server

- **BadLength**

  The length of a request is shorter or longer than that required to minimally contain the arguments

- **BadMatch**

  A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid

## SEE ALSO

[**XkbFreeNames**(3)](/XkbFreeNames/3.md)
