#ifndef XKBCOMP_H
#define XKBCOMP_H 1
-#ifndef DEBUG_VAR
-#define DEBUG_VAR debugFlags
-#endif
-
-#include <X11/X.h>
-#include <X11/Xdefs.h>
-
-#include "utils.h"
-
-#include <X11/extensions/XKM.h>
-#include <X11/extensions/XKBstrcommon.h>
-#include <X11/extensions/XKBrulescommon.h>
-#include "X11/extensions/XKBcommon.h"
-#include "XKBcommonint.h"
-
-extern char *scanFile;
+#include "xkb-priv.h"
#define TypeUnknown 0
#define TypeBoolean 1
#define TypeInt 2
-#define TypeFloat 3
#define TypeString 4
#define TypeAction 5
#define TypeKeyName 6
#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
#define ExprArrayRef 4
#define ExprKeysymList 5
#define ExprActionList 6
-#define ExprCoord 7
#define OpAdd 20
#define OpSubtract 21
} binary;
struct
{
- Atom element;
- Atom field;
+ xkb_atom_t element;
+ xkb_atom_t field;
} field;
struct
{
- Atom element;
- Atom field;
+ xkb_atom_t element;
+ xkb_atom_t field;
struct _Expr *entry;
} array;
struct
{
- Atom name;
+ xkb_atom_t name;
struct _Expr *args;
} action;
struct
{
int nSyms;
int szSyms;
- KeySym *syms;
+ char **syms;
+ int nLevels;
+ int szLevels;
+ int *symsMapIndex;
+ unsigned int *symsNumEntries;
} list;
- struct
- {
- int x;
- int y;
- } coord;
struct _Expr *child;
- Atom str;
+ xkb_atom_t str;
unsigned uval;
int ival;
char keyName[5];
- Opaque ptr;
} value;
} ExprDef;
{
ParseCommon common;
unsigned merge;
- Atom name;
+ xkb_atom_t name;
ExprDef *value;
} VModDef;
ParseCommon common;
unsigned merge;
char name[5];
- ExprDef *value;
+ unsigned long value;
} KeycodeDef;
typedef struct _KeyAliasDef
{
ParseCommon common;
unsigned merge;
- Atom name;
+ xkb_atom_t name;
VarDef *body;
} KeyTypeDef;
{
ParseCommon common;
unsigned merge;
- Atom modifier;
+ xkb_atom_t modifier;
ExprDef *keys;
} ModMapDef;
{
ParseCommon common;
unsigned merge;
- KeySym sym;
+ char *sym;
ExprDef *match;
VarDef *def;
} InterpDef;
unsigned merge;
int ndx;
ExprDef *name;
- Bool virtual;
+ 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
+typedef struct _IndicatorMapDef
{
ParseCommon common;
unsigned merge;
unsigned type;
- Atom name;
+ xkb_atom_t 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
+} IndicatorMapDef;
typedef struct _XkbFile
{
ParseCommon common;
- int type;
+ unsigned type;
char *topName;
char *name;
ParseCommon *defs;
int id;
unsigned flags;
- Bool compiled;
} XkbFile;
-extern Bool
-CompileKeymap(XkbFile *file, XkbcDescPtr xkb, unsigned merge);
-
-extern Bool
-CompileKeycodes(XkbFile *file, XkbcDescPtr xkb, unsigned merge);
+extern struct xkb_keymap *
+CompileKeymap(struct xkb_ctx *ctx, XkbFile *file);
-extern Bool
-CompileGeometry(XkbFile *file, XkbcDescPtr xkb, unsigned merge);
+extern bool
+CompileKeycodes(XkbFile *file, struct xkb_keymap *keymap, unsigned merge);
-extern Bool
-CompileKeyTypes(XkbFile *file, XkbcDescPtr xkb, unsigned merge);
+extern bool
+CompileKeyTypes(XkbFile *file, struct xkb_keymap *keymap, unsigned merge);
typedef struct _LEDInfo *LEDInfoPtr;
-extern Bool
-CompileCompatMap(XkbFile *file, XkbcDescPtr xkb, unsigned merge,
+extern bool
+CompileCompatMap(XkbFile *file, struct xkb_keymap *keymap, unsigned merge,
LEDInfoPtr *unboundLEDs);
-extern Bool
-CompileSymbols(XkbFile *file, XkbcDescPtr xkb, unsigned merge);
+extern bool
+CompileSymbols(XkbFile *file, struct xkb_keymap *keymap, unsigned merge);
#endif /* XKBCOMP_H */