Provided by: libx11-doc_1.8.6-1ubuntu1_all bug

NAME

       XkbFreeServerMap - Free memory used by the server member of an XkbDescRec structure

SYNOPSIS

       void XkbFreeServerMap (XkbDescPtr xkb, unsigned int which, Bool free_all);

ARGUMENTS

       xkb    keyboard description containing server map to free

       which  mask identifying components of map to free

       free_all
              True => free all server map components and server itself

DESCRIPTION

       The  XkbFreeServerMap  function  frees  the  specified  components  of  server  map in the
       XkbDescRec structure specified by the xkb parameter and sets the  corresponding  structure
       component  values  to  NULL. The which parameter specifies a combination of the server map
       masks and is a bitwise inclusive OR of the masks listed in Table 1. If free_all  is  True,
       which  is  ignored  and  XkbFreeServerMap  frees every non-NULL structure component in the
       server map, frees the XkbServerMapRec structure referenced by the server member of the xkb
       parameter, and sets the server member to NULL.

                         Table 1 XkbAllocServerMap Masks
       ─────────────────────────────────────────────────────────────────────
       Mask                        Effect
       ─────────────────────────────────────────────────────────────────────
       XkbExplicitComponentsMask   The min_key_code and max_key_code fields
                                   of  the  xkb  parameter  are   used   to
                                   allocate   the  explicit  field  of  the
                                   server map.

       XkbKeyActionsMask           The min_key_code and max_key_code fields
                                   of   the   xkb  parameter  are  used  to
                                   allocate  the  key_acts  field  of   the
                                   server  map. The count_acts parameter is
                                   used to allocate the acts field  of  the
                                   server map.

       XkbKeyBehaviorsMask         The min_key_code and max_key_code fields
                                   of  the  xkb  parameter  are   used   to
                                   allocate  the  behaviors  field  of  the
                                   server map.

       XkbVirtualModMapMask        The min_key_code and max_key_code fields
                                   of   the   xkb  parameter  are  used  to
                                   allocate the vmodmap field of the server
                                   map.

STRUCTURES

       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)

       The  Xkb  server map contains the information the server needs to interpret key events and
       is of type XkbServerMapRec:

       #define XkbNumVirtualMods          16

       typedef struct {                    /* Server Map */
           unsigned short    num_acts;     /* # of occupied entries in acts */
           unsigned short    size_acts;    /* # of entries in acts */
           XkbAction *       acts;         /* linear 2d tables of key actions, 1 per keycode */
           XkbBehavior *     behaviors;    /* key behaviors,1 per keycode */
           unsigned short *  key_acts;     /* index into acts, 1 per keycode */
           unsigned char *   explicit;     /* explicit overrides of core remapping, 1 per key */
           unsigned char     vmods[XkbNumVirtualMods]; /* real mods bound to virtual mods */
           unsigned short *  vmodmap;      /* virtual mods bound to key, 1 per keycode*/
       } XkbServerMapRec, *XkbServerMapPtr;