xkbfile.h revision 4642e01f
1/************************************************************
2 Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
3
4 Permission to use, copy, modify, and distribute this
5 software and its documentation for any purpose and without
6 fee is hereby granted, provided that the above copyright
7 notice appear in all copies and that both that copyright
8 notice and this permission notice appear in supporting
9 documentation, and that the name of Silicon Graphics not be
10 used in advertising or publicity pertaining to distribution
11 of the software without specific prior written permission.
12 Silicon Graphics makes no representation about the suitability
13 of this software for any purpose. It is provided "as is"
14 without any express or implied warranty.
15
16 SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18 AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
19 GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
20 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21 DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
22 OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
23 THE USE OR PERFORMANCE OF THIS SOFTWARE.
24
25 ********************************************************/
26
27#ifndef _XKBFILE_H_
28#define	_XKBFILE_H_ 1
29
30/***====================================================================***/
31
32#define	XkbXKMFile	0
33#define	XkbCFile	1
34#define	XkbXKBFile	2
35#define	XkbMessage	3
36
37#define	XkbMapDefined		(1<<0)
38#define	XkbStateDefined		(1<<1)
39
40typedef void	(*XkbFileAddOnFunc)(
41    FILE *		/* file */,
42    XkbDescPtr  	/* result */,
43    Bool		/* topLevel */,
44    Bool		/* showImplicit */,
45    int			/* fileSection */,
46    void *		/* priv */
47);
48
49/***====================================================================***/
50
51#define	_XkbSuccess			0
52#define	_XkbErrMissingNames		1
53#define	_XkbErrMissingTypes		2
54#define	_XkbErrMissingReqTypes		3
55#define	_XkbErrMissingSymbols		4
56#define	_XkbErrMissingVMods		5
57#define	_XkbErrMissingIndicators	6
58#define	_XkbErrMissingCompatMap		7
59#define	_XkbErrMissingSymInterps	8
60#define	_XkbErrMissingGeometry		9
61#define	_XkbErrIllegalDoodad		10
62#define	_XkbErrIllegalTOCType		11
63#define	_XkbErrIllegalContents		12
64#define	_XkbErrEmptyFile		13
65#define	_XkbErrFileNotFound		14
66#define	_XkbErrFileCannotOpen		15
67#define	_XkbErrBadValue			16
68#define	_XkbErrBadMatch			17
69#define	_XkbErrBadTypeName		18
70#define	_XkbErrBadTypeWidth		19
71#define	_XkbErrBadFileType		20
72#define	_XkbErrBadFileVersion		21
73#define	_XkbErrBadFileFormat		22
74#define	_XkbErrBadAlloc			23
75#define	_XkbErrBadLength		24
76#define	_XkbErrXReqFailure		25
77#define	_XkbErrBadImplementation	26
78
79extern char *		_XkbErrMessages[];
80extern unsigned		_XkbErrCode;
81extern char *		_XkbErrLocation;
82extern unsigned		_XkbErrData;
83
84/***====================================================================***/
85
86_XFUNCPROTOBEGIN
87
88extern	char *	XkbIndentText(
89    unsigned	/* size */
90);
91
92extern	char *	XkbAtomText(
93    Atom 	/* atm */,
94    unsigned	/* format */
95);
96
97extern char *	XkbKeysymText(
98    KeySym	/* sym */,
99    unsigned	/* format */
100);
101
102extern char *	XkbStringText(
103    char *	/* str */,
104    unsigned	/* format */
105);
106
107extern char *	XkbKeyNameText(
108    char *	/* name */,
109    unsigned	/* format */
110);
111
112extern char *
113XkbModIndexText(
114    unsigned	/* ndx */,
115    unsigned	/* format */
116);
117
118extern char *
119XkbModMaskText(
120    unsigned	/* mask */,
121    unsigned	/* format */
122);
123
124extern char *	XkbVModIndexText(
125    XkbDescPtr	/* xkb */,
126    unsigned	/* ndx */,
127    unsigned	/* format */
128);
129
130extern	char *	XkbVModMaskText(
131    XkbDescPtr	/* xkb */,
132    unsigned	/* modMask */,
133    unsigned	/* mask */,
134    unsigned	/* format */
135);
136
137extern char *	XkbConfigText(
138    unsigned 	/* config */,
139    unsigned 	/* format */
140);
141
142extern char *	XkbSIMatchText(
143    unsigned	/* type */,
144    unsigned	/* format */
145);
146
147extern char *	XkbIMWhichStateMaskText(
148    unsigned	/* use_which */,
149    unsigned	/* format */
150);
151
152extern char *	XkbAccessXDetailText(
153    unsigned	/* state */,
154    unsigned	/* format */
155);
156
157extern char *	XkbNKNDetailMaskText(
158    unsigned	/* detail */,
159    unsigned	/* format */
160);
161
162extern char *	XkbControlsMaskText(
163    unsigned	/* ctrls */,
164    unsigned	/* format */
165);
166
167extern char *	XkbGeomFPText(
168    int		/* val */,
169    unsigned 	/* format */
170);
171
172extern char *	XkbDoodadTypeText(
173    unsigned	/* type */,
174    unsigned	/* format */
175);
176
177extern char *	XkbActionTypeText(
178    unsigned	/* type */,
179    unsigned	/* format */
180);
181
182extern char *	XkbActionText(
183    XkbDescPtr	/* xkb */,
184    XkbAction *	/* action */,
185    unsigned	/* format */
186);
187
188extern char *	XkbBehaviorText(
189    XkbDescPtr 		/* xkb */,
190    XkbBehavior *	/* behavior */,
191    unsigned		/* format */
192);
193
194/***====================================================================***/
195
196#define	_XkbKSLower	(1<<0)
197#define	_XkbKSUpper	(1<<1)
198
199#define	XkbKSIsLower(k)		(_XkbKSCheckCase(k)&_XkbKSLower)
200#define	XkbKSIsUpper(k)		(_XkbKSCheckCase(k)&_XkbKSUpper)
201#define XkbKSIsKeypad(k)	(((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal))
202#define	XkbKSIsDeadKey(k)	\
203		(((k)>=XK_dead_grave)&&((k)<=XK_dead_semivoiced_sound))
204
205extern	unsigned _XkbKSCheckCase(
206   KeySym	/* sym */
207);
208
209extern	int	 XkbFindKeycodeByName(
210    XkbDescPtr	/* xkb */,
211    char *	/* name */,
212    Bool	/* use_aliases */
213);
214
215extern	Bool	XkbLookupGroupAndLevel(
216    XkbDescPtr	/* xkb */,
217    int		/* key */,
218    int	*	/* mods_inout */,
219    int *	/* grp_inout */,
220    int	*	/* lvl_rtrn */
221);
222
223/***====================================================================***/
224
225extern	Atom	XkbInternAtom(
226    char *	/* name */,
227    Bool	/* onlyIfExists */
228);
229
230extern	void	XkbInitAtoms(void);
231
232/***====================================================================***/
233
234#ifdef _XKBGEOM_H_
235
236#define	XkbDW_Unknown	0
237#define	XkbDW_Doodad	1
238#define	XkbDW_Section	2
239typedef struct _XkbDrawable {
240	int		type;
241	int		priority;
242	union {
243	    XkbDoodadPtr	doodad;
244	    XkbSectionPtr	section;
245	} u;
246	struct _XkbDrawable *	next;
247} XkbDrawableRec,*XkbDrawablePtr;
248
249extern	XkbDrawablePtr
250XkbGetOrderedDrawables(
251    XkbGeometryPtr	/* geom */,
252    XkbSectionPtr	/* section */
253);
254
255extern	void
256XkbFreeOrderedDrawables(
257    XkbDrawablePtr	/* draw */
258);
259
260#endif
261
262/***====================================================================***/
263
264extern	unsigned	XkbConvertGetByNameComponents(
265    Bool		/* toXkm */,
266    unsigned 		/* orig */
267);
268
269extern	unsigned	XkbConvertXkbComponents(
270    Bool		/* toXkm */,
271    unsigned 		/* orig */
272);
273
274extern	Bool	XkbNameMatchesPattern(
275    char *		/* name */,
276    char *		/* pattern */
277);
278
279/***====================================================================***/
280
281extern	Bool	XkbWriteXKBKeycodes(
282    FILE *		/* file */,
283    XkbDescPtr          /* result */,
284    Bool		/* topLevel */,
285    Bool		/* showImplicit */,
286    XkbFileAddOnFunc	/* addOn */,
287    void *		/* priv */
288);
289
290extern	Bool	XkbWriteXKBKeyTypes(
291    FILE *		/* file */,
292    XkbDescPtr  	/* result */,
293    Bool		/* topLevel */,
294    Bool		/* showImplicit */,
295    XkbFileAddOnFunc	/* addOn */,
296    void *		/* priv */
297);
298
299extern	Bool	XkbWriteXKBCompatMap(
300    FILE *		/* file */,
301    XkbDescPtr	/* result */,
302    Bool		/* topLevel */,
303    Bool		/* showImplicit */,
304    XkbFileAddOnFunc	/* addOn */,
305    void *		/* priv */
306);
307
308extern	Bool	XkbWriteXKBSymbols(
309    FILE *		/* file */,
310    XkbDescPtr	/* result */,
311    Bool		/* topLevel */,
312    Bool		/* showImplicit */,
313    XkbFileAddOnFunc	/* addOn */,
314    void *		/* priv */
315);
316
317extern	Bool	XkbWriteXKBGeometry(
318    FILE *		/* file */,
319    XkbDescPtr	/* result */,
320    Bool		/* topLevel */,
321    Bool		/* showImplicit */,
322    XkbFileAddOnFunc	/* addOn */,
323    void *		/* priv */
324);
325
326extern	Bool	XkbWriteXKBSemantics(
327    FILE *		/* file */,
328    XkbDescPtr	/* result */,
329    Bool		/* topLevel */,
330    Bool		/* showImplicit */,
331    XkbFileAddOnFunc	/* addOn */,
332    void *		/* priv */
333);
334
335extern	Bool	XkbWriteXKBLayout(
336    FILE *		/* file */,
337    XkbDescPtr	/* result */,
338    Bool		/* topLevel */,
339    Bool		/* showImplicit */,
340    XkbFileAddOnFunc	/* addOn */,
341    void *		/* priv */
342);
343
344extern	Bool	XkbWriteXKBKeymap(
345    FILE *		/* file */,
346    XkbDescPtr	/* result */,
347    Bool		/* topLevel */,
348    Bool		/* showImplicit */,
349    XkbFileAddOnFunc	/* addOn */,
350    void *		/* priv */
351);
352
353extern	Bool	XkbWriteXKBFile(
354    FILE *		/* file */,
355    XkbDescPtr	/* result */,
356    Bool		/* showImplicit */,
357    XkbFileAddOnFunc	/* addOn */,
358    void *		/* priv */
359);
360
361extern	Bool	XkbWriteCFile(
362    FILE *		/* file */,
363    char *		/* name */,
364    XkbDescPtr	/* info */
365);
366
367extern	Bool	XkbWriteXKMFile(
368    FILE *		/* file */,
369    XkbDescPtr	/* result */
370);
371
372extern	Bool	XkbWriteToServer(
373    XkbDescPtr	/* result */
374);
375
376extern	void	XkbEnsureSafeMapName(
377    char *		/* name */
378);
379
380extern	Bool	XkbWriteXKBKeymapForNames(
381    FILE *			/* file */,
382    XkbComponentNamesPtr	/* names */,
383    XkbDescPtr			/* xkb */,
384    unsigned			/* want */,
385    unsigned			/* need */
386);
387
388extern	Status	XkbMergeFile(
389    XkbDescPtr			/* xkb */
390);
391
392/***====================================================================***/
393
394extern Bool	XkmProbe(
395    FILE *		/* file */
396);
397
398extern unsigned	XkmReadFile(
399    FILE *		/* file */,
400    unsigned		/* need */,
401    unsigned		/* want */,
402    XkbDescPtr	        * /* result */
403);
404
405_XFUNCPROTOEND
406
407#endif /* _XKBFILE_H_ */
408