XkbFreeNames(3)

NAME
XkbFreeNames - Free symbolic names structures

SYNOPSIS

void XkbFreeNames (XkbDescPtr xkb, unsigned int which, Bool free_map);

ARGUMENTS

xkb keyboard description for which names are to be freed

which
    mask of names components to be freed

free_map
    True => XkbNamesRec structure itself should be freed

DESCRIPTION

Do not free symbolic names structures directly using free or XFree. Use XkbFreeNames instead. The which parameter is the bitwise inclusive OR of the valid names mask bits defined in Table 1. Xkb provides several functions that work with symbolic names. Each of these functions uses a mask to specify individual fields of the structures described above. These masks and their relationships to the fields in a keyboard description are shown 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