#ifndef XKBCOMP_H
#define XKBCOMP_H 1
#ifndef DEBUG_VAR
#define DEBUG_VAR_NOT_LOCAL
#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;
KeySym * 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;
} 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;
#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 * ,
XkbFileInfo * ,
unsigned
);
extern Bool CompileKeycodes(
XkbFile * ,
XkbFileInfo * ,
unsigned
);
extern Bool CompileGeometry(
XkbFile * ,
XkbFileInfo * ,
unsigned
);
extern Bool CompileKeyTypes(
XkbFile * ,
XkbFileInfo * ,
unsigned
);
typedef struct _LEDInfo *LEDInfoPtr;
extern Bool CompileCompatMap(
XkbFile * ,
XkbFileInfo * ,
unsigned ,
LEDInfoPtr *
);
extern Bool CompileSymbols(
XkbFile * ,
XkbFileInfo * ,
unsigned
);
#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 * ,
char *
);
extern Bool AddMatchingFiles(
char *
);
extern int AddMapOnly(
char *
);
extern int GenerateListing(
char *
);
#endif