XkbChangeMap(3)

πŸ’– NAME πŸ’–

okay bestie, meet XkbChangeMap(3) from the XKB FUNCTIONS crew ✨ This one is for updating only partial components of a keyboard description β€” you modify the appropriate fields in the server and map components of a local copy of the keyboard description. It's giving β€œsurgical little keyboard update” energy, no cap πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

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

🌸 ARGUMENTS 🌸

  • dpy β€” connection to X server. The server girlie you're talking to, periodt.
  • xkb β€” description from which new values are taken. This is where the fresh components come from.
  • changes β€” identifies component parts to update. The little map of what changed, iykyk.

✨ 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. Lowkey iconic: it's the β€œdon't resend the whole keyboard, just the changed bits” move 🫢

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

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. πŸ’–

heads up bestie: XkbChangeMap can generate BadAlloc, BadLength, and BadValue protocol errors. Not me being dramatic β€” that's literally in the diagnostics πŸ’€

πŸ‘‘ RETURN VALUES πŸ‘‘

  • True β€” The XkbChangeMap function returns True if the components specified by changes are present in the xkb parameter. βœ…
  • False β€” The XkbChangeMap function returns False if the components specified by changes are not present in the xkb parameter. πŸ™ˆ

πŸŽ€ 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. Basically: the receipts for what changed, so we don't spam the server. πŸ’Œ

       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 πŸ’€

  • BadAlloc β€” Unable to allocate storage. RIP to the memory, literally 😭
  • BadLength β€” The length of a request is shorter or longer than that required to minimally contain the arguments. The request is doing too much or not enough, and the server is side-eyeing it.
  • BadValue β€” An argument is out of range. Bestie, that value is not invited to this range party 🚫

okay bye bestie πŸ’– This has been XkbChangeMap(3), XKB FUNCTIONS edition, brought to you by X Version 11 and libX11 1.8.14. The footer didn't give me a date, so no cap, we're not inventing one β€” mwah πŸ’‹

πŸ“¦ where this page comes from