Provided by: libx11-doc_1.6.9-2ubuntu1_all bug


       XkbGetMap  -  Allocate  an XkbDescRec structure and populate it with the server's keyboard
       client map and server map


       XkbDescPtr XkbGetMap (Display *display, unsigned int which, unsigned int device_spec);


       - display
              connection to X server

       - which
              mask selecting subcomponents to populate

       - device_spec
              device_id, or XkbUseCoreKbd


       Xkb provides two functions to obtain the keyboard mapping components from the server.  The
       first function, XkbGetMap, allocates an XkbDescRec structure, retrieves mapping components
       from the server, and stores them in the XkbDescRec structure it just allocated. The second
       function,  XkbGetUpdatedMap,  retrieves mapping components from the server and stores them
       in an XkbDescRec structure that has previously been allocated.

       To allocate an XkbDescRec structure and populate it with the server's keyboard client  map
       and  server  map,  use XkbGetMap. XkbGetMap is similar to XkbGetKeyboard, but is used only
       for obtaining the address of an XkbDescRec  structure  that  is  populated  with  keyboard
       mapping  components.  It  allows  finer  control  over which substructures of the keyboard
       mapping components are to be populated.  XkbGetKeyboard  always  returns  fully  populated
       components, while XkbGetMap can be instructed to return a partially populated component.

       The  which  mask  is a bitwise inclusive OR of the masks defined in Table 14.1. Only those
       portions of the keyboard server map and the keyboard client maps  that  are  specified  in
       which are allocated and populated.

       In  addition to allocating and obtaining the server map and the client map, XkbGetMap also
       sets  the  device_spec,  the  min_key_code,  and  max_key_code  fields  of  the   keyboard

       XkbGetMap  is  synchronous; it queries the server for the desired information, waits for a
       reply, and then returns. If successful, XkbGetMap returns  a  pointer  to  the  XkbDescRec
       structure it allocated. If unsuccessful, XkbGetMap returns NULL. When unsuccessful, one of
       the following protocol  errors  is  also  generated:  BadAlloc  (unable  to  allocate  the
       XkbDescRec   structure),   BadValue   (some   mask   bits  in  which  are  undefined),  or
       BadImplementation (a compatible version of the Xkb  extension  is  not  available  in  the
       server). To free the returned data, use XkbFreeKeyboard.

       Xkb  also  provides  convenience  functions  to get partial component definitions from the
       server. These functions are specified in the "convenience functions" column  in  Table  1.
       Refer to the sections listed in the table for more information on these functions.

                                     Table 1 Xkb Mapping Component Masks
                                          and Convenience Functions
       Mask                             Value    Map      Fields        Convenience

       XkbKeyTypesMask                  (1<<0)   client   types         XkbGetKeyTypes
                                                          size_types    XkbResizeKeyType
                                                          num_types     XkbCopyKeyType
       XkbKeySymsMask                   (1<<1)   client   syms          XkbGetKeySyms
                                                          size_syms     XkbResizeKeySyms
                                                          num_syms      XkbChangeTypesOfKey
       XkbModifierMapMask               (1<<2)   client   modmap        XkbGetKeyModifierMap
       XkbExplicitComponentsMask        (1<<3)   server   explicit      XkbGetKeyExplicitComponents
       XkbKeyActionsMask                (1<<4)   server   key_acts      XkbGetKeyActions
                                                          acts          XkbResizeKeyActions
       XkbKeyBehaviorsMask              (1<<5)   server   behaviors     XkbGetKeyBehaviors
       XkbVirtualModsMask               (1<<6)   server   vmods         XkbGetVirtualMods
       XkbVirtualModMapMask             (1<<7)   server   vmodmap       XkbGetVirtualModMap

       Xkb defines combinations of these masks for convenience:

          #define XkbResizableInfoMask   (XkbKeyTypesMask)
          #define XkbAllClientInfoMask   (XkbKeyTypesMask | XkbKeySymsMask |
          #define XkbAllServerInfoMask   (XkbExplicitComponentsMask |
                                          XkbKeyActionsMask |
                                          XkbKeyBehaviorsMask |
                                          XkbVirtualModsMask |
          #define XkbAllMapComponentsMask XkbAllClientInfoMask |

       Key types, symbol maps, and actions are all interrelated: changes in one  require  changes
       in  the  others.  The  convenience  functions  make it easier to edit these components and
       handle the interdependencies.


       The complete description of an Xkb keyboard is  given  by  an  XkbDescRec.  The  component
       structures in the XkbDescRec represent the major Xkb components.

       typedef struct {
          struct _XDisplay * display;      /∗ connection to X server */
          unsigned short     flags;        /∗ private to Xkb, do not modify */
          unsigned short     device_spec;  /∗ device of interest */
          KeyCode            min_key_code; /∗ minimum keycode for device */
          KeyCode            max_key_code; /∗ maximum keycode for device */
          XkbControlsPtr     ctrls;        /∗ controls */
          XkbServerMapPtr    server;       /∗ server keymap */
          XkbClientMapPtr    map;          /∗ client keymap */
          XkbIndicatorPtr    indicators;   /∗ indicator map */
          XkbNamesPtr        names;        /∗ names for all components */
          XkbCompatMapPtr    compat;       /∗ compatibility map */
          XkbGeometryPtr     geom;         /∗ physical geometry of keyboard */
       } XkbDescRec, *XkbDescPtr;

       The  display  field  points  to  an X display structure. The flags field is private to the
       library: modifying flags may yield unpredictable results. The device_spec field  specifies
       the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which specifies
       the core keyboard device. The min_key_code and max_key_code fields specify the  least  and
       greatest keycode that can be returned by the keyboard.

       Each  structure  component  has a corresponding mask bit that is used in function calls to
       indicate that the structure should be manipulated in some manner, such as allocating it or
       freeing  it. These masks and their relationships to the fields in the XkbDescRec are shown
       in Table 2.

               Table 2 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         (0x7f)


       XkbChangeTypesOfKey(3),   XkbCopyKeyType(3),   XkbCopyKeyTypes(3),    XkbFreeClientMap(3),
       XkbGetKeyActions(3),               XkbGetKeyBehaviors(3),               XkbGetKeyboard(3),
       XkbGetKeyExplicitComponents(3),         XkbGetKeyModifierMap(3),         XkbGetKeySyms(3),
       XkbGetKeyTypes(3),   XkbGetUpdatedMap(3),   XkbGetVirtualModMap(3),  XkbGetVirtualMods(3),
       XkbResizeKeyActions(3), XkbResizeKeySyms(3), XkbResizeKeyType(3)