Index of Section 3 Manual Pages

Interix / SUAXkbKeyActionsPtr.3Interix / SUA

XkbKeyActionsPtr(3)       XKB FUNCTIONS       XkbKeyActionsPtr(3)



NAME
       XkbKeyActionsPtr  -   Returns  a pointer to the two-dimen-
       sional array of key actions associated with the key corre-
       sponding to keycode

SYNOPSIS
       XkbKeyActionPtr XkbKeyActionsPtr macro ( xkb, keycode )
             XkbDescPtr xkb;
             KeyCode keycode;

ARGUMENTS
       - xkb  Xkb description of interest

       - keycode
              keycode of interest

DESCRIPTION
       A  key  action defines the effect key presses and releases
       have on the internal state of the  server.   For  example,
       the expected key action associated with pressing the Shift
       key is to set the Shift modifier. There is zero or one key
       action associated with each keysym bound to each key.

       Just  as  the  entire list of key symbols for the keyboard
       mapping is held in the syms field of the client  map,  the
       entire  list  of  key  actions for the keyboard mapping is
       held in the acts array of the server map. The  total  size
       of  acts  is  specified  by  size_acts,  and the number of
       entries is specified by num_acts.

       The key_acts array,  indexed  by  keycode,  describes  the
       actions  associated  with  a  key.  The key_acts array has
       min_key_code unused entries at the start to  allow  direct
       indexing  using a keycode. If a key_acts entry is zero, it
       means the key does not have any  actions  associated  with
       it. If an entry is not zero, the entry represents an index
       into the acts field of the server map, much as the  offset
       field  of  a  KeySymMapRec  structure is an index into the
       syms field of the client map.

       The reason the acts field is a linear list  of  XkbActions
       is  to  reduce  the  memory  consumption associated with a
       keymap.  Because Xkb allows individual keys to have multi-
       ple shift levels and a different number of groups per key,
       a single two-dimensional array  of  KeySyms  would  poten-
       tially  be  very large and sparse. Instead, Xkb provides a
       small two-dimensional array of XkbActions for each key. To
       store  all  of  these  individual arrays, Xkb concatenates
       each array together in the acts field of the server map.

       The key action structures consist only of fields  of  type
       char  or  unsigned  char.   This  is done to optimize data
       transfer when the server sends bytes over the wire. If the
       fields  are  anything  but  bytes,  the server has to sift
       through all of the actions and swap  any  nonbyte  fields.
       Because  they  consist  of  nothing but bytes, it can just
       copy them out.

       XkbKeyActionsPtr returns a pointer to the  two-dimensional
       array of key actions associated with the key corresponding
       to keycode.  Use XkbKeyActionsPtr only if the key actually
       has   some   actions   associated   with   it,   that  is,
       XkbKeyNumActions (xkb, keycode) returns something  greater
       than zero.

STRUCTURES
       The KeySymMapRec structure is defined as follows:

           #define XkbNumKbdGroups             4
           #define XkbMaxKbdGroup              (XkbNumKbdGroups-1)

           typedef struct {                    /* map to keysyms for a single keycode
       */
               unsigned char       kt_index[XkbNumKbdGroups];  /* key type index for
       each group */
               unsigned char       group_info; /* # of groups and out of range group
       handling */
               unsigned char       width;      /* max # of shift levels for key */
               unsigned short      offset;     /* index to keysym table in syms array
       */
       } XkbSymMapRec, *XkbSymMapPtr;


SEE ALSO
       XkbKeyNumActions(3)



X Version 11               libX11 1.1.5       XkbKeyActionsPtr(3)

Interix / SUAHosted at SUA Community for Interix, SUA and SFUInterix / SUA