XkbChangeMap(3) XKB FUNCTIONS XkbChangeMap(3)

# [NAME](#NAME)

XkbChangeMap - Update only partial components of a keyboard description, modify the appropriate fields in the server and map components of a local copy of the keyboard description

# [SYNOPSIS](#SYNOPSIS)

**Bool XkbChangeMap** **(Display \*dpy,** **XkbDescPtr xkb,** **XkbMapChangesPtr changes);**

# [ARGUMENTS](#ARGUMENTS)

[*dpy*](#dpy)

connection to X server

[*xkb*](#xkb)

description from which new values are taken

[*changes*](#changes)

identifies component parts to update

# [DESCRIPTION](#DESCRIPTION)

To update only partial components of a keyboard description, modify the appropriate fields in the server and map components of a local copy of the keyboard description, then call *XkbChangeMap* with an XkbMapChangesRec structure indicating which components have changed.

*XkbChangeMap* copies any components specified by the *changes* structure from the keyboard description, *xkb,* to the X server specified by *dpy.*

If any components specified by *changes* are not present in the *xkb* parameter, *XkbChangeMap* returns False. Otherwise, it sends a request to the server and returns True.

*XkbChangeMap* can generate BadAlloc, BadLength, and BadValue protocol errors.

# [RETURN VALUES](#RETURN_VALUES)

[True](#True)

The XkbChangeMap function returns True if the components specified by *changes* are present in the *xkb* parameter.

[False](#False)

The XkbChangeMap function returns False if the components specified by *changes* are not present in the *xkb* parameter.

# [STRUCTURES](#STRUCTURES)

Use the XkbMapChangesRec structure to identify and track partial modifications to the mapping components and to reduce the amount of traffic between the server and clients.

```
typedef struct _XkbMapChanges {


    unsigned short   changed;            /* identifies valid components in structure */


    KeyCode          min_key_code;       /* lowest numbered keycode for device */


    KeyCode          max_key_code;       /* highest numbered keycode for device */


    unsigned char    first_type;         /* index of first key type modified */


    unsigned char    num_types;          /* # types modified */


    KeyCode          first_key_sym;      /* first key whose key_sym_map changed */


    unsigned char    num_key_syms;       /* # key_sym_map entries changed */


    KeyCode          first_key_act;      /* first key whose key_acts entry changed */


    unsigned char    num_key_acts;       /* # key_acts entries changed */


    KeyCode          first_key_behavior; /* first key whose behaviors changed */


    unsigned char    num_key_behaviors;  /* # behaviors entries changed */


    KeyCode          first_key_explicit; /* first key whose explicit entry changed */


    unsigned char    num_key_explicit;   /* # explicit entries changed */


    KeyCode          first_modmap_key;   /* first key whose modmap entry changed */


    unsigned char    num_modmap_keys;    /* # modmap entries changed */


    KeyCode          first_vmodmap_key;  /* first key whose vmodmap changed */


    unsigned char    num_vmodmap_keys;   /* # vmodmap entries changed */


    unsigned char    pad1;               /* reserved */


    unsigned short   vmods;              /* mask indicating which vmods changed */
} XkbMapChangesRec,*XkbMapChangesPtr;
```

# [DIAGNOSTICS](#DIAGNOSTICS)

[**BadAlloc**](#BadAlloc)

Unable to allocate storage

[**BadLength**](#BadLength)

The length of a request is shorter or longer than that required to minimally contain the arguments

[**BadValue**](#BadValue)

An argument is out of range

libX11 1.8.13 X Version 11

---

Document: XkbChangeMap(3) from libx11 1.8.13-r7 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libx11.git
