XkbFreeNames(3)
π NAME π
ok so XkbFreeNames β it frees your symbolic names structures, bestie. that's the whole vibe β¨
this is the XkbFreeNames(3) page from the XKB FUNCTIONS corner of the manual, and yes we're gonna get through it together π«Ά
β¨ SYNOPSIS β¨
void XkbFreeNames (XkbDescPtr xkb, unsigned int which, Bool free_map);
three little args, one big cleanup, no cap π₯
π ARGUMENTS π
xkbβ the keyboard description whose names you're about to free. it's giving "the thing we're cleaning up" π§Ήwhichβ a mask saying which names components to free. bitwise OR energy, iykyk πfree_mapβTrue=> theXkbNamesRecstructure itself should be freed too.Falseand the struct itself stays put. periodt.
πΈ DESCRIPTION πΈ
β οΈ ok this is the important one: do NOT free symbolic names structures directly usingfreeorXFree. like, don't. useXkbFreeNamesinstead. this is the icon, the main character, the only correct path π
the which parameter is the bitwise inclusive OR of the valid names mask bits that are defined in Table 1. (yes, that Table 1. she's coming up next. π)
Xkb provides several functions that work with symbolic names β and each of these functions uses a mask to specify individual fields of the structures described above. those masks, and their relationships to the fields in a keyboard description, are shown in Table 1. literally all the receipts are right there π§Ύ
β Table 1: Symbolic Names Masks β
XkbKeycodesNameMaskβ value(1<<0), keyboard componentXkb->names, fieldkeycodesXkbGeometryNameMaskβ value(1<<1), keyboard componentXkb->names, fieldgeometryXkbSymbolsNameMaskβ value(1<<2), keyboard componentXkb->names, fieldsymbolsXkbPhysSymbolsNameMaskβ value(1<<3), keyboard componentXkb->names, fieldphys_symbolsXkbTypesNameMaskβ value(1<<4), keyboard componentXkb->names, fieldtypeXkbCompatNameMaskβ value(1<<5), keyboard componentXkb->names, fieldcompatXkbKeyTypeNamesMaskβ value(1<<6), keyboard componentXkb->map, fieldtype[*].nameXkbKTLevelNamesMaskβ value(1<<7), keyboard componentXkb->map, fieldtype[*].lvl_names[*]XkbIndicatorNamesMaskβ value(1<<8), keyboard componentXkb->names, fieldindicators[*]XkbKeyNamesMaskβ value(1<<9), keyboard componentXkb->names, fieldkeys[*], num_keysXkbKeyAliasesMaskβ value(1<<10), keyboard componentXkb->names, fieldkey_aliases[*], num_key_aliasesXkbVirtualModNamesMaskβ value(1<<11), keyboard componentXkb->names, fieldvmods[*]XkbGroupNamesMaskβ value(1<<12), keyboard componentXkb->names, fieldgroups[*]XkbRGNamesMaskβ value(1<<13), keyboard componentXkb->names, fieldradio_groups[*], num_rgXkbComponentNamesMaskβ value0x3f, keyboard componentXkb->names, fieldskeycodes,geometry,symbols, physical symbols, types, and compatibility map β yeah, all of those bestie, it's a whole bundle πXkbAllNamesMaskβ value0x3fff, keyboard componentXkb->names, field: all name components. every single one. the full set. slay π
and that's the whole page, no crumbs left behind π
cute little sign-off so you know where this came from: it's X Version 11, from libX11 1.8.14, and this page is XkbFreeNames(3) β go free those names responsibly, bestie π¦π
π¦ where this page comes from
- alpine 3.24: libx11-doc 1.8.14-r0 Β· X11
- arch rolling: libx11 1.8.14-1 Β· MIT AND X11
- nixos 26.05: libx11 1.8.14
- nixpkgs unstable: libx11 1.8.14
- Copyright (c) 1999, Oracle and/or its affiliates
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms