Tizen 2.1 base
[framework/uifw/xorg/lib/libx11.git] / man / xkb / XkbOutOfRangeGroupInfo.man
1 '\" t
2 .\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
3 .\"
4 .\" Permission is hereby granted, free of charge, to any person obtaining a
5 .\" copy of this software and associated documentation files (the "Software"),
6 .\" to deal in the Software without restriction, including without limitation
7 .\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 .\" and/or sell copies of the Software, and to permit persons to whom the
9 .\" Software is furnished to do so, subject to the following conditions:
10 .\"
11 .\" The above copyright notice and this permission notice (including the next
12 .\" paragraph) shall be included in all copies or substantial portions of the
13 .\" Software.
14 .\"
15 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 .\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 .\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18 .\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 .\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 .\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 .\" DEALINGS IN THE SOFTWARE.
22 .\"
23 .TH XkbOutOfRangeGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
24 .SH NAME
25 XkbOutOfRangeGroupInfo \- Returns only the out-of-range processing information 
26 from the group_info field of an XkbSymMapRec structure
27 .SH SYNOPSIS
28 .HP
29 .B unsigned char XkbOutOfRangeGroupInfo
30 .BI "(\^unsigned char " "grp_inf" "\^);"
31 .if n .ti +5n
32 .if t .ti +.5i
33 .SH ARGUMENTS
34 .TP
35 .I \- grp_inf
36 Xkb description of interest
37 .SH DESCRIPTION
38 .LP
39 .I XkbOutOfRangeGroupInfo 
40 returns only the out-of-range processing information from the 
41 .I group_info 
42 field of an XkbSymMapRec structure.
43
44 The 
45 .I group_info 
46 field of an XkbSymMapRec is an encoded value containing the number of groups of 
47 symbols bound to the 
48 key as well as the specification of the treatment of out-of-range groups. It is 
49 legal for a key to 
50 have zero groups, in which case it also has zero symbols and all events from 
51 that key yield NoSymbol. 
52 To obtain the number of groups of symbols bound to the key, use 
53 .I XkbKeyNumGroups. 
54 To change the number of groups bound to a key, use 
55 .I XkbChangeTypesOfKey. 
56 To obtain a mask that determines the treatment of out-of-range groups, use
57 .I XkbKeyGroupInfo 
58 and 
59 .I XkbOutOfRangeGroupInfo.
60
61 The keyboard controls contain a 
62 .I groups_wrap 
63 field specifying the handling of illegal groups on a global basis. That is, when 
64 the user performs an 
65 action causing the effective group to go out of the legal range, the 
66 .I groups_wrap 
67 field specifies how to normalize the effective keyboard group to a group that is 
68 legal for the 
69 keyboard as a whole, but there is no guarantee that the normalized group will be 
70 within the range of 
71 legal groups for any individual key. The per-key 
72 .I group_info 
73 field specifies how a key treats a legal effective group if the key does not 
74 have a type specified for 
75 the group of concern. For example, the Enter key usually has just one group 
76 defined. If the user 
77 performs an action causing the global keyboard group to change to Group2, the 
78 .I group_info 
79 field for the Enter key describes how to handle this situation.
80
81 Out-of-range groups for individual keys are mapped to a legal group using the 
82 same options as are used 
83 for the overall keyboard group. The particular type of mapping used is 
84 controlled by the bits set in 
85 the 
86 .I group_info 
87 flag, as shown in Table 1.
88 .bp
89 .TS
90 c s
91 l l
92 l l.
93 Table 1 group_info Range Normalization
94 _
95 Bits set in group_info  Normalization method
96 _
97 XkbRedirectIntoRange    XkbRedirectIntoRange
98 XkbClampIntoRange       XkbClampIntoRange
99 none of the above       XkbWrapIntoRange
100 .TE
101 .SH STRUCTURES
102 .LP
103 The KeySymMapRec structure is defined as follows:
104 .nf
105
106     #define XkbNumKbdGroups             4
107     #define XkbMaxKbdGroup              (XkbNumKbdGroups-1)
108     
109     typedef struct {                    /\(** map to keysyms for a single keycode */
110         unsigned char       kt_index[XkbNumKbdGroups];  /\(** key type index for each group */
111         unsigned char       group_info; /\(** # of groups and out of range group handling */
112         unsigned char       width;      /\(** max # of shift levels for key */
113         unsigned short      offset;     /\(** index to keysym table in syms array */
114 } XkbSymMapRec, *XkbSymMapPtr;
115
116 .fi
117
118 .nf
119 The XkbControlsRec structure is defined as follows:
120
121     #define XkbMaxLegalKeyCode     255
122     #define XkbPerKeyBitArraySize  ((XkbMaxLegalKeyCode+1)/8)
123     
124     
125     typedef struct {
126         unsigned char   mk_dflt_btn;      /\(** default button for keyboard driven mouse */
127         unsigned char   num_groups;       /\(** number of keyboard groups */
128         unsigned char   groups_wrap;      /\(** how to wrap out-of-bounds groups */
129         XkbModsRec      internal;         /\(** defines server internal modifiers */
130         XkbModsRec      ignore_lock;      /\(** modifiers to ignore when checking for grab */
131         unsigned int    enabled_ctrls;    /\(** 1 bit => corresponding boolean control enabled */
132         unsigned short  repeat_delay;     /\(** ms delay until first repeat */
133         unsigned short  repeat_interval;  /\(** ms delay between repeats */
134         unsigned short  slow_keys_delay;  /\(** ms minimum time key must be down to be ok */
135         unsigned short  debounce_delay;   /\(** ms delay before key reactivated */
136         unsigned short  mk_delay;         /\(** ms delay to second mouse motion event */
137         unsigned short  mk_interval;      /\(** ms delay between repeat mouse events */
138         unsigned short  mk_time_to_max;   /\(** # intervals until constant mouse move */
139         unsigned short  mk_max_speed;     /\(** multiplier for maximum mouse speed */
140         short           mk_curve;         /\(** determines mouse move curve type */
141         unsigned short  ax_options;       /\(** 1 bit => Access X option enabled */
142         unsigned short  ax_timeout;       /\(** seconds until Access X disabled */
143         unsigned short  axt_opts_mask;    /\(** 1 bit => options to reset on Access X timeout */
144         unsigned short  axt_opts_values;  /\(** 1 bit => turn option on, 0=> off */
145         unsigned int    axt_ctrls_mask;   /\(** which bits in enabled_ctrls to modify */
146         unsigned int    axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
147         unsigned char   per_key_repeat[XkbPerKeyBitArraySize];  /\(** per key auto repeat */
148      } XkbControlsRec, *XkbControlsPtr;
149 .fi
150
151 .nf
152 The XkbControlsRec structure is defined as follows:
153
154     #define XkbMaxLegalKeyCode     255
155     #define XkbPerKeyBitArraySize  ((XkbMaxLegalKeyCode+1)/8)
156     
157     
158     typedef struct {
159         unsigned char   mk_dflt_btn;      /\(** default button for keyboard driven mouse */
160         unsigned char   num_groups;       /\(** number of keyboard groups */
161         unsigned char   groups_wrap;      /\(** how to wrap out-of-bounds groups */
162         XkbModsRec      internal;         /\(** defines server internal modifiers */
163         XkbModsRec      ignore_lock;      /\(** modifiers to ignore when checking for grab */
164         unsigned int    enabled_ctrls;    /\(** 1 bit => corresponding boolean control enabled */
165         unsigned short  repeat_delay;     /\(** ms delay until first repeat */
166         unsigned short  repeat_interval;  /\(** ms delay between repeats */
167         unsigned short  slow_keys_delay;  /\(** ms minimum time key must be down to be ok */
168         unsigned short  debounce_delay;   /\(** ms delay before key reactivated */
169         unsigned short  mk_delay;         /\(** ms delay to second mouse motion event */
170         unsigned short  mk_interval;      /\(** ms delay between repeat mouse events */
171         unsigned short  mk_time_to_max;   /\(** # intervals until constant mouse move */
172         unsigned short  mk_max_speed;     /\(** multiplier for maximum mouse speed */
173         short           mk_curve;         /\(** determines mouse move curve type */
174         unsigned short  ax_options;       /\(** 1 bit => Access X option enabled */
175         unsigned short  ax_timeout;       /\(** seconds until Access X disabled */
176         unsigned short  axt_opts_mask;    /\(** 1 bit => options to reset on Access X timeout */
177         unsigned short  axt_opts_values;  /\(** 1 bit => turn option on, 0=> off */
178         unsigned int    axt_ctrls_mask;   /\(** which bits in enabled_ctrls to modify */
179         unsigned int    axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
180         unsigned char   per_key_repeat[XkbPerKeyBitArraySize];  /\(** per key auto repeat */
181      } XkbControlsRec, *XkbControlsPtr;
182 .fi
183 .SH "SEE ALSO"
184 .BR XkbChangeTypesOfKey (__libmansuffix__),
185 .BR XkbKeyGroupInfo (__libmansuffix__),
186 .BR XkbOutOfRangeGroupInfo. (__libmansuffix__)