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.