XkbGetKeyboard allocates and returns a pointer to a keyboard description. It queries the server for those
components specified in the which parameter for device device_spec and copies the results to the
XkbDescRec it allocated. The remaining fields in the keyboard description are set to NULL. The valid
masks for which are those listed in Table 1.
Table 1 Mask Bits for XkbDescRec
──────────────────────────────────────────────────
Mask Bit XkbDescRec Field Value
──────────────────────────────────────────────────
XkbControlsMask ctrls (1L<<0)
XkbServerMapMask server (1L<<1)
XkbIClientMapMask map (1L<<2)
XkbIndicatorMapMask indicators (1L<<3)
XkbNamesMask names (1L<<4)
XkbCompatMapMask compat (1L<<5)
XkbGeometryMask geom (1L<<6)
XkbAllComponentsMask All Fields (1L<<7)
XkbGetKeyboard is used to read the current description for one or more components of a keyboard device.
It calls XkbGetKeyboardByName(3) as follows:
XkbGetKeyboardByName(dpy,device_spec, NULL, which,which, False).
If successful, XkbGetKeyboard returns a pointer to a newly allocated XkbDescRec structure, which is
described in XkbGetKeyboardByName(3), and which should be freed with XkbFreeKeyboard(3). If
XkbGetKeyboard does not succeed, it returns NULL.