1*2b949d04SAndroid Build Coastguard Worker /************************************************************ 2*2b949d04SAndroid Build Coastguard Worker * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. 3*2b949d04SAndroid Build Coastguard Worker * 4*2b949d04SAndroid Build Coastguard Worker * Permission to use, copy, modify, and distribute this 5*2b949d04SAndroid Build Coastguard Worker * software and its documentation for any purpose and without 6*2b949d04SAndroid Build Coastguard Worker * fee is hereby granted, provided that the above copyright 7*2b949d04SAndroid Build Coastguard Worker * notice appear in all copies and that both that copyright 8*2b949d04SAndroid Build Coastguard Worker * notice and this permission notice appear in supporting 9*2b949d04SAndroid Build Coastguard Worker * documentation, and that the name of Silicon Graphics not be 10*2b949d04SAndroid Build Coastguard Worker * used in advertising or publicity pertaining to distribution 11*2b949d04SAndroid Build Coastguard Worker * of the software without specific prior written permission. 12*2b949d04SAndroid Build Coastguard Worker * Silicon Graphics makes no representation about the suitability 13*2b949d04SAndroid Build Coastguard Worker * of this software for any purpose. It is provided "as is" 14*2b949d04SAndroid Build Coastguard Worker * without any express or implied warranty. 15*2b949d04SAndroid Build Coastguard Worker * 16*2b949d04SAndroid Build Coastguard Worker * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 17*2b949d04SAndroid Build Coastguard Worker * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 18*2b949d04SAndroid Build Coastguard Worker * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON 19*2b949d04SAndroid Build Coastguard Worker * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 20*2b949d04SAndroid Build Coastguard Worker * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 21*2b949d04SAndroid Build Coastguard Worker * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 22*2b949d04SAndroid Build Coastguard Worker * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH 23*2b949d04SAndroid Build Coastguard Worker * THE USE OR PERFORMANCE OF THIS SOFTWARE. 24*2b949d04SAndroid Build Coastguard Worker * 25*2b949d04SAndroid Build Coastguard Worker ********************************************************/ 26*2b949d04SAndroid Build Coastguard Worker 27*2b949d04SAndroid Build Coastguard Worker /* 28*2b949d04SAndroid Build Coastguard Worker * Copyright © 2012 Ran Benita <[email protected]> 29*2b949d04SAndroid Build Coastguard Worker * 30*2b949d04SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 31*2b949d04SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 32*2b949d04SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 33*2b949d04SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 34*2b949d04SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 35*2b949d04SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 36*2b949d04SAndroid Build Coastguard Worker * 37*2b949d04SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 38*2b949d04SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 39*2b949d04SAndroid Build Coastguard Worker * Software. 40*2b949d04SAndroid Build Coastguard Worker * 41*2b949d04SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42*2b949d04SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43*2b949d04SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 44*2b949d04SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 45*2b949d04SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 46*2b949d04SAndroid Build Coastguard Worker * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 47*2b949d04SAndroid Build Coastguard Worker * DEALINGS IN THE SOFTWARE. 48*2b949d04SAndroid Build Coastguard Worker */ 49*2b949d04SAndroid Build Coastguard Worker 50*2b949d04SAndroid Build Coastguard Worker #ifndef XKBCOMP_AST_H 51*2b949d04SAndroid Build Coastguard Worker #define XKBCOMP_AST_H 52*2b949d04SAndroid Build Coastguard Worker 53*2b949d04SAndroid Build Coastguard Worker enum xkb_file_type { 54*2b949d04SAndroid Build Coastguard Worker /* Component files, by order of compilation. */ 55*2b949d04SAndroid Build Coastguard Worker FILE_TYPE_KEYCODES = 0, 56*2b949d04SAndroid Build Coastguard Worker FILE_TYPE_TYPES = 1, 57*2b949d04SAndroid Build Coastguard Worker FILE_TYPE_COMPAT = 2, 58*2b949d04SAndroid Build Coastguard Worker FILE_TYPE_SYMBOLS = 3, 59*2b949d04SAndroid Build Coastguard Worker /* Geometry is not compiled any more. */ 60*2b949d04SAndroid Build Coastguard Worker FILE_TYPE_GEOMETRY = 4, 61*2b949d04SAndroid Build Coastguard Worker 62*2b949d04SAndroid Build Coastguard Worker /* A top level file which includes the above files. */ 63*2b949d04SAndroid Build Coastguard Worker FILE_TYPE_KEYMAP, 64*2b949d04SAndroid Build Coastguard Worker 65*2b949d04SAndroid Build Coastguard Worker /* File types which must be found in a keymap file. */ 66*2b949d04SAndroid Build Coastguard Worker #define FIRST_KEYMAP_FILE_TYPE FILE_TYPE_KEYCODES 67*2b949d04SAndroid Build Coastguard Worker #define LAST_KEYMAP_FILE_TYPE FILE_TYPE_SYMBOLS 68*2b949d04SAndroid Build Coastguard Worker 69*2b949d04SAndroid Build Coastguard Worker /* This one doesn't mix with the others, but useful here as well. */ 70*2b949d04SAndroid Build Coastguard Worker FILE_TYPE_RULES, 71*2b949d04SAndroid Build Coastguard Worker 72*2b949d04SAndroid Build Coastguard Worker _FILE_TYPE_NUM_ENTRIES 73*2b949d04SAndroid Build Coastguard Worker }; 74*2b949d04SAndroid Build Coastguard Worker 75*2b949d04SAndroid Build Coastguard Worker enum stmt_type { 76*2b949d04SAndroid Build Coastguard Worker STMT_UNKNOWN = 0, 77*2b949d04SAndroid Build Coastguard Worker STMT_INCLUDE, 78*2b949d04SAndroid Build Coastguard Worker STMT_KEYCODE, 79*2b949d04SAndroid Build Coastguard Worker STMT_ALIAS, 80*2b949d04SAndroid Build Coastguard Worker STMT_EXPR, 81*2b949d04SAndroid Build Coastguard Worker STMT_VAR, 82*2b949d04SAndroid Build Coastguard Worker STMT_TYPE, 83*2b949d04SAndroid Build Coastguard Worker STMT_INTERP, 84*2b949d04SAndroid Build Coastguard Worker STMT_VMOD, 85*2b949d04SAndroid Build Coastguard Worker STMT_SYMBOLS, 86*2b949d04SAndroid Build Coastguard Worker STMT_MODMAP, 87*2b949d04SAndroid Build Coastguard Worker STMT_GROUP_COMPAT, 88*2b949d04SAndroid Build Coastguard Worker STMT_LED_MAP, 89*2b949d04SAndroid Build Coastguard Worker STMT_LED_NAME, 90*2b949d04SAndroid Build Coastguard Worker 91*2b949d04SAndroid Build Coastguard Worker _STMT_NUM_VALUES 92*2b949d04SAndroid Build Coastguard Worker }; 93*2b949d04SAndroid Build Coastguard Worker 94*2b949d04SAndroid Build Coastguard Worker enum expr_value_type { 95*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_UNKNOWN = 0, 96*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_BOOLEAN, 97*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_INT, 98*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_FLOAT, 99*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_STRING, 100*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_ACTION, 101*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_ACTIONS, 102*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_KEYNAME, 103*2b949d04SAndroid Build Coastguard Worker EXPR_TYPE_SYMBOLS, 104*2b949d04SAndroid Build Coastguard Worker 105*2b949d04SAndroid Build Coastguard Worker _EXPR_TYPE_NUM_VALUES 106*2b949d04SAndroid Build Coastguard Worker }; 107*2b949d04SAndroid Build Coastguard Worker 108*2b949d04SAndroid Build Coastguard Worker enum expr_op_type { 109*2b949d04SAndroid Build Coastguard Worker EXPR_VALUE, 110*2b949d04SAndroid Build Coastguard Worker EXPR_IDENT, 111*2b949d04SAndroid Build Coastguard Worker EXPR_ACTION_DECL, 112*2b949d04SAndroid Build Coastguard Worker EXPR_FIELD_REF, 113*2b949d04SAndroid Build Coastguard Worker EXPR_ARRAY_REF, 114*2b949d04SAndroid Build Coastguard Worker EXPR_KEYSYM_LIST, 115*2b949d04SAndroid Build Coastguard Worker EXPR_ACTION_LIST, 116*2b949d04SAndroid Build Coastguard Worker EXPR_ADD, 117*2b949d04SAndroid Build Coastguard Worker EXPR_SUBTRACT, 118*2b949d04SAndroid Build Coastguard Worker EXPR_MULTIPLY, 119*2b949d04SAndroid Build Coastguard Worker EXPR_DIVIDE, 120*2b949d04SAndroid Build Coastguard Worker EXPR_ASSIGN, 121*2b949d04SAndroid Build Coastguard Worker EXPR_NOT, 122*2b949d04SAndroid Build Coastguard Worker EXPR_NEGATE, 123*2b949d04SAndroid Build Coastguard Worker EXPR_INVERT, 124*2b949d04SAndroid Build Coastguard Worker EXPR_UNARY_PLUS, 125*2b949d04SAndroid Build Coastguard Worker 126*2b949d04SAndroid Build Coastguard Worker _EXPR_NUM_VALUES 127*2b949d04SAndroid Build Coastguard Worker }; 128*2b949d04SAndroid Build Coastguard Worker 129*2b949d04SAndroid Build Coastguard Worker enum merge_mode { 130*2b949d04SAndroid Build Coastguard Worker MERGE_DEFAULT, 131*2b949d04SAndroid Build Coastguard Worker MERGE_AUGMENT, 132*2b949d04SAndroid Build Coastguard Worker MERGE_OVERRIDE, 133*2b949d04SAndroid Build Coastguard Worker MERGE_REPLACE, 134*2b949d04SAndroid Build Coastguard Worker }; 135*2b949d04SAndroid Build Coastguard Worker 136*2b949d04SAndroid Build Coastguard Worker const char * 137*2b949d04SAndroid Build Coastguard Worker xkb_file_type_to_string(enum xkb_file_type type); 138*2b949d04SAndroid Build Coastguard Worker 139*2b949d04SAndroid Build Coastguard Worker const char * 140*2b949d04SAndroid Build Coastguard Worker stmt_type_to_string(enum stmt_type type); 141*2b949d04SAndroid Build Coastguard Worker 142*2b949d04SAndroid Build Coastguard Worker const char * 143*2b949d04SAndroid Build Coastguard Worker expr_op_type_to_string(enum expr_op_type type); 144*2b949d04SAndroid Build Coastguard Worker 145*2b949d04SAndroid Build Coastguard Worker const char * 146*2b949d04SAndroid Build Coastguard Worker expr_value_type_to_string(enum expr_value_type type); 147*2b949d04SAndroid Build Coastguard Worker 148*2b949d04SAndroid Build Coastguard Worker typedef struct _ParseCommon { 149*2b949d04SAndroid Build Coastguard Worker struct _ParseCommon *next; 150*2b949d04SAndroid Build Coastguard Worker enum stmt_type type; 151*2b949d04SAndroid Build Coastguard Worker } ParseCommon; 152*2b949d04SAndroid Build Coastguard Worker 153*2b949d04SAndroid Build Coastguard Worker typedef struct _IncludeStmt { 154*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 155*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 156*2b949d04SAndroid Build Coastguard Worker char *stmt; 157*2b949d04SAndroid Build Coastguard Worker char *file; 158*2b949d04SAndroid Build Coastguard Worker char *map; 159*2b949d04SAndroid Build Coastguard Worker char *modifier; 160*2b949d04SAndroid Build Coastguard Worker struct _IncludeStmt *next_incl; 161*2b949d04SAndroid Build Coastguard Worker } IncludeStmt; 162*2b949d04SAndroid Build Coastguard Worker 163*2b949d04SAndroid Build Coastguard Worker typedef struct { 164*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 165*2b949d04SAndroid Build Coastguard Worker enum expr_op_type op; 166*2b949d04SAndroid Build Coastguard Worker enum expr_value_type value_type; 167*2b949d04SAndroid Build Coastguard Worker } ExprCommon; 168*2b949d04SAndroid Build Coastguard Worker 169*2b949d04SAndroid Build Coastguard Worker typedef union ExprDef ExprDef; 170*2b949d04SAndroid Build Coastguard Worker 171*2b949d04SAndroid Build Coastguard Worker typedef struct { 172*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 173*2b949d04SAndroid Build Coastguard Worker xkb_atom_t ident; 174*2b949d04SAndroid Build Coastguard Worker } ExprIdent; 175*2b949d04SAndroid Build Coastguard Worker 176*2b949d04SAndroid Build Coastguard Worker typedef struct { 177*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 178*2b949d04SAndroid Build Coastguard Worker xkb_atom_t str; 179*2b949d04SAndroid Build Coastguard Worker } ExprString; 180*2b949d04SAndroid Build Coastguard Worker 181*2b949d04SAndroid Build Coastguard Worker typedef struct { 182*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 183*2b949d04SAndroid Build Coastguard Worker bool set; 184*2b949d04SAndroid Build Coastguard Worker } ExprBoolean; 185*2b949d04SAndroid Build Coastguard Worker 186*2b949d04SAndroid Build Coastguard Worker typedef struct { 187*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 188*2b949d04SAndroid Build Coastguard Worker int ival; 189*2b949d04SAndroid Build Coastguard Worker } ExprInteger; 190*2b949d04SAndroid Build Coastguard Worker 191*2b949d04SAndroid Build Coastguard Worker typedef struct { 192*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 193*2b949d04SAndroid Build Coastguard Worker /* We don't support floats, but we still represnt them in the AST, in 194*2b949d04SAndroid Build Coastguard Worker * order to provide proper error messages. */ 195*2b949d04SAndroid Build Coastguard Worker } ExprFloat; 196*2b949d04SAndroid Build Coastguard Worker 197*2b949d04SAndroid Build Coastguard Worker typedef struct { 198*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 199*2b949d04SAndroid Build Coastguard Worker xkb_atom_t key_name; 200*2b949d04SAndroid Build Coastguard Worker } ExprKeyName; 201*2b949d04SAndroid Build Coastguard Worker 202*2b949d04SAndroid Build Coastguard Worker typedef struct { 203*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 204*2b949d04SAndroid Build Coastguard Worker ExprDef *left; 205*2b949d04SAndroid Build Coastguard Worker ExprDef *right; 206*2b949d04SAndroid Build Coastguard Worker } ExprBinary; 207*2b949d04SAndroid Build Coastguard Worker 208*2b949d04SAndroid Build Coastguard Worker typedef struct { 209*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 210*2b949d04SAndroid Build Coastguard Worker ExprDef *child; 211*2b949d04SAndroid Build Coastguard Worker } ExprUnary; 212*2b949d04SAndroid Build Coastguard Worker 213*2b949d04SAndroid Build Coastguard Worker typedef struct { 214*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 215*2b949d04SAndroid Build Coastguard Worker xkb_atom_t element; 216*2b949d04SAndroid Build Coastguard Worker xkb_atom_t field; 217*2b949d04SAndroid Build Coastguard Worker } ExprFieldRef; 218*2b949d04SAndroid Build Coastguard Worker 219*2b949d04SAndroid Build Coastguard Worker typedef struct { 220*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 221*2b949d04SAndroid Build Coastguard Worker xkb_atom_t element; 222*2b949d04SAndroid Build Coastguard Worker xkb_atom_t field; 223*2b949d04SAndroid Build Coastguard Worker ExprDef *entry; 224*2b949d04SAndroid Build Coastguard Worker } ExprArrayRef; 225*2b949d04SAndroid Build Coastguard Worker 226*2b949d04SAndroid Build Coastguard Worker typedef struct { 227*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 228*2b949d04SAndroid Build Coastguard Worker xkb_atom_t name; 229*2b949d04SAndroid Build Coastguard Worker ExprDef *args; 230*2b949d04SAndroid Build Coastguard Worker } ExprAction; 231*2b949d04SAndroid Build Coastguard Worker 232*2b949d04SAndroid Build Coastguard Worker typedef struct { 233*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 234*2b949d04SAndroid Build Coastguard Worker ExprDef *actions; 235*2b949d04SAndroid Build Coastguard Worker } ExprActionList; 236*2b949d04SAndroid Build Coastguard Worker 237*2b949d04SAndroid Build Coastguard Worker typedef struct { 238*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 239*2b949d04SAndroid Build Coastguard Worker darray(xkb_keysym_t) syms; 240*2b949d04SAndroid Build Coastguard Worker darray(unsigned int) symsMapIndex; 241*2b949d04SAndroid Build Coastguard Worker darray(unsigned int) symsNumEntries; 242*2b949d04SAndroid Build Coastguard Worker } ExprKeysymList; 243*2b949d04SAndroid Build Coastguard Worker 244*2b949d04SAndroid Build Coastguard Worker union ExprDef { 245*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 246*2b949d04SAndroid Build Coastguard Worker ExprCommon expr; 247*2b949d04SAndroid Build Coastguard Worker ExprIdent ident; 248*2b949d04SAndroid Build Coastguard Worker ExprString string; 249*2b949d04SAndroid Build Coastguard Worker ExprBoolean boolean; 250*2b949d04SAndroid Build Coastguard Worker ExprInteger integer; 251*2b949d04SAndroid Build Coastguard Worker ExprKeyName key_name; 252*2b949d04SAndroid Build Coastguard Worker ExprBinary binary; 253*2b949d04SAndroid Build Coastguard Worker ExprUnary unary; 254*2b949d04SAndroid Build Coastguard Worker ExprFieldRef field_ref; 255*2b949d04SAndroid Build Coastguard Worker ExprArrayRef array_ref; 256*2b949d04SAndroid Build Coastguard Worker ExprAction action; 257*2b949d04SAndroid Build Coastguard Worker ExprActionList actions; 258*2b949d04SAndroid Build Coastguard Worker ExprKeysymList keysym_list; 259*2b949d04SAndroid Build Coastguard Worker }; 260*2b949d04SAndroid Build Coastguard Worker 261*2b949d04SAndroid Build Coastguard Worker typedef struct { 262*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 263*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 264*2b949d04SAndroid Build Coastguard Worker ExprDef *name; 265*2b949d04SAndroid Build Coastguard Worker ExprDef *value; 266*2b949d04SAndroid Build Coastguard Worker } VarDef; 267*2b949d04SAndroid Build Coastguard Worker 268*2b949d04SAndroid Build Coastguard Worker typedef struct { 269*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 270*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 271*2b949d04SAndroid Build Coastguard Worker xkb_atom_t name; 272*2b949d04SAndroid Build Coastguard Worker ExprDef *value; 273*2b949d04SAndroid Build Coastguard Worker } VModDef; 274*2b949d04SAndroid Build Coastguard Worker 275*2b949d04SAndroid Build Coastguard Worker typedef struct { 276*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 277*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 278*2b949d04SAndroid Build Coastguard Worker xkb_atom_t name; 279*2b949d04SAndroid Build Coastguard Worker int64_t value; 280*2b949d04SAndroid Build Coastguard Worker } KeycodeDef; 281*2b949d04SAndroid Build Coastguard Worker 282*2b949d04SAndroid Build Coastguard Worker typedef struct { 283*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 284*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 285*2b949d04SAndroid Build Coastguard Worker xkb_atom_t alias; 286*2b949d04SAndroid Build Coastguard Worker xkb_atom_t real; 287*2b949d04SAndroid Build Coastguard Worker } KeyAliasDef; 288*2b949d04SAndroid Build Coastguard Worker 289*2b949d04SAndroid Build Coastguard Worker typedef struct { 290*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 291*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 292*2b949d04SAndroid Build Coastguard Worker xkb_atom_t name; 293*2b949d04SAndroid Build Coastguard Worker VarDef *body; 294*2b949d04SAndroid Build Coastguard Worker } KeyTypeDef; 295*2b949d04SAndroid Build Coastguard Worker 296*2b949d04SAndroid Build Coastguard Worker typedef struct { 297*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 298*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 299*2b949d04SAndroid Build Coastguard Worker xkb_atom_t keyName; 300*2b949d04SAndroid Build Coastguard Worker VarDef *symbols; 301*2b949d04SAndroid Build Coastguard Worker } SymbolsDef; 302*2b949d04SAndroid Build Coastguard Worker 303*2b949d04SAndroid Build Coastguard Worker typedef struct { 304*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 305*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 306*2b949d04SAndroid Build Coastguard Worker xkb_atom_t modifier; 307*2b949d04SAndroid Build Coastguard Worker ExprDef *keys; 308*2b949d04SAndroid Build Coastguard Worker } ModMapDef; 309*2b949d04SAndroid Build Coastguard Worker 310*2b949d04SAndroid Build Coastguard Worker typedef struct { 311*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 312*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 313*2b949d04SAndroid Build Coastguard Worker unsigned group; 314*2b949d04SAndroid Build Coastguard Worker ExprDef *def; 315*2b949d04SAndroid Build Coastguard Worker } GroupCompatDef; 316*2b949d04SAndroid Build Coastguard Worker 317*2b949d04SAndroid Build Coastguard Worker typedef struct { 318*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 319*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 320*2b949d04SAndroid Build Coastguard Worker xkb_keysym_t sym; 321*2b949d04SAndroid Build Coastguard Worker ExprDef *match; 322*2b949d04SAndroid Build Coastguard Worker VarDef *def; 323*2b949d04SAndroid Build Coastguard Worker } InterpDef; 324*2b949d04SAndroid Build Coastguard Worker 325*2b949d04SAndroid Build Coastguard Worker typedef struct { 326*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 327*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 328*2b949d04SAndroid Build Coastguard Worker unsigned ndx; 329*2b949d04SAndroid Build Coastguard Worker ExprDef *name; 330*2b949d04SAndroid Build Coastguard Worker bool virtual; 331*2b949d04SAndroid Build Coastguard Worker } LedNameDef; 332*2b949d04SAndroid Build Coastguard Worker 333*2b949d04SAndroid Build Coastguard Worker typedef struct { 334*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 335*2b949d04SAndroid Build Coastguard Worker enum merge_mode merge; 336*2b949d04SAndroid Build Coastguard Worker xkb_atom_t name; 337*2b949d04SAndroid Build Coastguard Worker VarDef *body; 338*2b949d04SAndroid Build Coastguard Worker } LedMapDef; 339*2b949d04SAndroid Build Coastguard Worker 340*2b949d04SAndroid Build Coastguard Worker enum xkb_map_flags { 341*2b949d04SAndroid Build Coastguard Worker MAP_IS_DEFAULT = (1 << 0), 342*2b949d04SAndroid Build Coastguard Worker MAP_IS_PARTIAL = (1 << 1), 343*2b949d04SAndroid Build Coastguard Worker MAP_IS_HIDDEN = (1 << 2), 344*2b949d04SAndroid Build Coastguard Worker MAP_HAS_ALPHANUMERIC = (1 << 3), 345*2b949d04SAndroid Build Coastguard Worker MAP_HAS_MODIFIER = (1 << 4), 346*2b949d04SAndroid Build Coastguard Worker MAP_HAS_KEYPAD = (1 << 5), 347*2b949d04SAndroid Build Coastguard Worker MAP_HAS_FN = (1 << 6), 348*2b949d04SAndroid Build Coastguard Worker MAP_IS_ALTGR = (1 << 7), 349*2b949d04SAndroid Build Coastguard Worker }; 350*2b949d04SAndroid Build Coastguard Worker 351*2b949d04SAndroid Build Coastguard Worker typedef struct { 352*2b949d04SAndroid Build Coastguard Worker ParseCommon common; 353*2b949d04SAndroid Build Coastguard Worker enum xkb_file_type file_type; 354*2b949d04SAndroid Build Coastguard Worker char *name; 355*2b949d04SAndroid Build Coastguard Worker ParseCommon *defs; 356*2b949d04SAndroid Build Coastguard Worker enum xkb_map_flags flags; 357*2b949d04SAndroid Build Coastguard Worker } XkbFile; 358*2b949d04SAndroid Build Coastguard Worker 359*2b949d04SAndroid Build Coastguard Worker #endif 360