xref: /OK3568_Linux_fs/external/xserver/include/xkbrules.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun #ifndef _XKBRULES_H_
2*4882a593Smuzhiyun #define	_XKBRULES_H_ 1
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun /************************************************************
5*4882a593Smuzhiyun  Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun  Permission to use, copy, modify, and distribute this
8*4882a593Smuzhiyun  software and its documentation for any purpose and without
9*4882a593Smuzhiyun  fee is hereby granted, provided that the above copyright
10*4882a593Smuzhiyun  notice appear in all copies and that both that copyright
11*4882a593Smuzhiyun  notice and this permission notice appear in supporting
12*4882a593Smuzhiyun  documentation, and that the name of Silicon Graphics not be
13*4882a593Smuzhiyun  used in advertising or publicity pertaining to distribution
14*4882a593Smuzhiyun  of the software without specific prior written permission.
15*4882a593Smuzhiyun  Silicon Graphics makes no representation about the suitability
16*4882a593Smuzhiyun  of this software for any purpose. It is provided "as is"
17*4882a593Smuzhiyun  without any express or implied warranty.
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun  SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
20*4882a593Smuzhiyun  SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
21*4882a593Smuzhiyun  AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
22*4882a593Smuzhiyun  GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
23*4882a593Smuzhiyun  DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
24*4882a593Smuzhiyun  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
25*4882a593Smuzhiyun  OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
26*4882a593Smuzhiyun  THE USE OR PERFORMANCE OF THIS SOFTWARE.
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun  ********************************************************/
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /***====================================================================***/
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun typedef struct _XkbRMLVOSet {
33*4882a593Smuzhiyun     char *rules;
34*4882a593Smuzhiyun     char *model;
35*4882a593Smuzhiyun     char *layout;
36*4882a593Smuzhiyun     char *variant;
37*4882a593Smuzhiyun     char *options;
38*4882a593Smuzhiyun } XkbRMLVOSet;
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun typedef struct _XkbRF_VarDefs {
41*4882a593Smuzhiyun     const char *model;
42*4882a593Smuzhiyun     const char *layout;
43*4882a593Smuzhiyun     const char *variant;
44*4882a593Smuzhiyun     const char *options;
45*4882a593Smuzhiyun } XkbRF_VarDefsRec, *XkbRF_VarDefsPtr;
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun typedef struct _XkbRF_Rule {
48*4882a593Smuzhiyun     int number;
49*4882a593Smuzhiyun     int layout_num;
50*4882a593Smuzhiyun     int variant_num;
51*4882a593Smuzhiyun     const char *model;
52*4882a593Smuzhiyun     const char *layout;
53*4882a593Smuzhiyun     const char *variant;
54*4882a593Smuzhiyun     const char *option;
55*4882a593Smuzhiyun     /* yields */
56*4882a593Smuzhiyun     const char *keycodes;
57*4882a593Smuzhiyun     const char *symbols;
58*4882a593Smuzhiyun     const char *types;
59*4882a593Smuzhiyun     const char *compat;
60*4882a593Smuzhiyun     const char *geometry;
61*4882a593Smuzhiyun     unsigned flags;
62*4882a593Smuzhiyun } XkbRF_RuleRec, *XkbRF_RulePtr;
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun typedef struct _XkbRF_Group {
65*4882a593Smuzhiyun     int number;
66*4882a593Smuzhiyun     const char *name;
67*4882a593Smuzhiyun     char *words;
68*4882a593Smuzhiyun } XkbRF_GroupRec, *XkbRF_GroupPtr;
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define	XkbRF_PendingMatch	(1L<<1)
71*4882a593Smuzhiyun #define	XkbRF_Option		(1L<<2)
72*4882a593Smuzhiyun #define	XkbRF_Append		(1L<<3)
73*4882a593Smuzhiyun #define	XkbRF_Normal		(1L<<4)
74*4882a593Smuzhiyun #define	XkbRF_Invalid		(1L<<5)
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun typedef struct _XkbRF_Rules {
77*4882a593Smuzhiyun     unsigned short sz_rules;
78*4882a593Smuzhiyun     unsigned short num_rules;
79*4882a593Smuzhiyun     XkbRF_RulePtr rules;
80*4882a593Smuzhiyun     unsigned short sz_groups;
81*4882a593Smuzhiyun     unsigned short num_groups;
82*4882a593Smuzhiyun     XkbRF_GroupPtr groups;
83*4882a593Smuzhiyun } XkbRF_RulesRec, *XkbRF_RulesPtr;
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun /***====================================================================***/
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun _XFUNCPROTOBEGIN
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun /* Seems preferable to dragging xkbstr.h in. */
90*4882a593Smuzhiyun     struct _XkbComponentNames;
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun extern _X_EXPORT Bool XkbRF_GetComponents(XkbRF_RulesPtr /* rules */ ,
93*4882a593Smuzhiyun                                           XkbRF_VarDefsPtr /* var_defs */ ,
94*4882a593Smuzhiyun                                           struct _XkbComponentNames *   /* names */
95*4882a593Smuzhiyun     );
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun extern _X_EXPORT Bool XkbRF_LoadRules(FILE * /* file */ ,
98*4882a593Smuzhiyun                                       XkbRF_RulesPtr    /* rules */
99*4882a593Smuzhiyun     );
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun extern _X_EXPORT Bool XkbRF_LoadRulesByName(char * /* base */ ,
102*4882a593Smuzhiyun                                             char * /* locale */ ,
103*4882a593Smuzhiyun                                             XkbRF_RulesPtr      /* rules */
104*4882a593Smuzhiyun     );
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun /***====================================================================***/
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun extern _X_EXPORT XkbRF_RulesPtr XkbRF_Create(void);
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun extern _X_EXPORT void XkbRF_Free(XkbRF_RulesPtr /* rules */ ,
111*4882a593Smuzhiyun                                  Bool   /* freeRules */
112*4882a593Smuzhiyun     );
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun /***====================================================================***/
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun #define	_XKB_RF_NAMES_PROP_ATOM		"_XKB_RULES_NAMES"
117*4882a593Smuzhiyun #define	_XKB_RF_NAMES_PROP_MAXLEN	1024
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun _XFUNCPROTOEND
120*4882a593Smuzhiyun #endif                          /* _XKBRULES_H_ */
121