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

# XkbAllocNames(3)

Allocate symbolic names structures

## NAME

XkbAllocNames - Allocate symbolic names structures

## SYNOPSIS

**Status XkbAllocNames** **(XkbDescPtr** *xkb***,** **unsigned int** *which***,** **int** *num\_rg***,** **int** *num\_key\_aliases***);**

## ARGUMENTS

- *xkb*

  keyboard description for which names are to be allocated

- *which*

  mask of names to be allocated

- *num\_rg*

  total number of radio group names needed

- *num\_key\_aliases*

  total number of key aliases needed

## DESCRIPTION

Most applications do not need to directly allocate symbolic names structures. Do not allocate a names structure directly using *malloc* or *Xmalloc* if your application changes the number of key aliases or radio groups or constructs a symbolic names structure without loading the necessary components from the X server. Instead use *XkbAllocNames.*

*XkbAllocNames* can return BadAlloc, BadMatch, and BadValue errors. The *which* parameter 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 |

Do not free symbolic names structures directly using *free* or *XFree.* Use *XkbFreeNames* instead.

## DIAGNOSTICS

- **BadAlloc**

  Unable to allocate storage

- **BadMatch**

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

- **BadValue**

  An argument is out of range

## SEE ALSO

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