Man Linux: Main Page and Category List

NAME

       XkbKeyActionEntry  -  Returns the key action corresponding to group grp
       and shift level lvl from  the  two-dimensional  table  of  key  actions
       associated with the key corresponding to keycode

SYNOPSIS

       XkbAction  XkbKeyActionEntry  (XkbDescPtr  xkb,  KeyCode  keycode,  int
              shift, int grp);

ARGUMENTS

       - xkb  Xkb description of interest

       - keycode
              keycode of interest

       - shift
              shift level within group

       - grp  group index for group 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 multiple shift levels and a different number of
       groups per  key,  a  single  two-dimensional  array  of  KeySyms  would
       potentially  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.

       XkbKeyActionEntry returns the key action corresponding to group grp and
       shift  level  lvl  from  the  two-dimensional  table  of  key   actions
       associated with the key corresponding to keycode.

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;