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