Use common XKB headers and add common type XkbcDescRec Switched to the common XKB headers which don't contain Xlib pollution. A new common keyboard description type, XkbcDescRec, has been added. This is the XkbDescRec definitions in xkbstr.h in the xserver since it contains the defined field we'll need.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
diff --git a/configure.ac b/configure.ac
index 85ba79c..b03baa4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -48,7 +48,7 @@ if test "x$CC_FOR_BUILD" = x; then
fi
fi
-PKG_CHECK_MODULES([X11], [xproto])
+PKG_CHECK_MODULES([X11], [xproto kbproto >= 1.0.99.1])
dnl Ensure we have keysym headers
AC_MSG_CHECKING([for X11 includedir])
diff --git a/include/X11/XkbCommon.h b/include/X11/XkbCommon.h
index 16cca77..416817d 100644
--- a/include/X11/XkbCommon.h
+++ b/include/X11/XkbCommon.h
@@ -29,7 +29,26 @@ authorization from the authors.
#define _XKBCOMMON_H_
#include <X11/X.h>
+#include <X11/Xdefs.h>
#include <X11/keysymdef.h>
+#include <X11/extensions/XKBstrcommon.h>
+
+/* Common keyboard description structure */
+typedef struct _XkbcDesc {
+ unsigned int defined;
+ unsigned short flags;
+ unsigned short device_spec;
+ KeyCode min_key_code;
+ KeyCode max_key_code;
+
+ XkbControlsPtr ctrls;
+ XkbServerMapPtr server;
+ XkbClientMapPtr map;
+ XkbIndicatorPtr indicators;
+ XkbNamesPtr names;
+ XkbCompatMapPtr compat;
+ XkbGeometryPtr geom;
+} XkbcDescRec, *XkbcDescPtr;
extern char *
XkbcKeysymToString(KeySym ks);