1XkbOutOfRangeGroupNumber(3)      XKB FUNCTIONS     XkbOutOfRangeGroupNumber(3)
2
3
4

NAME

6       XkbOutOfRangeGroupNumber  - Returns the out-of-range group number, rep‐
7       resented as a group index, from the group_info field of an XkbSymMapRec
8       structure
9

SYNOPSIS

11       unsigned char XkbOutOfRangeGroupNumber (unsigned char grp_inf);
12

ARGUMENTS

14       - grp_inf
15              Xkb description of interest
16

DESCRIPTION

18       XkbOutOfRangeGroupNumber  returns the out-of-range group number, repre‐
19       sented as a group index, from the group_info field of  an  XkbSymMapRec
20       structure.
21
22       The  group_info field of an XkbSymMapRec is an encoded value containing
23       the number of groups of symbols bound to the key as well as the  speci‐
24       fication of the treatment of out-of-range groups. It is legal for a key
25       to have zero groups, in which case it also has  zero  symbols  and  all
26       events from that key yield NoSymbol.  To obtain the number of groups of
27       symbols bound to the key, use XkbKeyNumGroups.  To change the number of
28       groups  bound to a key, use XkbChangeTypesOfKey.  To obtain a mask that
29       determines the treatment of out-of-range  groups,  use  XkbKeyGroupInfo
30       and XkbOutOfRangeGroupInfo.
31
32       The  keyboard  controls contain a groups_wrap field specifying the han‐
33       dling of illegal groups on a global basis. That is, when the user  per‐
34       forms  an  action  causing  the  effective group to go out of the legal
35       range, the groups_wrap field specifies how to normalize  the  effective
36       keyboard  group  to  a group that is legal for the keyboard as a whole,
37       but there is no guarantee that the normalized group will be within  the
38       range  of  legal  groups for any individual key. The per-key group_info
39       field specifies how a key treats a legal effective  group  if  the  key
40       does  not  have a type specified for the group of concern. For example,
41       the Enter key usually has just one group defined. If the user  performs
42       an  action  causing  the global keyboard group to change to Group2, the
43       group_info field for the Enter key describes how to handle this  situa‐
44       tion.
45
46       Out-of-range groups for individual keys are mapped to a legal group us‐
47       ing the same options as are used for the overall  keyboard  group.  The
48       particular  type  of  mapping used is controlled by the bits set in the
49       group_info flag, as shown in Table 1.
50
51
52
53          Table 1 group_info Range Normalization
54       ──────────────────────────────────────────────
55       Bits set in group_info   Normalization method
56       ──────────────────────────────────────────────
57       XkbRedirectIntoRange     XkbRedirectIntoRange
58       XkbClampIntoRange        XkbClampIntoRange
59       none of the above        XkbWrapIntoRange
60

STRUCTURES

62       The KeySymMapRec structure is defined as follows:
63
64           #define XkbNumKbdGroups             4
65           #define XkbMaxKbdGroup              (XkbNumKbdGroups-1)
66
67           typedef struct {                    /* map to keysyms for a single keycode */
68               unsigned char       kt_index[XkbNumKbdGroups];  /* key type index for each group */
69               unsigned char       group_info; /* # of groups and out of range group handling */
70               unsigned char       width;      /* max # of shift levels for key */
71               unsigned short      offset;     /* index to keysym table in syms array */
72       } XkbSymMapRec, *XkbSymMapPtr;
73
74
75       The XkbControlsRec structure is defined as follows:
76
77           #define XkbMaxLegalKeyCode     255
78           #define XkbPerKeyBitArraySize  ((XkbMaxLegalKeyCode+1)/8)
79
80
81           typedef struct {
82               unsigned char   mk_dflt_btn;      /* default button for keyboard driven mouse */
83               unsigned char   num_groups;       /* number of keyboard groups */
84               unsigned char   groups_wrap;      /* how to wrap out-of-bounds groups */
85               XkbModsRec      internal;         /* defines server internal modifiers */
86               XkbModsRec      ignore_lock;      /* modifiers to ignore when checking for grab */
87               unsigned int    enabled_ctrls;    /* 1 bit => corresponding boolean control enabled */
88               unsigned short  repeat_delay;     /* ms delay until first repeat */
89               unsigned short  repeat_interval;  /* ms delay between repeats */
90               unsigned short  slow_keys_delay;  /* ms minimum time key must be down to be ok */
91               unsigned short  debounce_delay;   /* ms delay before key reactivated */
92               unsigned short  mk_delay;         /* ms delay to second mouse motion event */
93               unsigned short  mk_interval;      /* ms delay between repeat mouse events */
94               unsigned short  mk_time_to_max;   /* # intervals until constant mouse move */
95               unsigned short  mk_max_speed;     /* multiplier for maximum mouse speed */
96               short           mk_curve;         /* determines mouse move curve type */
97               unsigned short  ax_options;       /* 1 bit => Access X option enabled */
98               unsigned short  ax_timeout;       /* seconds until Access X disabled */
99               unsigned short  axt_opts_mask;    /* 1 bit => options to reset on Access X timeout */
100               unsigned short  axt_opts_values;  /* 1 bit => turn option on, 0=> off */
101               unsigned int    axt_ctrls_mask;   /* which bits in enabled_ctrls to modify */
102               unsigned int    axt_ctrls_values; /* values for new bits in enabled_ctrls */
103               unsigned char   per_key_repeat[XkbPerKeyBitArraySize];  /* per key auto repeat */
104            } XkbControlsRec, *XkbControlsPtr;
105
106       The XkbControlsRec structure is defined as follows:
107
108           #define XkbMaxLegalKeyCode     255
109           #define XkbPerKeyBitArraySize  ((XkbMaxLegalKeyCode+1)/8)
110
111
112           typedef struct {
113               unsigned char   mk_dflt_btn;      /* default button for keyboard driven mouse */
114               unsigned char   num_groups;       /* number of keyboard groups */
115               unsigned char   groups_wrap;      /* how to wrap out-of-bounds groups */
116               XkbModsRec      internal;         /* defines server internal modifiers */
117               XkbModsRec      ignore_lock;      /* modifiers to ignore when checking for grab */
118               unsigned int    enabled_ctrls;    /* 1 bit => corresponding boolean control enabled */
119               unsigned short  repeat_delay;     /* ms delay until first repeat */
120               unsigned short  repeat_interval;  /* ms delay between repeats */
121               unsigned short  slow_keys_delay;  /* ms minimum time key must be down to be ok */
122               unsigned short  debounce_delay;   /* ms delay before key reactivated */
123               unsigned short  mk_delay;         /* ms delay to second mouse motion event */
124               unsigned short  mk_interval;      /* ms delay between repeat mouse events */
125               unsigned short  mk_time_to_max;   /* # intervals until constant mouse move */
126               unsigned short  mk_max_speed;     /* multiplier for maximum mouse speed */
127               short           mk_curve;         /* determines mouse move curve type */
128               unsigned short  ax_options;       /* 1 bit => Access X option enabled */
129               unsigned short  ax_timeout;       /* seconds until Access X disabled */
130               unsigned short  axt_opts_mask;    /* 1 bit => options to reset on Access X timeout */
131               unsigned short  axt_opts_values;  /* 1 bit => turn option on, 0=> off */
132               unsigned int    axt_ctrls_mask;   /* which bits in enabled_ctrls to modify */
133               unsigned int    axt_ctrls_values; /* values for new bits in enabled_ctrls */
134               unsigned char   per_key_repeat[XkbPerKeyBitArraySize];  /* per key auto repeat */
135            } XkbControlsRec, *XkbControlsPtr;
136

SEE ALSO

138       XkbChangeTypesOfKey(3), XkbKeyGroupInfo(3), XkbOutOfRangeGroupInfo(3)
139
140
141
142X Version 11                    libX11 1.7.3.1     XkbOutOfRangeGroupNumber(3)
Impressum