Remove KS macros available in XKBfilecommon.h now
[platform/upstream/libxkbcommon.git] / include / X11 / extensions / XKBcommon.h
1 /*
2 Copyright 1985, 1987, 1990, 1998  The Open Group
3 Copyright 2008  Dan Nicholson
4
5 Permission is hereby granted, free of charge, to any person obtaining a
6 copy of this software and associated documentation files (the "Software"),
7 to deal in the Software without restriction, including without limitation
8 the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 and/or sell copies of the Software, and to permit persons to whom the
10 Software is furnished to do so, subject to the following conditions:
11
12 The above copyright notice and this permission notice shall be included in
13 all copies or substantial portions of the 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 THE
18 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22 Except as contained in this notice, the names of the authors or their
23 institutions shall not be used in advertising or otherwise to promote the
24 sale, use or other dealings in this Software without prior written
25 authorization from the authors.
26 */
27
28 #ifndef _XKBCOMMON_H_
29 #define _XKBCOMMON_H_
30
31 #include <stdio.h>
32 #include <X11/X.h>
33 #include <X11/Xdefs.h>
34 #include <X11/Xfuncproto.h>
35 #include <X11/extensions/XKBstrcommon.h>
36 #include <X11/extensions/XKBgeomcommon.h>
37 #include <X11/extensions/XKBrulescommon.h>
38
39 /* Action structures used in the server */
40 typedef struct _XkbcModAction {
41     unsigned char   type;
42     unsigned char   flags;
43     unsigned char   mask;
44     unsigned char   real_mods;
45     unsigned int    vmods;
46 } XkbcModAction;
47
48 typedef struct _XkbcISOAction {
49     unsigned char   type;
50     unsigned char   flags;
51     unsigned char   mask;
52     unsigned char   real_mods;
53     /* FIXME: Make this an int. */
54     char            group_XXX;
55     unsigned char   affect;
56     unsigned int    vmods;
57 } XkbcISOAction;
58
59 typedef struct _XkbcPtrAction {
60     unsigned char   type;
61     unsigned char   flags;
62     int             x;
63     int             y;
64 } XkbcPtrAction;
65
66 typedef struct _XkbcCtrlsAction {
67     unsigned char   type;
68     unsigned char   flags;
69     unsigned long   ctrls;
70 } XkbcCtrlsAction;
71
72 typedef struct  _XkbcRedirectKeyAction {
73     unsigned char   type;
74     unsigned char   new_key;
75     unsigned char   mods_mask;
76     unsigned char   mods;
77     unsigned int    vmods_mask;
78     unsigned int    vmods;
79 } XkbcRedirectKeyAction;
80
81 typedef union _XkbcAction {
82     XkbAnyAction            any;
83     XkbcModAction           mods;
84     XkbGroupAction          group;
85     XkbcISOAction           iso;
86     XkbcPtrAction           ptr;
87     XkbPtrBtnAction         btn;
88     XkbPtrDfltAction        dflt;
89     XkbSwitchScreenAction   screen;
90     XkbcCtrlsAction         ctrls;
91     XkbMessageAction        msg;
92     XkbcRedirectKeyAction   redirect;
93     XkbDeviceBtnAction      devbtn;
94     XkbDeviceValuatorAction devval;
95     unsigned char           type;
96 } XkbcAction;
97
98 typedef struct _XkbcServerMapRec {
99     unsigned short      num_acts;
100     unsigned short      size_acts;
101     XkbcAction *        acts;
102
103     XkbBehavior *       behaviors;
104     unsigned short *    key_acts;
105 #if defined(__cplusplus) || defined(c_plusplus)
106     /* explicit is a C++ reserved word */
107     unsigned char *     c_explicit;
108 #else
109     unsigned char *     explicit;
110 #endif
111     unsigned char       vmods[XkbNumVirtualMods];
112     unsigned short *    vmodmap;
113 } XkbcServerMapRec, *XkbcServerMapPtr;
114
115 /* Common keyboard description structure */
116 typedef struct _XkbcDesc {
117     unsigned int        defined;
118     unsigned short      flags;
119     unsigned short      device_spec;
120     KeyCode             min_key_code;
121     KeyCode             max_key_code;
122
123     XkbControlsPtr      ctrls;
124     XkbcServerMapPtr    server;
125     XkbClientMapPtr     map;
126     XkbIndicatorPtr     indicators;
127     XkbNamesPtr         names;
128     XkbCompatMapPtr     compat;
129     XkbGeometryPtr      geom;
130 } XkbcDescRec, *XkbcDescPtr;
131
132 #define XkbcKSIsLower(k) (_XkbcKSCheckCase(k) & _XkbcKSLower)
133 #define XkbcKSIsUpper(k) (_XkbcKSCheckCase(k) & _XkbcKSUpper)
134
135 _XFUNCPROTOBEGIN
136
137 extern XkbcDescPtr
138 XkbcCompileKeymapFromRules(const char *rules, XkbRF_VarDefsPtr defs);
139
140 extern XkbcDescPtr
141 XkbcCompileKeymapFromComponents(XkbComponentNamesPtr ktcsg);
142
143 extern char *
144 XkbcKeysymToString(KeySym ks);
145
146 extern KeySym
147 XkbcStringToKeysym(const char *s);
148
149 extern int
150 XkbcAllocCompatMap(XkbcDescPtr xkb, unsigned which, unsigned nSI);
151
152 extern void
153 XkbcFreeCompatMap(XkbcDescPtr xkb, unsigned which, Bool freeMap);
154
155 extern int
156 XkbcAllocNames(XkbcDescPtr xkb, unsigned which, int nTotalRG, int nTotalAliases);
157
158 extern void
159 XkbcFreeNames(XkbcDescPtr xkb, unsigned which, Bool freeMap);
160
161 extern int
162 XkbcAllocControls(XkbcDescPtr xkb, unsigned which);
163
164 extern void
165 XkbcFreeControls(XkbcDescPtr xkb, unsigned which, Bool freeMap);
166
167 extern int
168 XkbcAllocIndicatorMaps(XkbcDescPtr xkb);
169
170 extern void
171 XkbcFreeIndicatorMaps(XkbcDescPtr xkb);
172
173 extern XkbcDescRec *
174 XkbcAllocKeyboard(void);
175
176 extern void
177 XkbcFreeKeyboard(XkbcDescPtr xkb, unsigned which, Bool freeAll);
178
179 extern int
180 XkbcAllocClientMap(XkbcDescPtr xkb, unsigned which, unsigned nTotalTypes);
181
182 extern int
183 XkbcAllocServerMap(XkbcDescPtr xkb, unsigned which, unsigned nNewActions);
184
185 extern int
186 XkbcCopyKeyType(XkbKeyTypePtr from, XkbKeyTypePtr into);
187
188 extern int
189 XkbcCopyKeyTypes(XkbKeyTypePtr from, XkbKeyTypePtr into, int num_types);
190
191 extern int
192 XkbcResizeKeyType(XkbcDescPtr xkb, int type_ndx, int map_count,
193                   Bool want_preserve, int new_num_lvls);
194
195 extern KeySym *
196 XkbcResizeKeySyms(XkbcDescPtr xkb, int key, int needed);
197
198 extern int
199 XkbcChangeKeycodeRange(XkbcDescPtr xkb, int minKC, int maxKC,
200                        XkbChangesPtr changes);
201
202 extern XkbcAction *
203 XkbcResizeKeyActions(XkbcDescPtr xkb, int key, int needed);
204
205 extern void
206 XkbcFreeClientMap(XkbcDescPtr xkb, unsigned what, Bool freeMap);
207
208 extern void
209 XkbcFreeServerMap(XkbcDescPtr xkb, unsigned what, Bool freeMap);
210
211 extern void
212 XkbcFreeGeomProperties(XkbGeometryPtr geom, int first, int count, Bool freeAll);
213
214 extern void
215 XkbcFreeGeomKeyAliases(XkbGeometryPtr geom, int first, int count, Bool freeAll);
216
217 extern void
218 XkbcFreeGeomColors(XkbGeometryPtr geom, int first, int count, Bool freeAll);
219
220 extern void
221 XkbcFreeGeomPoints(XkbOutlinePtr outline, int first, int count, Bool freeAll);
222
223 extern void
224 XkbcFreeGeomOutlines(XkbShapePtr shape, int first, int count, Bool freeAll);
225
226 extern void
227 XkbcFreeGeomShapes(XkbGeometryPtr geom, int first, int count, Bool freeAll);
228
229 extern void
230 XkbcFreeGeomOverlayKeys(XkbOverlayRowPtr row, int first, int count,
231                         Bool freeAll);
232
233 extern void
234 XkbcFreeGeomOverlayRows(XkbOverlayPtr overlay, int first, int count,
235                         Bool freeAll);
236
237 extern void
238 XkbcFreeGeomOverlays(XkbSectionPtr section, int first, int count, Bool freeAll);
239
240 extern void
241 XkbcFreeGeomKeys(XkbRowPtr row, int first, int count, Bool freeAll);
242
243 extern void
244 XkbcFreeGeomRows(XkbSectionPtr section, int first, int count, Bool freeAll);
245
246 extern void
247 XkbcFreeGeomSections(XkbGeometryPtr geom, int first, int count, Bool freeAll);
248
249 extern void
250 XkbcFreeGeomDoodads(XkbDoodadPtr doodads, int nDoodads, Bool freeAll);
251
252 extern void
253 XkbcFreeGeometry(XkbGeometryPtr geom, unsigned which, Bool freeMap);
254
255 extern int
256 XkbcAllocGeomProps(XkbGeometryPtr geom, int nProps);
257
258 extern int
259 XkbcAllocGeomColors(XkbGeometryPtr geom, int nColors);
260
261 extern int
262 XkbcAllocGeomKeyAliases(XkbGeometryPtr geom, int nKeyAliases);
263
264 extern int
265 XkbcAllocGeomShapes(XkbGeometryPtr geom, int nShapes);
266
267 extern int
268 XkbcAllocGeomSections(XkbGeometryPtr geom, int nSections);
269
270 extern int
271 XkbcAllocGeomOverlays(XkbSectionPtr section, int nOverlays);
272
273 extern int
274 XkbcAllocGeomOverlayRows(XkbOverlayPtr overlay, int nRows);
275
276 extern int
277 XkbcAllocGeomOverlayKeys(XkbOverlayRowPtr row, int nKeys);
278
279 extern int
280 XkbcAllocGeomDoodads(XkbGeometryPtr geom, int nDoodads);
281
282 extern int
283 XkbcAllocGeomSectionDoodads(XkbSectionPtr section, int nDoodads);
284
285 extern int
286 XkbcAllocGeomOutlines(XkbShapePtr shape, int nOL);
287
288 extern int
289 XkbcAllocGeomRows(XkbSectionPtr section, int nRows);
290
291 extern int
292 XkbcAllocGeomPoints(XkbOutlinePtr ol, int nPts);
293
294 extern int
295 XkbcAllocGeomKeys(XkbRowPtr row, int nKeys);
296
297 extern int
298 XkbcAllocGeometry(XkbcDescPtr xkb, XkbGeometrySizesPtr sizes);
299
300 extern XkbPropertyPtr
301 XkbcAddGeomProperty(XkbGeometryPtr geom, char *name, char *value);
302
303 extern XkbKeyAliasPtr
304 XkbcAddGeomKeyAlias(XkbGeometryPtr geom, char *aliasStr, char *realStr);
305
306 extern XkbColorPtr
307 XkbcAddGeomColor(XkbGeometryPtr geom, char *spec, unsigned int pixel);
308
309 extern XkbOutlinePtr
310 XkbcAddGeomOutline(XkbShapePtr shape, int sz_points);
311
312 extern XkbShapePtr
313 XkbcAddGeomShape(XkbGeometryPtr geom, Atom name, int sz_outlines);
314
315 extern XkbKeyPtr
316 XkbcAddGeomKey(XkbRowPtr row);
317
318 extern XkbRowPtr
319 XkbcAddGeomRow(XkbSectionPtr section, int sz_keys);
320
321 extern XkbSectionPtr
322 XkbcAddGeomSection(XkbGeometryPtr geom, Atom name,
323                    int sz_rows, int sz_doodads, int sz_over);
324
325 extern XkbDoodadPtr
326 XkbcAddGeomDoodad(XkbGeometryPtr geom, XkbSectionPtr section, Atom name);
327
328 extern XkbOverlayKeyPtr
329 XkbcAddGeomOverlayKey(XkbOverlayPtr overlay, XkbOverlayRowPtr row,
330                       char *over, char *under);
331
332 extern XkbOverlayRowPtr
333 XkbcAddGeomOverlayRow(XkbOverlayPtr overlay, int row_under, int sz_keys);
334
335 extern XkbOverlayPtr
336 XkbcAddGeomOverlay(XkbSectionPtr section, Atom name, int sz_rows);
337
338 extern void
339 XkbcInitAtoms(void);
340
341 extern char *
342 XkbcAtomGetString(Atom atom);
343
344 extern Atom
345 XkbcInternAtom(char *name, Bool onlyIfExists);
346
347 extern char *
348 XkbcAtomText(Atom atm);
349
350 extern char *
351 XkbcVModIndexText(XkbcDescPtr xkb, unsigned ndx);
352
353 extern char *
354 XkbcVModMaskText(XkbcDescPtr xkb, unsigned modMask, unsigned mask);
355
356 extern char *
357 XkbcModIndexText(unsigned ndx);
358
359 extern char *
360 XkbcModMaskText(unsigned mask, Bool cFormat);
361
362 extern char *
363 XkbcConfigText(unsigned config);
364
365 extern char *
366 XkbcGeomFPText(int val);
367
368 extern char *
369 XkbcActionTypeText(unsigned type);
370
371 extern char *
372 XkbcKeysymText(KeySym sym);
373
374 extern char *
375 XkbcKeyNameText(char *name);
376
377 extern char *
378 XkbcSIMatchText(unsigned type);
379
380 extern Bool
381 XkbcComputeShapeBounds(XkbShapePtr shape);
382
383 extern Bool
384 XkbcComputeShapeTop(XkbShapePtr shape, XkbBoundsPtr bounds);
385
386 extern Bool
387 XkbcComputeRowBounds(XkbGeometryPtr geom, XkbSectionPtr section, XkbRowPtr row);
388
389 extern Bool
390 XkbcComputeSectionBounds(XkbGeometryPtr geom, XkbSectionPtr section);
391
392 extern Bool
393 XkbcRF_GetComponents(XkbRF_RulesPtr rules, XkbRF_VarDefsPtr defs,
394                      XkbComponentNamesPtr names);
395
396 extern XkbRF_RulePtr
397 XkbcRF_AddRule(XkbRF_RulesPtr rules);
398
399 extern XkbRF_GroupPtr
400 XkbcRF_AddGroup(XkbRF_RulesPtr rules);
401
402 extern Bool
403 XkbcRF_LoadRules(FILE *file, XkbRF_RulesPtr rules);
404
405 extern Bool
406 XkbcRF_LoadRulesByName(char *base, char *locale, XkbRF_RulesPtr rules);
407
408 extern XkbRF_VarDescPtr
409 XkbcRF_AddVarDesc(XkbRF_DescribeVarsPtr vars);
410
411 extern XkbRF_VarDescPtr
412 XkbcRF_AddVarDescCopy(XkbRF_DescribeVarsPtr vars, XkbRF_VarDescPtr from);
413
414 extern XkbRF_DescribeVarsPtr
415 XkbcRF_AddVarToDescribe(XkbRF_RulesPtr rules, char *name);
416
417 extern Bool
418 XkbcRF_LoadDescriptions(FILE *file, XkbRF_RulesPtr rules);
419
420 extern Bool
421 XkbcRF_LoadDescriptionsByName(char *base, char *locale, XkbRF_RulesPtr rules);
422
423 extern XkbRF_RulesPtr
424 XkbcRF_Load(char *base, char *locale, Bool wantDesc, Bool wantRules);
425
426 extern XkbRF_RulesPtr
427 XkbcRF_Create(int szRules, int szExtra);
428
429 extern void
430 XkbcRF_Free(XkbRF_RulesPtr rules, Bool freeRules);
431
432 extern int
433 XkbcInitCanonicalKeyTypes(XkbcDescPtr xkb, unsigned which, int keypadVMod);
434
435 extern Bool
436 XkbcVirtualModsToReal(XkbcDescPtr xkb, unsigned virtual_mask,
437                       unsigned *mask_rtrn);
438
439 extern Bool
440 XkbcComputeEffectiveMap(XkbcDescPtr xkb, XkbKeyTypePtr type,
441                         unsigned char *map_rtrn);
442
443 extern void
444 XkbcEnsureSafeMapName(char *name);
445
446 extern unsigned
447 _XkbcKSCheckCase(KeySym sym);
448
449 _XFUNCPROTOEND
450
451 #endif /* _XKBCOMMON_H_ */