XORG_CWARNFLAGS
PKG_CHECK_MODULES([X11], [xproto kbproto >= 1.0.99.1])
+PKG_CHECK_MODULES([XLIB], [x11])
dnl Ensure we have keysym headers
AC_MSG_CHECKING([for X11 includedir])
SUBDIRS = makekeys xkbcomp
-INCLUDES = -I$(top_srcdir)/include -I$(builddir)/makekeys
+INCLUDES = -I$(top_srcdir)/include -I$(builddir)/makekeys $(XLIB_CFLAGS)
AM_CFLAGS = $(X11_CFLAGS) $(CWARNFLAGS) $(XMALLOC_ZERO_CFLAGS)
lib_LTLIBRARIES = libxkbcommon.la
-libxkbcommon_la_LIBADD = xkbcomp/libxkbcomp.la
+libxkbcommon_la_LIBADD = xkbcomp/libxkbcomp.la $(XLIB_LIBS)
libxkbcommon_la_SOURCES = \
XKBcommonint.h \
alloc.c \
}
ExprDef *
-CreateKeysymList(KeySym sym)
+CreateKeysymList(char *sym)
{
ExprDef *def;
if (def)
{
def->value.list.nSyms = 1;
- def->value.list.szSyms = 2;
- def->value.list.syms = uTypedCalloc(2, KeySym);
+ def->value.list.szSyms = 4;
+ def->value.list.syms = uTypedCalloc(4, char *);
if (def->value.list.syms != NULL)
{
def->value.list.syms[0] = sym;
}
ExprDef *
-AppendKeysymList(ExprDef * list, KeySym sym)
+AppendKeysymList(ExprDef * list, char *sym)
{
if (list->value.list.nSyms >= list->value.list.szSyms)
{
list->value.list.syms = uTypedRecalloc(list->value.list.syms,
list->value.list.nSyms,
list->value.list.szSyms,
- KeySym);
+ char *);
if (list->value.list.syms == NULL)
{
FATAL("Couldn't resize list of symbols for append\n");
ExprDef * /* args */
);
-extern ExprDef *CreateKeysymList(KeySym /* sym */
+extern ExprDef *CreateKeysymList(char * /* sym */
);
extern ShapeDef *ShapeDeclCreate(Atom /* name */ ,
);
extern ExprDef *AppendKeysymList(ExprDef * /* list */ ,
- KeySym /* sym */
+ char * /* sym */
);
extern int LookupKeysym(char * /* str */ ,
#include "xkbmisc.h"
#include "tokens.h"
#include "expr.h"
+#include "parseutils.h"
#include <X11/extensions/XKBfilecommon.h>
#include <X11/keysym.h>
return False;
}
key->symsDefined |= (1 << ndx);
- memcpy((char *) key->syms[ndx], (char *) value->value.list.syms,
- nSyms * sizeof(KeySym));
+ for (i = 0; i < nSyms; i++) {
+ if (!LookupKeysym(value->value.list.syms[i], &key->syms[ndx][i])) {
+ WSGO("Could not resolve keysym %s\n", value->value.list.syms[i]);
+ key->syms[ndx][i] = NoSymbol;
+ }
+ }
for (i = key->numLevels[ndx] - 1;
(i >= 0) && (key->syms[ndx][i] == NoSymbol); i--)
{
{
int nSyms;
int szSyms;
- KeySym *syms;
+ char **syms;
} list;
struct
{
#define DEBUG_VAR parseDebug
#include "parseutils.h"
#include "xkbmisc.h"
+#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/extensions/XKBgeomcommon.h>
#include <stdlib.h>
XkbFile *file;
}
%type <ival> Number Integer Float SignedNumber
-%type <uval> XkbCompositeType FileType MergeMode OptMergeMode KeySym
+%type <uval> XkbCompositeType FileType MergeMode OptMergeMode
%type <uval> DoodadType Flag Flags OptFlags
-%type <str> KeyName MapName OptMapName
+%type <str> KeyName MapName OptMapName KeySym
%type <sval> FieldSpec Ident Element String
%type <any> DeclList Decl
%type <expr> OptExprList ExprList Expr Term Lhs Terminal ArrayInit
;
InterpretMatch : KeySym PLUS Expr
- { $$= InterpCreate((KeySym)$1,$3); }
+ { $$= InterpCreate(XStringToKeysym($1), $3); }
| KeySym
- { $$= InterpCreate((KeySym)$1,NULL); }
+ { $$= InterpCreate(XStringToKeysym($1), NULL); }
;
VarDeclList : VarDeclList VarDecl
;
KeySymList : KeySymList COMMA KeySym
- { $$= AppendKeysymList($1,(KeySym)$3); }
+ { $$= AppendKeysymList($1,$3); }
| KeySym
- { $$= CreateKeysymList((KeySym)$1); }
+ { $$= CreateKeysymList($1); }
;
-KeySym : IDENT
+KeySym : IDENT { $$= scanStr; scanStr= NULL; }
+ | SECTION { $$= strdup("section"); }
+ | Integer
{
- KeySym sym;
- if (LookupKeysym(scanStr,&sym))
- $$= sym;
+ if ($1 < 10) { /* XK_0 .. XK_9 */
+ $$= malloc(2);
+ $$[0]= $1 + '0';
+ $$[1]= '\0';
+ }
else {
- char buf[120];
- snprintf(buf, sizeof(buf),
- "expected keysym, got %s",
- uStringText(scanStr));
- yyerror(buf);
- yynerrs++;
- $$= NoSymbol;
+ $$= malloc(17);
+ snprintf($$, 17, "%x", $1);
}
}
- | SECTION
- {
- $$= XK_section;
- }
- | Integer
- {
- if ($1<10) $$= $1+'0'; /* XK_0 .. XK_9 */
- else $$= $1;
- }
;
SignedNumber : MINUS Number { $$= -$2; }