XkbCopyKeyType(3) XKB FUNCTIONS XkbCopyKeyType(3)

# [NAME](#NAME)

XkbCopyKeyType - Copy one XkbKeyTypeRec structures

# [SYNOPSIS](#SYNOPSIS)

**Status XkbCopyKeyType** **(XkbKeyTypePtr from,** **XkbKeyTypePtr into);**

# [ARGUMENTS](#ARGUMENTS)

[*from*](#from)

pointer to XkbKeyTypeRec to be copied

[*into*](#into)

pointer to XkbKeyTypeRec to be changed

# [DESCRIPTION](#DESCRIPTION)

*XkbCopyKeyType* copies the key type specified by *from* to the key type specified by *into.* Both must point to legal XkbKeyTypeRec structures. Xkb assumes *from* and *into* point to different places. As a result, overlaps can be fatal. *XkbCopyKeyType* frees any existing *map, preserve,* and *level\_names* in *into* prior to copying. If any allocation errors occur while copying *from* to *into, XkbCopyKeyType* returns BadAlloc. Otherwise, *XkbCopyKeyType* copies *from* to *into* and returns Success.

# [STRUCTURES](#STRUCTURES)

Key types are used to determine the shift level of a key given the current state of the keyboard. The set of all possible key types for the Xkb keyboard description are held in the *types* field of the client map, whose total size is stored in *size\_types,* and whose total number of valid entries is stored in *num\_types.* Key types are defined using the following structure:

```
typedef struct {                   /* Key Type */


    XkbModsRec        mods;        /* modifiers used to compute shift level */


    unsigned char     num_levels;  /* total # shift levels, do not modify directly */


    unsigned char     map_count;   /* # entries in map, preserve (if non-NULL) */


    XkbKTMapEntryPtr  map;         /* vector of modifiers for each shift level */


    XkbModsPtr        preserve;    /* mods to preserve for corresponding map entry */


    Atom              name;        /* name of key type */


    Atom *            level_names; /* array of names of each shift level */
} XkbKeyTypeRec, *XkbKeyTypePtr;
```

# [DIAGNOSTICS](#DIAGNOSTICS)

[**BadAlloc**](#BadAlloc)

Unable to allocate storage

libX11 1.8.14 X Version 11

---

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