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#include "xkbstr.h"
31
32/***====================================================================***/
33
34#define	XkbXKMFile	0
35#define	XkbCFile	1
36#define	XkbXKBFile	2
37#define	XkbMessage	3
38
39#define	XkbMapDefined		(1<<0)
40#define	XkbStateDefined		(1<<1)
41
42typedef void (*XkbFileAddOnFunc) (FILE * /* file */ ,
43                                  XkbDescPtr /* result */ ,
44                                  Bool /* topLevel */ ,
45                                  Bool /* showImplicit */ ,
46                                  int /* fileSection */ ,
47                                  void *        /* priv */
48    );
49
50/***====================================================================***/
51
52#define	_XkbSuccess			0
53#define	_XkbErrMissingNames		1
54#define	_XkbErrMissingTypes		2
55#define	_XkbErrMissingReqTypes		3
56#define	_XkbErrMissingSymbols		4
57#define	_XkbErrMissingVMods		5
58#define	_XkbErrMissingIndicators	6
59#define	_XkbErrMissingCompatMap		7
60#define	_XkbErrMissingSymInterps	8
61#define	_XkbErrMissingGeometry		9
62#define	_XkbErrIllegalDoodad		10
63#define	_XkbErrIllegalTOCType		11
64#define	_XkbErrIllegalContents		12
65#define	_XkbErrEmptyFile		13
66#define	_XkbErrFileNotFound		14
67#define	_XkbErrFileCannotOpen		15
68#define	_XkbErrBadValue			16
69#define	_XkbErrBadMatch			17
70#define	_XkbErrBadTypeName		18
71#define	_XkbErrBadTypeWidth		19
72#define	_XkbErrBadFileType		20
73#define	_XkbErrBadFileVersion		21
74#define	_XkbErrBadFileFormat		22
75#define	_XkbErrBadAlloc			23
76#define	_XkbErrBadLength		24
77#define	_XkbErrXReqFailure		25
78#define	_XkbErrBadImplementation	26
79
80/***====================================================================***/
81
82_XFUNCPROTOBEGIN
83
84extern _X_EXPORT char *XkbIndentText(unsigned   /* size */
85    );
86
87extern _X_EXPORT char *XkbAtomText(Atom /* atm */ ,
88                                   unsigned     /* format */
89    );
90
91extern _X_EXPORT char *XkbKeysymText(KeySym /* sym */ ,
92                                     unsigned   /* format */
93    );
94
95extern _X_EXPORT char *XkbStringText(char * /* str */ ,
96                                     unsigned   /* format */
97    );
98
99extern _X_EXPORT char *XkbKeyNameText(char * /* name */ ,
100                                      unsigned  /* format */
101    );
102
103extern _X_EXPORT char *XkbModIndexText(unsigned /* ndx */ ,
104                                       unsigned /* format */
105    );
106
107extern _X_EXPORT char *XkbModMaskText(unsigned /* mask */ ,
108                                      unsigned  /* format */
109    );
110
111extern _X_EXPORT char *XkbVModIndexText(XkbDescPtr /* xkb */ ,
112                                        unsigned /* ndx */ ,
113                                        unsigned        /* format */
114    );
115
116extern _X_EXPORT char *XkbVModMaskText(XkbDescPtr /* xkb */ ,
117                                       unsigned /* modMask */ ,
118                                       unsigned /* mask */ ,
119                                       unsigned /* format */
120    );
121
122extern _X_EXPORT char *XkbConfigText(unsigned /* config */ ,
123                                     unsigned   /* format */
124    );
125
126extern _X_EXPORT const char *XkbSIMatchText(unsigned /* type */ ,
127                                            unsigned    /* format */
128    );
129
130extern _X_EXPORT char *XkbIMWhichStateMaskText(unsigned /* use_which */ ,
131                                               unsigned /* format */
132    );
133
134extern _X_EXPORT char *XkbControlsMaskText(unsigned /* ctrls */ ,
135                                           unsigned     /* format */
136    );
137
138extern _X_EXPORT char *XkbGeomFPText(int /* val */ ,
139                                     unsigned   /* format */
140    );
141
142extern _X_EXPORT char *XkbDoodadTypeText(unsigned /* type */ ,
143                                         unsigned       /* format */
144    );
145
146extern _X_EXPORT const char *XkbActionTypeText(unsigned /* type */ ,
147                                               unsigned /* format */
148    );
149
150extern _X_EXPORT char *XkbActionText(XkbDescPtr /* xkb */ ,
151                                     XkbAction * /* action */ ,
152                                     unsigned   /* format */
153    );
154
155extern _X_EXPORT char *XkbBehaviorText(XkbDescPtr /* xkb */ ,
156                                       XkbBehavior * /* behavior */ ,
157                                       unsigned /* format */
158    );
159
160/***====================================================================***/
161
162#define	_XkbKSLower	(1<<0)
163#define	_XkbKSUpper	(1<<1)
164
165#define	XkbKSIsLower(k)		(_XkbKSCheckCase(k)&_XkbKSLower)
166#define	XkbKSIsUpper(k)		(_XkbKSCheckCase(k)&_XkbKSUpper)
167#define XkbKSIsKeypad(k)	(((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal))
168#define	XkbKSIsDeadKey(k)	\
169		(((k)>=XK_dead_grave)&&((k)<=XK_dead_semivoiced_sound))
170
171extern _X_EXPORT unsigned _XkbKSCheckCase(KeySym        /* sym */
172    );
173
174extern _X_EXPORT int XkbFindKeycodeByName(XkbDescPtr /* xkb */ ,
175                                          char * /* name */ ,
176                                          Bool  /* use_aliases */
177    );
178
179/***====================================================================***/
180
181extern _X_EXPORT Atom XkbInternAtom(char * /* name */ ,
182                                    Bool        /* onlyIfExists */
183    );
184
185/***====================================================================***/
186
187#ifdef _XKBGEOM_H_
188
189#define	XkbDW_Unknown	0
190#define	XkbDW_Doodad	1
191#define	XkbDW_Section	2
192typedef struct _XkbDrawable {
193    int type;
194    int priority;
195    union {
196        XkbDoodadPtr doodad;
197        XkbSectionPtr section;
198    } u;
199    struct _XkbDrawable *next;
200} XkbDrawableRec, *XkbDrawablePtr;
201
202#endif
203
204/***====================================================================***/
205
206extern _X_EXPORT unsigned XkbConvertGetByNameComponents(Bool /* toXkm */ ,
207                                                        unsigned        /* orig */
208    );
209
210extern _X_EXPORT Bool XkbNameMatchesPattern(char * /* name */ ,
211                                            char *      /* pattern */
212    );
213
214/***====================================================================***/
215
216extern _X_EXPORT Bool XkbWriteXKBKeycodes(FILE * /* file */ ,
217                                          XkbDescPtr /* result */ ,
218                                          Bool /* topLevel */ ,
219                                          Bool /* showImplicit */ ,
220                                          XkbFileAddOnFunc /* addOn */ ,
221                                          void *        /* priv */
222    );
223
224extern _X_EXPORT Bool XkbWriteXKBKeyTypes(FILE * /* file */ ,
225                                          XkbDescPtr /* result */ ,
226                                          Bool /* topLevel */ ,
227                                          Bool /* showImplicit */ ,
228                                          XkbFileAddOnFunc /* addOn */ ,
229                                          void *        /* priv */
230    );
231
232extern _X_EXPORT Bool XkbWriteXKBCompatMap(FILE * /* file */ ,
233                                           XkbDescPtr /* result */ ,
234                                           Bool /* topLevel */ ,
235                                           Bool /* showImplicit */ ,
236                                           XkbFileAddOnFunc /* addOn */ ,
237                                           void *       /* priv */
238    );
239
240extern _X_EXPORT Bool XkbWriteXKBSymbols(FILE * /* file */ ,
241                                         XkbDescPtr /* result */ ,
242                                         Bool /* topLevel */ ,
243                                         Bool /* showImplicit */ ,
244                                         XkbFileAddOnFunc /* addOn */ ,
245                                         void * /* priv */
246    );
247
248extern _X_EXPORT Bool XkbWriteXKBGeometry(FILE * /* file */ ,
249                                          XkbDescPtr /* result */ ,
250                                          Bool /* topLevel */ ,
251                                          Bool /* showImplicit */ ,
252                                          XkbFileAddOnFunc /* addOn */ ,
253                                          void *        /* priv */
254    );
255
256extern _X_EXPORT Bool XkbWriteXKBKeymapForNames(FILE * /* file */ ,
257                                                XkbComponentNamesPtr /* names */
258                                                ,
259                                                XkbDescPtr /* xkb */ ,
260                                                unsigned /* want */ ,
261                                                unsigned        /* need */
262    );
263
264/***====================================================================***/
265
266extern _X_EXPORT Bool XkmProbe(FILE *   /* file */
267    );
268
269extern _X_EXPORT unsigned XkmReadFile(FILE * /* file */ ,
270                                      unsigned /* need */ ,
271                                      unsigned /* want */ ,
272                                      XkbDescPtr *      /* result */
273    );
274
275_XFUNCPROTOEND
276#endif                          /* _XKBFILE_H_ */
277