XkbAllocCompatMap(3) XKB FUNCTIONS XkbAllocCompatMap(3)

# [NAME](#NAME)

XkbAllocCompatMap - Allocate a new compatibility map if you do not already have one available

# [SYNOPSIS](#SYNOPSIS)

**Status XkbAllocCompatMap** **(XkbDescPtr xkb,** **unsigned int which,** **unsigned int num\_si);**

# [ARGUMENTS](#ARGUMENTS)

[*xkb*](#xkb)

keyboard description in which to allocate compat map

[*which*](#which)

mask of compatibility map components to allocate

[*num\_si*](#num_si)

number of symbol interpretations to allocate

# [DESCRIPTION](#DESCRIPTION)

*xkb* specifies the keyboard description for which compatibility maps are to be allocated. The compatibility map is the *compat* field in this structure.

*which* specifies the compatibility map components to be allocated (see XkbGetCompatMap). *which* is an inclusive OR of the bits shown in Table 1.

Table 1 Compatibility Map Component Masks Mask Value Affecting XkbSymInterpMask (1&lt;&lt;0) Symbol interpretations XkbGroupCompatMask (1&lt;&lt;1) Group maps XkbAllCompatMask (0x3) All compatibility map components

*num\_si* specifies the total number of entries to allocate in the symbol interpretation vector *(xkb.compat.sym\_interpret).*

*XkbAllocCompatMap* returns Success if successful, BadMatch if *xkb* is NULL, or BadAlloc if errors are encountered when attempting to allocate storage.

# [STRUCTURES](#STRUCTURES)

```


    typedef struct {


        KeySym            sym;          /* keysym of interest or NULL */


        unsigned char     flags;        /* XkbSI_AutoRepeat, XkbSI_LockingKey */


        unsigned char     match;        /* specifies how mods is interpreted */


        unsigned char     mods;         /* modifier bits, correspond to eight real modifiers */


        unsigned char     virtual_mod;  /* 1 modifier to add to key virtual mod map */


        XkbAnyAction      act;          /* action to bind to symbol position on key */


    } XkbSymInterpretRec,*XkbSymInterpretPtr;
```

# [DIAGNOSTICS](#DIAGNOSTICS)

[**BadAlloc**](#BadAlloc)

Unable to allocate storage

[**BadMatch**](#BadMatch)

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

# [SEE ALSO](#SEE_ALSO)

[**XkbGetCompatMap**(3)](/man/os/libx11/XkbGetCompatMap.3)

# [NOTES](#NOTES)

Note that symbol interpretations in a compatibility map (the *sym\_interpret* vector of XkbSymInterpretRec structures) are also allocated using this same function. To ensure that there is sufficient space in the symbol interpretation vector for entries to be added, use *XkbAllocCompatMap* specifying *which* as XkbSymInterpretMask and the number of free symbol interpretations needed in *num\_si.*

libX11 1.8.14 X Version 11

---

Document: XkbAllocCompatMap(3) from libx11 1.8.14-r4 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libx11.git
