Index of Section 3 Manual Pages

Interix / SUAXkbKeyNumActions.3Interix / SUA

XkbKeyNumActions(3)       XKB FUNCTIONS       XkbKeyNumActions(3)



NAME
       XkbKeyNumActions  - Computes the number of actions associ-
       ated with the key corresponding to keycode

SYNOPSIS
       int XkbKeyNumActions 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.

       XkbKeyNumActions computes the number of actions associated
       with the key corresponding to keycode.  This should be the
       same value as the result of XkbKeyNumSyms.

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
       XkbKeyNumSyms(3)



X Version 11               libX11 1.1.5       XkbKeyNumActions(3)

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