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 |