XKBrules.h revision 4cd6a3ae
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 32typedef 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 43typedef struct _XkbRF_VarDesc { 44 char * name; 45 char * desc; 46} XkbRF_VarDescRec, *XkbRF_VarDescPtr; 47 48typedef struct _XkbRF_DescribeVars { 49 int sz_desc; 50 int num_desc; 51 XkbRF_VarDescPtr desc; 52} XkbRF_DescribeVarsRec,*XkbRF_DescribeVarsPtr; 53 54typedef 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 72typedef 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 84typedef 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 106extern Bool XkbRF_GetComponents( 107 XkbRF_RulesPtr /* rules */, 108 XkbRF_VarDefsPtr /* var_defs */, 109 XkbComponentNamesPtr /* names */ 110); 111 112extern XkbRF_RulePtr XkbRF_AddRule( 113 XkbRF_RulesPtr /* rules */ 114); 115 116extern XkbRF_GroupPtr XkbRF_AddGroup(XkbRF_RulesPtr rules); 117 118extern Bool XkbRF_LoadRules( 119 FILE * /* file */, 120 XkbRF_RulesPtr /* rules */ 121); 122 123extern Bool XkbRF_LoadRulesByName( 124 char * /* base */, 125 char * /* locale */, 126 XkbRF_RulesPtr /* rules */ 127); 128 129/***====================================================================***/ 130 131extern XkbRF_VarDescPtr XkbRF_AddVarDesc( 132 XkbRF_DescribeVarsPtr /* vars */ 133); 134 135extern XkbRF_VarDescPtr XkbRF_AddVarDescCopy( 136 XkbRF_DescribeVarsPtr /* vars */, 137 XkbRF_VarDescPtr /* copy_from */ 138); 139 140extern XkbRF_DescribeVarsPtr XkbRF_AddVarToDescribe( 141 XkbRF_RulesPtr /* rules */, 142 char * /* name */ 143); 144 145extern Bool XkbRF_LoadDescriptions( 146 FILE * /* file */, 147 XkbRF_RulesPtr /* rules */ 148); 149 150extern Bool XkbRF_LoadDescriptionsByName( 151 char * /* base */, 152 char * /* locale */, 153 XkbRF_RulesPtr /* rules */ 154); 155 156extern XkbRF_RulesPtr XkbRF_Load( 157 char * /* base */, 158 char * /* locale */, 159 Bool /* wantDesc */, 160 Bool /* wantRules */ 161); 162 163extern XkbRF_RulesPtr XkbRF_Create( 164 int /* sz_rules */, 165 int /* sz_extra */ 166); 167 168/***====================================================================***/ 169 170extern 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 183extern Bool XkbRF_GetNamesProp( 184 Display * /* dpy */, 185 char ** /* rules_file_rtrn */, 186 XkbRF_VarDefsPtr /* var_defs_rtrn */ 187); 188 189extern 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_ */ 200