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 
42 typedef 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 
84 extern _X_EXPORT char *XkbIndentText(unsigned   /* size */
85     );
86 
87 extern _X_EXPORT char *XkbAtomText(Atom /* atm */ ,
88                                    unsigned     /* format */
89     );
90 
91 extern _X_EXPORT char *XkbKeysymText(KeySym /* sym */ ,
92                                      unsigned   /* format */
93     );
94 
95 extern _X_EXPORT char *XkbStringText(char * /* str */ ,
96                                      unsigned   /* format */
97     );
98 
99 extern _X_EXPORT char *XkbKeyNameText(char * /* name */ ,
100                                       unsigned  /* format */
101     );
102 
103 extern _X_EXPORT char *XkbModIndexText(unsigned /* ndx */ ,
104                                        unsigned /* format */
105     );
106 
107 extern _X_EXPORT char *XkbModMaskText(unsigned /* mask */ ,
108                                       unsigned  /* format */
109     );
110 
111 extern _X_EXPORT char *XkbVModIndexText(XkbDescPtr /* xkb */ ,
112                                         unsigned /* ndx */ ,
113                                         unsigned        /* format */
114     );
115 
116 extern _X_EXPORT char *XkbVModMaskText(XkbDescPtr /* xkb */ ,
117                                        unsigned /* modMask */ ,
118                                        unsigned /* mask */ ,
119                                        unsigned /* format */
120     );
121 
122 extern _X_EXPORT char *XkbConfigText(unsigned /* config */ ,
123                                      unsigned   /* format */
124     );
125 
126 extern _X_EXPORT const char *XkbSIMatchText(unsigned /* type */ ,
127                                             unsigned    /* format */
128     );
129 
130 extern _X_EXPORT char *XkbIMWhichStateMaskText(unsigned /* use_which */ ,
131                                                unsigned /* format */
132     );
133 
134 extern _X_EXPORT char *XkbControlsMaskText(unsigned /* ctrls */ ,
135                                            unsigned     /* format */
136     );
137 
138 extern _X_EXPORT char *XkbGeomFPText(int /* val */ ,
139                                      unsigned   /* format */
140     );
141 
142 extern _X_EXPORT char *XkbDoodadTypeText(unsigned /* type */ ,
143                                          unsigned       /* format */
144     );
145 
146 extern _X_EXPORT const char *XkbActionTypeText(unsigned /* type */ ,
147                                                unsigned /* format */
148     );
149 
150 extern _X_EXPORT char *XkbActionText(XkbDescPtr /* xkb */ ,
151                                      XkbAction * /* action */ ,
152                                      unsigned   /* format */
153     );
154 
155 extern _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 
171 extern _X_EXPORT unsigned _XkbKSCheckCase(KeySym        /* sym */
172     );
173 
174 extern _X_EXPORT int XkbFindKeycodeByName(XkbDescPtr /* xkb */ ,
175                                           char * /* name */ ,
176                                           Bool  /* use_aliases */
177     );
178 
179 /***====================================================================***/
180 
181 extern _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
192 typedef 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 
206 extern _X_EXPORT unsigned XkbConvertGetByNameComponents(Bool /* toXkm */ ,
207                                                         unsigned        /* orig */
208     );
209 
210 extern _X_EXPORT Bool XkbNameMatchesPattern(char * /* name */ ,
211                                             char *      /* pattern */
212     );
213 
214 /***====================================================================***/
215 
216 extern _X_EXPORT Bool XkbWriteXKBKeycodes(FILE * /* file */ ,
217                                           XkbDescPtr /* result */ ,
218                                           Bool /* topLevel */ ,
219                                           Bool /* showImplicit */ ,
220                                           XkbFileAddOnFunc /* addOn */ ,
221                                           void *        /* priv */
222     );
223 
224 extern _X_EXPORT Bool XkbWriteXKBKeyTypes(FILE * /* file */ ,
225                                           XkbDescPtr /* result */ ,
226                                           Bool /* topLevel */ ,
227                                           Bool /* showImplicit */ ,
228                                           XkbFileAddOnFunc /* addOn */ ,
229                                           void *        /* priv */
230     );
231 
232 extern _X_EXPORT Bool XkbWriteXKBCompatMap(FILE * /* file */ ,
233                                            XkbDescPtr /* result */ ,
234                                            Bool /* topLevel */ ,
235                                            Bool /* showImplicit */ ,
236                                            XkbFileAddOnFunc /* addOn */ ,
237                                            void *       /* priv */
238     );
239 
240 extern _X_EXPORT Bool XkbWriteXKBSymbols(FILE * /* file */ ,
241                                          XkbDescPtr /* result */ ,
242                                          Bool /* topLevel */ ,
243                                          Bool /* showImplicit */ ,
244                                          XkbFileAddOnFunc /* addOn */ ,
245                                          void * /* priv */
246     );
247 
248 extern _X_EXPORT Bool XkbWriteXKBGeometry(FILE * /* file */ ,
249                                           XkbDescPtr /* result */ ,
250                                           Bool /* topLevel */ ,
251                                           Bool /* showImplicit */ ,
252                                           XkbFileAddOnFunc /* addOn */ ,
253                                           void *        /* priv */
254     );
255 
256 extern _X_EXPORT Bool XkbWriteXKBKeymapForNames(FILE * /* file */ ,
257                                                 XkbComponentNamesPtr /* names */
258                                                 ,
259                                                 XkbDescPtr /* xkb */ ,
260                                                 unsigned /* want */ ,
261                                                 unsigned        /* need */
262     );
263 
264 /***====================================================================***/
265 
266 extern _X_EXPORT Bool XkmProbe(FILE *   /* file */
267     );
268 
269 extern _X_EXPORT unsigned XkmReadFile(FILE * /* file */ ,
270                                       unsigned /* need */ ,
271                                       unsigned /* want */ ,
272                                       XkbDescPtr *      /* result */
273     );
274 
275 _XFUNCPROTOEND
276 #endif                          /* _XKBFILE_H_ */
277