6.8 KB、281行 生 Blame 履歴
1#ifndef _XKBCONFIG_H_
2#define _XKBCONFIG_H_ 1
3
4/************************************************************
5 Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
6
7 Permission to use, copy, modify, and distribute this
8 software and its documentation for any purpose and without
9 fee is hereby granted, provided that the above copyright
10 notice appear in all copies and that both that copyright
11 notice and this permission notice appear in supporting
12 documentation, and that the name of Silicon Graphics not be
13 used in advertising or publicity pertaining to distribution
14 of the software without specific prior written permission.
15 Silicon Graphics makes no representation about the suitability
16 of this software for any purpose. It is provided "as is"
17 without any express or implied warranty.
18
19 SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
20 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
21 AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
22 GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
23 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
24 DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
25 OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
26 THE USE OR PERFORMANCE OF THIS SOFTWARE.
27
28 ********************************************************/
29
30
31typedef struct _XkbConfigRtrn *XkbConfigRtrnPtr;
32typedef struct _XkbConfigField *XkbConfigFieldPtr;
33typedef struct _XkbConfigFields *XkbConfigFieldsPtr;
34
35typedef Bool (*XkbConfigParseFunc)(
36 FILE * /* file */,
37 XkbConfigFieldsPtr /* fields */,
38 XkbConfigFieldPtr /* field */,
39 XkbDescPtr /* xkb */,
40 XkbConfigRtrnPtr /* rtrn */
41);
42
43#define XkbCF_Check 0
44#define XkbCF_Apply 1
45#define XkbCF_CleanUp 2
46#define XkbCF_Destroy 3
47
48typedef Bool (*XkbConfigFinishFunc)(
49 XkbConfigFieldsPtr /* fields */,
50 XkbDescPtr /* xkb */,
51 XkbConfigRtrnPtr /* rtrn */,
52 int /* what */
53);
54
55typedef struct _XkbConfigRtrnPriv {
56 int cfg_id;
57 XPointer priv;
58 struct _XkbConfigRtrnPriv * next;
59} XkbConfigRtrnPrivRec,*XkbConfigRtrnPrivPtr;
60
61typedef struct _XkbConfigModInfo {
62 Bool replace;
63 unsigned char mods;
64 unsigned char mods_clear;
65 unsigned short vmods;
66 unsigned short vmods_clear;
67} XkbConfigModInfoRec,*XkbConfigModInfoPtr;
68
69typedef struct _XkbConfigUnboundMod {
70 unsigned char what;
71 unsigned char mods;
72 unsigned short vmods;
73 short merge;
74 char * name;
75} XkbConfigUnboundModRec,*XkbConfigUnboundModPtr;
76
77#define XkbCF_MergeSet 0
78#define XkbCF_MergeAdd 1
79#define XkbCF_MergeRemove 2
80
81#define XkbCF_InitialMods (1L<<0)
82#define XkbCF_InternalMods (1L<<1)
83#define XkbCF_IgnoreLockMods (1L<<2)
84#define XkbCF_InitialCtrls (1L<<3)
85#define XkbCF_AccessXTimeout (1L<<4)
86#define XkbCF_AccessXTimeoutCtrlsOn (1L<<5)
87#define XkbCF_AccessXTimeoutCtrlsOff (1L<<6)
88#define XkbCF_AccessXTimeoutOptsOn (1L<<7)
89#define XkbCF_AccessXTimeoutOptsOff (1L<<8)
90#define XkbCF_GroupsWrap (1L<<9)
91#define XkbCF_InitialOpts (1L<<10)
92
93typedef struct _XkbConfigRtrn {
94 unsigned defined;
95 int error;
96 int line;
97
98 int click_volume;
99 int bell_volume;
100 int bell_pitch;
101 int bell_duration;
102 int repeat_delay;
103 int repeat_interval;
104
105 char * rules_file;
106 char * model;
107 char * layout;
108 char * variant;
109 char * options;
110
111 char * keymap;
112 char * keycodes;
113 char * geometry;
114 char * phys_symbols;
115 char * symbols;
116 char * types;
117 char * compat;
118
119 Bool replace_initial_ctrls;
120 unsigned long initial_ctrls;
121 unsigned long initial_ctrls_clear;
122
123 Bool replace_initial_opts;
124 unsigned short initial_opts;
125 unsigned short initial_opts_clear;
126
127 XkbConfigModInfoRec initial_mods;
128 XkbConfigModInfoRec internal_mods;
129 XkbConfigModInfoRec ignore_lock_mods;
130
131 short num_unbound_mods;
132 short sz_unbound_mods;
133 XkbConfigUnboundModPtr unbound_mods;
134
135 int groups_wrap;
136 int slow_keys_delay;
137 int debounce_delay;
138 int mk_delay;
139 int mk_interval;
140 int mk_time_to_max;
141 int mk_max_speed;
142 int mk_curve;
143 int ax_timeout;
144
145 Bool replace_axt_ctrls_on;
146 Bool replace_axt_ctrls_off;
147 unsigned long axt_ctrls_on;
148 unsigned long axt_ctrls_off;
149 unsigned long axt_ctrls_ignore;
150
151 Bool replace_axt_opts_off;
152 Bool replace_axt_opts_on;
153 unsigned short axt_opts_off;
154 unsigned short axt_opts_on;
155 unsigned short axt_opts_ignore;
156 XkbConfigRtrnPrivPtr priv;
157} XkbConfigRtrnRec;
158
159typedef struct _XkbConfigField {
160#ifdef _XkbCF_Field_Const
161 const
162#endif
163 char * field;
164 unsigned char field_id;
165} XkbConfigFieldRec;
166
167typedef struct _XkbConfigFields {
168 unsigned short cfg_id;
169 unsigned short num_fields;
170 XkbConfigFieldPtr fields;
171 XkbConfigParseFunc parser;
172 XkbConfigFinishFunc finish;
173 XPointer priv;
174 struct _XkbConfigFields *next;
175} XkbConfigFieldsRec;
176
177#define XkbCF_EOF -1
178#define XkbCF_Unknown 0
179#define XkbCF_EOL 1
180#define XkbCF_Semi 2
181#define XkbCF_Equals 3
182#define XkbCF_PlusEquals 4
183#define XkbCF_MinusEquals 5
184#define XkbCF_Plus 6
185#define XkbCF_Minus 7
186#define XkbCF_String 10
187#define XkbCF_Ident 11
188#define XkbCF_Integer 12
189
190#define XkbCF_UnterminatedString 100
191#define XkbCF_BadAlloc 101
192#define XkbCF_MissingIdent 102
193#define XkbCF_MissingEquals 103
194#define XkbCF_ExpectedEOS 104
195#define XkbCF_ExpectedBoolean 105
196#define XkbCF_ExpectedInteger 106
197#define XkbCF_ExpectedString 107
198#define XkbCF_ExpectedModifier 108
199#define XkbCF_ExpectedControl 109
200#define XkbCF_ExpectedAXOption 110
201#define XkbCF_ExpectedOperator 111
202#define XkbCF_ExpectedOORGroupBehavior 112
203
204typedef union {
205 int ival;
206 char * str;
207} XkbCFScanResultRec,*XkbCFScanResultPtr;
208
209extern XkbConfigFieldsPtr XkbCFDflts;
210
211_XFUNCPROTOBEGIN
212
213extern int XkbCFScan(
214 FILE * /* file */,
215 XkbCFScanResultPtr /* val_rtrn */,
216 XkbConfigRtrnPtr /* rtrn */
217);
218
219extern XkbConfigFieldsPtr XkbCFDup(
220 XkbConfigFieldsPtr /* fields */
221);
222
223extern XkbConfigFieldsPtr XkbCFFree(
224 XkbConfigFieldsPtr /* fields */,
225 Bool /* all */
226);
227
228extern XkbConfigUnboundModPtr XkbCFAddModByName(
229 XkbConfigRtrnPtr /* rtrn */,
230 int /* what */,
231 char * /* name */,
232 Bool /* merge */,
233 XkbConfigUnboundModPtr /* last */
234);
235
236extern Bool XkbCFBindMods(
237 XkbConfigRtrnPtr /* rtrn */,
238 XkbDescPtr /* xkb */
239);
240
241extern Bool XkbCFApplyMods(
242 XkbConfigRtrnPtr /* rtrn */,
243 int /* what */,
244 XkbConfigModInfoPtr /* info */
245);
246
247extern Bool XkbCFApplyRtrnValues(
248 XkbConfigRtrnPtr /* rtrn */,
249 XkbConfigFieldsPtr /* fields */,
250 XkbDescPtr /* xkb */
251);
252
253extern XkbConfigRtrnPrivPtr XkbCFAddPrivate(
254 XkbConfigRtrnPtr /* rtrn */,
255 XkbConfigFieldsPtr /* fields */,
256 XPointer /* ptr */
257);
258
259extern void XkbCFFreeRtrn(
260 XkbConfigRtrnPtr /* rtrn */,
261 XkbConfigFieldsPtr /* fields */,
262 XkbDescPtr /* xkb */
263);
264
265extern Bool XkbCFParse(
266 FILE * /* file */,
267 XkbConfigFieldsPtr /* fields */,
268 XkbDescPtr /* xkb */,
269 XkbConfigRtrnPtr /* rtrn */
270);
271
272extern void XkbCFReportError(
273 FILE * /* file */,
274 char * /* name */,
275 int /* error */,
276 int /* line */
277);
278
279_XFUNCPROTOEND
280
281#endif /* _XKBCONFIG_H_ */