Index of Section 3 Manual Pages

Interix / SUAXkbKeyTypesForCoreSymbols.3Interix / SUA

XkbKeyTypesForCoreSymbols(XKB FUNCTIOXkbKeyTypesForCoreSymbols(3)



NAME
       XkbKeyTypesForCoreSymbols  -  Determine  the Xkb key types
       appropriate for the symbols bound to a key in a core  key-
       board mapping

SYNOPSIS
       int XkbKeyTypesForCoreSymbols ( xkb, map_width, core_syms,
       protected, types_inout, xkb_syms_rtrn )
             XkbDescPtr xkb;
             int map_width;
             KeySym * core_syms;
             unsigned int protected;
             int * types_inout;
             KeySym * xkb_syms_rtrn;

ARGUMENTS
       - xkb  keyboard description in which to place symbols

       - map_width
              width of core protocol keymap in xkb_syms_rtrn

       - core_syms
              core protocol format array of KeySyms

       - protected
              explicit key types

       - types_inout
              backfilled with the canonical types bound to groups
              one and two for the key

       - xkb_syms_rtrn
              backfilled with symbols bound to the key in the Xkb
              mapping

DESCRIPTION
       XkbKeyTypesForCoreSymbols expands the symbols in core_syms
       and types in types_inout, then chooses canonical key types
       (canonical key types are defined The Canonical Key  Types)
       for  groups  1  and 2 using the rules specified by the Xkb
       protocol and places them in xkb_syms_rtrn, which  will  be
       non-NULL.

       The Canonical Key Types

       Xkb  allows  up  to  XkbMaxKeyTypes  (255) key types to be
       defined, but requires  at  least  XkbNumRequiredTypes  (4)
       predefined  types to be in a key map. These predefined key
       types are referred to  as  the  canonical  key  types  and
       describe  the  types  of keys available on most keyboards.
       The definitions for the canonical key types  are  held  in
       the  first  XkbNumRequiredTypes entries of the types field
       of the client map and are indexed using the following con-
       stants:

           XkbOneLevelIndex
           XkbTwoLevelIndex
           XkbAlphabeticIndex
           XkbKeypadIndex


       ONE_LEVEL

       The ONE_LEVEL key type describes groups that have only one
       symbol. The default ONE_LEVEL key type has no map  entries
       and  does  not  pay attention to any modifiers. A symbolic
       representation of this key type could look like  the  fol-
       lowing:

           type "ONE_LEVEL" {
                modifiers = None;
                map[None]= Level1;
                level_name[Level1]= "Any";
           };

       The description of the ONE_LEVEL key type is stored in the
       types[XkbOneLevelIndex] entry of the client key map.

       TWO_LEVEL

       The TWO_LEVEL key type describes groups  that  consist  of
       two  symbols but are neither alphabetic nor numeric keypad
       keys. The default TWO_LEVEL type uses only the Shift modi-
       fier.  It  returns  shift  level  two if Shift is set, and
       level one if it is not. A symbolic representation of  this
       key type could look like the following:

           type "TWO_LEVEL" {
               modifiers = Shift;
               map[Shift]= Level2;
               level_name[Level1]= "Base";
               level_name[Level2]= "Shift";
           };


       The description of the TWO_LEVEL key type is stored in the
       types[XkbTwoLevelIndex] entry of the client key map.

       ALPHABETIC

       The ALPHABETIC key type describes groups consisting of two
       symbols:  the  lowercase  form of a symbol followed by the
       uppercase form of the same symbol.  The default ALPHABETIC
       type  implements locale-sensitive "Shift cancels CapsLock"
       behavior using both the Shift and Lock modifiers  as  fol-
       lows:


       o    If  Shift  and  Lock are both set, the default ALPHA-
            BETIC type yields level one.

       o    If Shift alone is set, it yields level two.

       o    If Lock alone is set, it yields level one,  but  pre-
            serves  the Lock modifier so Xlib notices and applies
            the appropriate capitalization rules. The Xlib  func-
            tions  are locale-sensitive and apply different capi-
            talization rules for different locales.

       o    If neither Shift nor Lock is  set,  it  yields  level
            one.

            A symbolic representation of this key type could look
            like the following:

                type "ALPHABETIC" {
                    modifiers = Shift+Lock;
                    map[Shift]= Level2;
                    preserve[Lock]= Lock;
                    level_name[Level1]= "Base";
                    level_name[Level2]= "Caps";
                };

            The description of the ALPHABETIC key type is  stored
            in  the types[XkbAlphabeticIndex] entry of the client
            key map.

            KEYPAD

            The KEYPAD key type describes groups that consist  of
            two  symbols, at least one of which is a numeric key-
            pad symbol. The numeric keypad symbol is  assumed  to
            reside  at  level  two.  The  default KEYPAD key type
            implements "Shift cancels NumLock" behavior using the
            Shift  modifier  and  the  real modifier bound to the
            virtual modifier named "NumLock," known as  the  Num-
            Lock modifier, as follows:


       o    If Shift and NumLock are both set, the default KEYPAD
            type yields level one.

       o    If Shift alone is set, it yields level two.

       o    If NumLock alone is set, it yields level two.

       o    If neither Shift nor NumLock is set, it yields  level
            one.

            A symbolic representation of this key type could look
            like the following:

                type "KEYPAD" {
                    modifiers = Shift+NumLock;
                    map[None]= Level1;
                    map[Shift]= Level2;
                    map[NumLock]= Level2;
                    map[Shift+NumLock]= Level1;
                    level_name[Level1]= "Base";
                    level_name[Level2]= "Caps";
                };

            The description of the KEYPAD key type is  stored  in
            the  types[XkbKeypadIndex]  entry  of  the client key
            map.

            A core keymap is a two-dimensional array of  keysyms.
            It  has  map_width  columns  and  max_key_code  rows.
            XkbKeyTypesForCoreSymbols takes a single row  from  a
            core  keymap, determines the number of groups associ-
            ated with it, the type of each group, and the symbols
            bound  to each group.  The return value is the number
            of groups, types_inout has the types for each  group,
            and  xkb_syms_rtrn has the symbols in Xkb order (that
            is, groups are contiguous, regardless of size).

            protected  contains  the  explicitly  protected   key
            types.  There is one  explicit override control asso-
            ciated with each of the four possible groups for each
            Xkb  key,  ExplicitKeyType1 through ExplicitKeyType4;
            protected is  an  inclusive  OR  of  these  controls.
            map_width  is the width of the core keymap and is not
            dependent on any Xkb definitions.  types_inout is  an
            array  of  four  type  indices. On input, types_inout
            contains the indices of any types already assigned to
            the  key,  in case they are explicitly protected from
            change.

            Upon return, types_inout contains  any  automatically
            selected  (that  is,  canonical)  types plus any pro-
            tected types. Canonical types  are  assigned  to  all
            four groups if there are enough symbols to do so. The
            four entries in types_inout correspond  to  the  four
            groups for the key in question.



X Version 11               libX11 1.1XkbKeyTypesForCoreSymbols(3)

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