59d11cd881155a0dea6b34119b4ffedf1ad8bf5d
[framework/uifw/xorg/lib/libxkbfile.git] / include / X11 / extensions / XKBrules.h
1 #ifndef _XKBRULES_H_
2 #define _XKBRULES_H_ 1
3
4 /************************************************************
5  Copyright (c) 1996 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 /***====================================================================***/
31
32 typedef struct _XkbRF_VarDefs {
33         char *                  model;
34         char *                  layout;
35         char *                  variant;
36         char *                  options;
37         unsigned short          sz_extra;
38         unsigned short          num_extra;
39         char *                  extra_names;
40         char **                 extra_values;
41 } XkbRF_VarDefsRec,*XkbRF_VarDefsPtr;
42
43 typedef struct _XkbRF_VarDesc {
44         char *                  name;
45         char *                  desc;
46 } XkbRF_VarDescRec, *XkbRF_VarDescPtr;
47
48 typedef struct _XkbRF_DescribeVars {
49         int                     sz_desc;
50         int                     num_desc;
51         XkbRF_VarDescPtr        desc;
52 } XkbRF_DescribeVarsRec,*XkbRF_DescribeVarsPtr;
53
54 typedef struct _XkbRF_Rule {
55         int                     number;
56         int                     layout_num;
57         int                     variant_num;
58         char *                  model;
59         char *                  layout;
60         char *                  variant;
61         char *                  option;
62         /* yields */
63         char *                  keycodes;
64         char *                  symbols;
65         char *                  types;
66         char *                  compat;
67         char *                  geometry;
68         char *                  keymap;
69         unsigned                flags;
70 } XkbRF_RuleRec,*XkbRF_RulePtr;
71
72 typedef struct _XkbRF_Group {
73         int                     number;
74         char *                  name;
75         char *                  words;
76 } XkbRF_GroupRec, *XkbRF_GroupPtr;
77
78 #define XkbRF_PendingMatch      (1L<<1)
79 #define XkbRF_Option            (1L<<2)
80 #define XkbRF_Append            (1L<<3)
81 #define XkbRF_Normal            (1L<<4)
82 #define XkbRF_Invalid           (1L<<5)
83
84 typedef struct _XkbRF_Rules {
85         XkbRF_DescribeVarsRec   models;
86         XkbRF_DescribeVarsRec   layouts;
87         XkbRF_DescribeVarsRec   variants;
88         XkbRF_DescribeVarsRec   options;
89         unsigned short          sz_extra;
90         unsigned short          num_extra;
91         char **                 extra_names;
92         XkbRF_DescribeVarsPtr   extra;
93
94         unsigned short          sz_rules;
95         unsigned short          num_rules;
96         XkbRF_RulePtr           rules;
97         unsigned short          sz_groups;
98         unsigned short          num_groups;
99         XkbRF_GroupPtr          groups;
100 } XkbRF_RulesRec, *XkbRF_RulesPtr;
101
102 /***====================================================================***/
103
104 _XFUNCPROTOBEGIN
105
106 extern Bool     XkbRF_GetComponents(
107     XkbRF_RulesPtr              /* rules */,
108     XkbRF_VarDefsPtr            /* var_defs */,
109     XkbComponentNamesPtr        /* names */
110 );
111
112 extern XkbRF_RulePtr    XkbRF_AddRule(
113     XkbRF_RulesPtr      /* rules */
114 );
115
116 extern XkbRF_GroupPtr XkbRF_AddGroup(XkbRF_RulesPtr  rules);
117
118 extern Bool     XkbRF_LoadRules(
119     FILE *              /* file */,
120     XkbRF_RulesPtr      /* rules */
121 );
122
123 extern Bool XkbRF_LoadRulesByName(
124     char *              /* base */,
125     char *              /* locale */,
126     XkbRF_RulesPtr      /* rules */
127 );
128
129 /***====================================================================***/
130
131 extern XkbRF_VarDescPtr XkbRF_AddVarDesc(
132     XkbRF_DescribeVarsPtr       /* vars */
133 );
134
135 extern XkbRF_VarDescPtr XkbRF_AddVarDescCopy(
136     XkbRF_DescribeVarsPtr       /* vars */,
137     XkbRF_VarDescPtr            /* copy_from */
138 );
139
140 extern XkbRF_DescribeVarsPtr XkbRF_AddVarToDescribe(
141     XkbRF_RulesPtr              /* rules */,
142     char *                      /* name */
143 );
144
145 extern Bool     XkbRF_LoadDescriptions(
146     FILE *              /* file */,
147     XkbRF_RulesPtr      /* rules */
148 );
149
150 extern Bool XkbRF_LoadDescriptionsByName(
151     char *              /* base */,
152     char *              /* locale */,
153     XkbRF_RulesPtr      /* rules */
154 );
155
156 extern XkbRF_RulesPtr XkbRF_Load(
157     char *              /* base */,
158     char *              /* locale */,
159     Bool                /* wantDesc */,
160     Bool                /* wantRules */
161 );
162
163 extern XkbRF_RulesPtr XkbRF_Create(
164     int                 /* sz_rules */,
165     int                 /* sz_extra */
166 );
167
168 /***====================================================================***/
169
170 extern void XkbRF_Free(
171     XkbRF_RulesPtr      /* rules */,
172     Bool                /* freeRules */
173 );
174
175
176 /***====================================================================***/
177
178 #define _XKB_RF_NAMES_PROP_ATOM         "_XKB_RULES_NAMES"
179 #define _XKB_RF_NAMES_PROP_MAXLEN       1024
180
181 #ifndef XKB_IN_SERVER
182
183 extern Bool XkbRF_GetNamesProp(
184    Display *            /* dpy */,
185    char **              /* rules_file_rtrn */,
186    XkbRF_VarDefsPtr     /* var_defs_rtrn */
187 );
188
189 extern Bool XkbRF_SetNamesProp(
190    Display *            /* dpy */,
191    char *               /* rules_file */,
192    XkbRF_VarDefsPtr     /* var_defs */
193 );
194
195 #endif
196
197 _XFUNCPROTOEND
198
199 #endif /* _XKBRULES_H_ */