123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398 |
- /************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
- ********************************************************/
- #ifndef XKBCOMP_H
- #define XKBCOMP_H 1
- #ifndef DEBUG_VAR
- #define DEBUG_VAR debugFlags
- #endif
- #include <X11/Xlib.h>
- #include <X11/XKBlib.h>
- #include "utils.h"
- #include <X11/extensions/XKM.h>
- #include <X11/extensions/XKBfile.h>
- extern char *scanFile;
- #define TypeUnknown 0
- #define TypeBoolean 1
- #define TypeInt 2
- #define TypeFloat 3
- #define TypeString 4
- #define TypeAction 5
- #define TypeKeyName 6
- #define TypeSymbols 7
- #define StmtUnknown 0
- #define StmtInclude 1
- #define StmtKeycodeDef 2
- #define StmtKeyAliasDef 3
- #define StmtExpr 4
- #define StmtVarDef 5
- #define StmtKeyTypeDef 6
- #define StmtInterpDef 7
- #define StmtVModDef 8
- #define StmtSymbolsDef 9
- #define StmtModMapDef 10
- #define StmtGroupCompatDef 11
- #define StmtIndicatorMapDef 12
- #define StmtIndicatorNameDef 13
- #define StmtOutlineDef 14
- #define StmtShapeDef 15
- #define StmtKeyDef 16
- #define StmtRowDef 17
- #define StmtSectionDef 18
- #define StmtOverlayKeyDef 19
- #define StmtOverlayDef 20
- #define StmtDoodadDef 21
- #define FileSymInterp 100
- typedef struct _ParseCommon
- {
- unsigned stmtType;
- struct _ParseCommon *next;
- } ParseCommon;
- #define ExprValue 0
- #define ExprIdent 1
- #define ExprActionDecl 2
- #define ExprFieldRef 3
- #define ExprArrayRef 4
- #define ExprKeysymList 5
- #define ExprActionList 6
- #define ExprCoord 7
- #define OpAdd 20
- #define OpSubtract 21
- #define OpMultiply 22
- #define OpDivide 23
- #define OpAssign 24
- #define OpNot 25
- #define OpNegate 26
- #define OpInvert 27
- #define OpUnaryPlus 28
- #define MergeDefault 0
- #define MergeAugment 1
- #define MergeOverride 2
- #define MergeReplace 3
- #define MergeAltForm 4
- #define AutoKeyNames (1L << 0)
- #define CreateKeyNames(x) ((x)->flags&AutoKeyNames)
- extern unsigned warningLevel;
- extern unsigned optionalParts;
- typedef struct _IncludeStmt
- {
- ParseCommon common;
- unsigned merge;
- char *stmt;
- char *file;
- char *map;
- char *modifier;
- char *path;
- struct _IncludeStmt *next;
- } IncludeStmt;
- typedef struct _Expr
- {
- ParseCommon common;
- unsigned op;
- unsigned type;
- union
- {
- struct
- {
- struct _Expr *left;
- struct _Expr *right;
- } binary;
- struct
- {
- Atom element;
- Atom field;
- } field;
- struct
- {
- Atom element;
- Atom field;
- struct _Expr *entry;
- } array;
- struct
- {
- Atom name;
- struct _Expr *args;
- } action;
- struct
- {
- int nSyms;
- int szSyms;
- char **syms;
- } list;
- struct
- {
- int x;
- int y;
- } coord;
- struct _Expr *child;
- Atom str;
- unsigned uval;
- int ival;
- char keyName[5];
- Opaque ptr;
- } value;
- } ExprDef;
- typedef struct _VarDef
- {
- ParseCommon common;
- unsigned merge;
- ExprDef *name;
- ExprDef *value;
- } VarDef;
- typedef struct _VModDef
- {
- ParseCommon common;
- unsigned merge;
- Atom name;
- ExprDef *value;
- } VModDef;
- typedef struct _KeycodeDef
- {
- ParseCommon common;
- unsigned merge;
- char name[5];
- ExprDef *value;
- } KeycodeDef;
- typedef struct _KeyAliasDef
- {
- ParseCommon common;
- unsigned merge;
- char alias[5];
- char real[5];
- } KeyAliasDef;
- typedef struct _KeyTypeDef
- {
- ParseCommon common;
- unsigned merge;
- Atom name;
- VarDef *body;
- } KeyTypeDef;
- typedef struct _SymbolsDef
- {
- ParseCommon common;
- unsigned merge;
- char keyName[5];
- ExprDef *symbols;
- } SymbolsDef;
- typedef struct _ModMapDef
- {
- ParseCommon common;
- unsigned merge;
- Atom modifier;
- ExprDef *keys;
- } ModMapDef;
- typedef struct _GroupCompatDef
- {
- ParseCommon common;
- unsigned merge;
- int group;
- ExprDef *def;
- } GroupCompatDef;
- typedef struct _InterpDef
- {
- ParseCommon common;
- unsigned merge;
- KeySym sym;
- ExprDef *match;
- VarDef *def;
- Bool ignore;
- } InterpDef;
- typedef struct _IndicatorNameDef
- {
- ParseCommon common;
- unsigned merge;
- int ndx;
- ExprDef *name;
- Bool virtual;
- } IndicatorNameDef;
- typedef struct _OutlineDef
- {
- ParseCommon common;
- Atom field;
- int nPoints;
- ExprDef *points;
- } OutlineDef;
- typedef struct _ShapeDef
- {
- ParseCommon common;
- unsigned merge;
- Atom name;
- int nOutlines;
- OutlineDef *outlines;
- } ShapeDef;
- typedef struct _KeyDef
- {
- ParseCommon common;
- unsigned defined;
- char *name;
- ExprDef *expr;
- } KeyDef;
- typedef struct _RowDef
- {
- ParseCommon common;
- int nKeys;
- KeyDef *keys;
- } RowDef;
- typedef struct _SectionDef
- {
- ParseCommon common;
- unsigned merge;
- Atom name;
- int nRows;
- RowDef *rows;
- } SectionDef;
- typedef struct _OverlayKeyDef
- {
- ParseCommon common;
- char over[5];
- char under[5];
- } OverlayKeyDef;
- typedef struct _OverlayDef
- {
- ParseCommon common;
- unsigned merge;
- Atom name;
- int nKeys;
- OverlayKeyDef *keys;
- } OverlayDef;
- typedef struct _DoodadDef
- {
- ParseCommon common;
- unsigned merge;
- unsigned type;
- Atom name;
- VarDef *body;
- } DoodadDef;
- /* IndicatorMapDef doesn't use the type field, but the rest of the fields
- need to be at the same offsets as in DoodadDef. Use #define to avoid
- any strict aliasing problems. */
- #define IndicatorMapDef DoodadDef
- typedef struct _XkbFile
- {
- ParseCommon common;
- int type;
- char *topName;
- char *name;
- ParseCommon *defs;
- int id;
- unsigned flags;
- Bool compiled;
- } XkbFile;
- extern Bool CompileKeymap(XkbFile * /* file */ ,
- XkbFileInfo * /* result */ ,
- unsigned /* merge */
- );
- extern Bool CompileKeycodes(XkbFile * /* file */ ,
- XkbFileInfo * /* result */ ,
- unsigned /* merge */
- );
- extern Bool CompileGeometry(XkbFile * /* file */ ,
- XkbFileInfo * /* result */ ,
- unsigned /* merge */
- );
- extern Bool CompileKeyTypes(XkbFile * /* file */ ,
- XkbFileInfo * /* result */ ,
- unsigned /* merge */
- );
- typedef struct _LEDInfo *LEDInfoPtr;
- extern Bool CompileCompatMap(XkbFile * /* file */ ,
- XkbFileInfo * /* result */ ,
- unsigned /* merge */ ,
- LEDInfoPtr * /* unboundLEDs */
- );
- extern Bool CompileSymbols(XkbFile * /* file */ ,
- XkbFileInfo * /* result */ ,
- unsigned /* merge */
- );
- #define WantLongListing (1<<0)
- #define WantPartialMaps (1<<1)
- #define WantHiddenMaps (1<<2)
- #define WantFullNames (1<<3)
- #define ListRecursive (1<<4)
- extern char *rootDir;
- extern unsigned verboseLevel;
- extern unsigned dirsToStrip;
- extern Bool AddListing(char * /* file */ ,
- char * /* map */
- );
- extern Bool AddMatchingFiles(char * /* head_in */
- );
- extern int AddMapOnly(char * /* map */
- );
- extern int GenerateListing(char * /* filename */
- );
- #endif /* XKBCOMP_H */
|