summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Triplett <josh@freedesktop.org>2006-02-18 16:49:41 -0800
committerJosh Triplett <josh@josh-mobile.localdomain>2006-02-18 16:49:41 -0800
commit7944b54ff8d97e29dad9947aac05780e5c389737 (patch)
treec893364b631a5c2eb47cf34f8e05993a97c5d8e3
Remove xcl and CVSROOT.
-rw-r--r--.cvsignore14
-rw-r--r--Doxyfile139
-rw-r--r--atom/.cvsignore11
-rw-r--r--atom/Makefile.am27
-rw-r--r--atom/atomlist.m471
-rw-r--r--atom/atoms.gperf.m4108
-rw-r--r--atom/xcb-atom.pc.in11
-rw-r--r--atom/xcb_atom.h.m426
-rwxr-xr-xautogen.sh3
-rw-r--r--configure.ac33
-rw-r--r--event/.cvsignore8
-rw-r--r--event/Makefile.am16
-rw-r--r--event/events.c88
-rw-r--r--event/xcb-event.pc.in11
-rw-r--r--event/xcb_event.h59
-rw-r--r--xcb_util_intro.in21
16 files changed, 646 insertions, 0 deletions
diff --git a/.cvsignore b/.cvsignore
new file mode 100644
index 0000000..ed2f649
--- /dev/null
+++ b/.cvsignore
@@ -0,0 +1,14 @@
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
diff --git a/Doxyfile b/Doxyfile
new file mode 100644
index 0000000..b915677
--- /dev/null
+++ b/Doxyfile
@@ -0,0 +1,139 @@
+PROJECT_NAME = XCB Utility
+PROJECT_NUMBER =
+OUTPUT_DIRECTORY = doc/
+INPUT = xcb_util_intro image/
+IMAGE_PATH = doc/img
+OUTPUT_LANGUAGE = English
+GENERATE_HTML = YES
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_ALIGN_MEMBERS = YES
+ENUM_VALUES_PER_LINE = 1
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+BINARY_TOC = NO
+TOC_EXPAND = NO
+DISABLE_INDEX = NO
+EXTRACT_ALL = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_STATIC = NO
+EXTRACT_LOCAL_CLASSES = NO
+HIDE_UNDOC_MEMBERS = YES
+HIDE_UNDOC_CLASSES = YES
+HIDE_FRIEND_COMPOUNDS = YES
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = YES
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = NO
+STRIP_FROM_PATH =
+INTERNAL_DOCS = NO
+STRIP_CODE_COMMENTS = YES
+CASE_SENSE_NAMES = YES
+SHORT_NAMES = NO
+HIDE_SCOPE_NAMES = NO
+VERBATIM_HEADERS = NO
+SHOW_INCLUDE_FILES = NO
+JAVADOC_AUTOBRIEF = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP = NO
+INHERIT_DOCS = YES
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = YES
+DISTRIBUTE_GROUP_DOC = NO
+TAB_SIZE = 2
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+ALIASES =
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+OPTIMIZE_OUTPUT_FOR_C = YES
+OPTIMIZE_OUTPUT_JAVA = NO
+SHOW_USED_FILES = NO
+QUIET = NO
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+FILE_PATTERNS =
+RECURSIVE = NO
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS =
+EXAMPLE_RECURSIVE = NO
+INPUT_FILTER =
+FILTER_SOURCE_FILES = NO
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION = YES
+ALPHABETICAL_INDEX = YES
+COLS_IN_ALPHA_INDEX = 2
+IGNORE_PREFIX =
+GENERATE_TREEVIEW = NO
+TREEVIEW_WIDTH = 250
+GENERATE_LATEX = YES
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4wide
+EXTRA_PACKAGES =
+LATEX_HEADER =
+PDF_HYPERLINKS = YES
+USE_PDFLATEX = NO
+LATEX_BATCHMODE = NO
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+GENERATE_MAN = YES
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_LINKS = YES
+GENERATE_XML = YES
+XML_SCHEMA =
+XML_DTD =
+GENERATE_AUTOGEN_DEF = NO
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = NO
+EXPAND_ONLY_PREDEF = NO
+SEARCH_INCLUDES = NO
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED =
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+PERL_PATH = /usr/bin/perl
+CLASS_DIAGRAMS = NO
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = NO
+CLASS_GRAPH = NO
+COLLABORATION_GRAPH = NO
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = NO
+INCLUDED_BY_GRAPH = NO
+GRAPHICAL_HIERARCHY = NO
+DOT_IMAGE_FORMAT = png
+DOT_PATH =
+DOTFILE_DIRS =
+MAX_DOT_GRAPH_WIDTH = 512
+MAX_DOT_GRAPH_HEIGHT = 512
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
+SEARCHENGINE = NO
diff --git a/atom/.cvsignore b/atom/.cvsignore
new file mode 100644
index 0000000..829115e
--- /dev/null
+++ b/atom/.cvsignore
@@ -0,0 +1,11 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.loT
+*.la
+*.pc
+atoms.c
+atoms.gperf
+xcb_atom.h
diff --git a/atom/Makefile.am b/atom/Makefile.am
new file mode 100644
index 0000000..247dc6f
--- /dev/null
+++ b/atom/Makefile.am
@@ -0,0 +1,27 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+lib_LTLIBRARIES = libXCBAtom.la
+
+xcbinclude_HEADERS = xcb_atom.h
+
+AM_CFLAGS = -Wall
+INCLUDES = $(XCB_CFLAGS)
+LDADD = $(XCB_LIBS)
+
+libXCBAtom_la_SOURCES = atoms.c
+
+pkgconfig_DATA = xcb-atom.pc
+
+EXTRA_DIST = xcb-atom.pc.in
+
+BUILT_SOURCES = atoms.c atoms.gperf xcb_atom.h
+
+%.c: %.gperf
+ $(GPERF) --output-file $@ $*.gperf
+
+atoms.gperf: atomlist.m4
+xcb_atom.h: atomlist.m4
+
+%: %.m4
+ $(M4) $< > $@
diff --git a/atom/atomlist.m4 b/atom/atomlist.m4
new file mode 100644
index 0000000..1c84740
--- /dev/null
+++ b/atom/atomlist.m4
@@ -0,0 +1,71 @@
+define(`FOREACH', `ifelse(`$1', , , `DO($1)
+FOREACH(shift($@))')')FOREACH(
+PRIMARY,
+SECONDARY,
+ARC,
+ATOM,
+BITMAP,
+CARDINAL,
+COLORMAP,
+CURSOR,
+CUT_BUFFER0,
+CUT_BUFFER1,
+CUT_BUFFER2,
+CUT_BUFFER3,
+CUT_BUFFER4,
+CUT_BUFFER5,
+CUT_BUFFER6,
+CUT_BUFFER7,
+DRAWABLE,
+FONT,
+INTEGER,
+PIXMAP,
+POINT,
+RECTANGLE,
+RESOURCE_MANAGER,
+RGB_COLOR_MAP,
+RGB_BEST_MAP,
+RGB_BLUE_MAP,
+RGB_DEFAULT_MAP,
+RGB_GRAY_MAP,
+RGB_GREEN_MAP,
+RGB_RED_MAP,
+STRING,
+VISUALID,
+WINDOW,
+WM_COMMAND,
+WM_HINTS,
+WM_CLIENT_MACHINE,
+WM_ICON_NAME,
+WM_ICON_SIZE,
+WM_NAME,
+WM_NORMAL_HINTS,
+WM_SIZE_HINTS,
+WM_ZOOM_HINTS,
+MIN_SPACE,
+NORM_SPACE,
+MAX_SPACE,
+END_SPACE,
+SUPERSCRIPT_X,
+SUPERSCRIPT_Y,
+SUBSCRIPT_X,
+SUBSCRIPT_Y,
+UNDERLINE_POSITION,
+UNDERLINE_THICKNESS,
+STRIKEOUT_ASCENT,
+STRIKEOUT_DESCENT,
+ITALIC_ANGLE,
+X_HEIGHT,
+QUAD_WIDTH,
+WEIGHT,
+POINT_SIZE,
+RESOLUTION,
+COPYRIGHT,
+NOTICE,
+FONT_NAME,
+FAMILY_NAME,
+FULL_NAME,
+CAP_HEIGHT,
+WM_CLASS,
+WM_TRANSIENT_FOR,
+)dnl
diff --git a/atom/atoms.gperf.m4 b/atom/atoms.gperf.m4
new file mode 100644
index 0000000..63c98db
--- /dev/null
+++ b/atom/atoms.gperf.m4
@@ -0,0 +1,108 @@
+%{
+#include <X11/XCB/xcb.h>
+#include <stdlib.h>
+#include "xcb_atom.h"
+
+define(`COUNT', 0)dnl
+define(`DO', `const XCBATOM $1 = { define(`COUNT', incr(COUNT))COUNT };')dnl
+include(atomlist.m4)`'dnl
+%}
+
+%readonly-tables
+%pic
+%null-strings
+%enum
+%includes
+%compare-strncmp
+
+%struct-type
+struct atom_map { int name; XCBATOM value; };
+%%
+define(`DO', `$1,{ define(`COUNT', incr(COUNT))COUNT }')dnl
+include(atomlist.m4)`'dnl
+%%
+static const char *const atom_names[] = {
+define(`DO', ` "$1",')dnl
+include(atomlist.m4)`'dnl
+};
+
+XCBATOM InternAtomPredefined(CARD16 name_len, const char *name)
+{
+ const struct atom_map *value = in_word_set(name, name_len);
+ XCBATOM ret = { None };
+ if(value)
+ ret = value->value;
+ return ret;
+}
+
+InternAtomFastCookie InternAtomFast(XCBConnection *c, BOOL only_if_exists, CARD16 name_len, const char *name)
+{
+ InternAtomFastCookie cookie;
+
+ if((cookie.u.atom = InternAtomPredefined(name_len, name)).xid != None)
+ {
+ cookie.tag = TAG_VALUE;
+ return cookie;
+ }
+
+ cookie.tag = TAG_COOKIE;
+ cookie.u.cookie = XCBInternAtom(c, only_if_exists, name_len, name);
+ return cookie;
+}
+
+XCBATOM InternAtomFastReply(XCBConnection *c, InternAtomFastCookie cookie, XCBGenericError **e)
+{
+ switch(cookie.tag)
+ {
+ XCBInternAtomRep *reply;
+ case TAG_VALUE:
+ if(e)
+ *e = 0;
+ break;
+ case TAG_COOKIE:
+ reply = XCBInternAtomReply(c, cookie.u.cookie, e);
+ if(reply)
+ {
+ cookie.u.atom = reply->atom;
+ free(reply);
+ }
+ else
+ cookie.u.atom.xid = 0;
+ break;
+ }
+ return cookie.u.atom;
+}
+
+const char *GetAtomNamePredefined(XCBATOM atom)
+{
+ if(atom.xid <= 0 || atom.xid > (sizeof(atom_names) / sizeof(*atom_names)))
+ return 0;
+ return atom_names[atom.xid - 1];
+}
+
+int GetAtomName(XCBConnection *c, XCBATOM atom, const char **namep, int *lengthp)
+{
+ static char buf[100];
+ const char *name = GetAtomNamePredefined(atom);
+ int len;
+ XCBGetAtomNameCookie atomc;
+ XCBGetAtomNameRep *atomr;
+ if(name)
+ {
+ *namep = name;
+ *lengthp = strlen(name);
+ return 1;
+ }
+ atomc = XCBGetAtomName(c, atom);
+ atomr = XCBGetAtomNameReply(c, atomc, 0);
+ if(!atomr)
+ return 0;
+ len = XCBGetAtomNameNameLength(atomr);
+ if(len > sizeof(buf))
+ len = sizeof(buf);
+ *lengthp = len;
+ memcpy(buf, XCBGetAtomNameName(atomr), len);
+ *namep = buf;
+ free(atomr);
+ return 1;
+}
diff --git a/atom/xcb-atom.pc.in b/atom/xcb-atom.pc.in
new file mode 100644
index 0000000..cda6d42
--- /dev/null
+++ b/atom/xcb-atom.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCBAtom
+Description: XCB atom cache
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lXCBAtom @LIBS@
+Cflags: -I${includedir}
diff --git a/atom/xcb_atom.h.m4 b/atom/xcb_atom.h.m4
new file mode 100644
index 0000000..7a88cfc
--- /dev/null
+++ b/atom/xcb_atom.h.m4
@@ -0,0 +1,26 @@
+#ifndef ATOMS_H
+#define ATOMS_H
+
+enum tag_t {
+ TAG_COOKIE,
+ TAG_VALUE
+};
+typedef struct {
+ enum tag_t tag;
+ union {
+ XCBInternAtomCookie cookie;
+ XCBATOM atom;
+ } u;
+} InternAtomFastCookie;
+
+XCBATOM InternAtomPredefined(CARD16 name_len, const char *name);
+InternAtomFastCookie InternAtomFast(XCBConnection *c, BOOL only_if_exists, CARD16 name_len, const char *name);
+XCBATOM InternAtomFastReply(XCBConnection *c, InternAtomFastCookie cookie, XCBGenericError **e);
+
+const char *GetAtomNamePredefined(XCBATOM atom);
+int GetAtomName(XCBConnection *c, XCBATOM atom, const char **namep, int *lengthp);
+
+define(`DO', `extern const XCBATOM $1;')dnl
+include(atomlist.m4)`'dnl
+
+#endif /* ATOMS_H */
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..d68a142
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,3 @@
+#! /bin/sh
+autoreconf -v --install || exit 1
+./configure "$@"
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..4f5bbd7
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,33 @@
+AC_PREREQ(2.57)
+AC_INIT([xcb-util],0.1,[jamey@minilop.net])
+AC_CONFIG_SRCDIR([Makefile.am])
+AM_INIT_AUTOMAKE([foreign dist-bzip2])
+
+AC_CHECK_PROGS(M4, m4)
+AC_CHECK_PROGS(GPERF, gperf, [no])
+if test $GPERF = "no"; then
+ AC_MSG_ERROR([Can't find gperf, please install it and try again])
+fi
+AC_PROG_CC
+AC_PROG_LIBTOOL
+
+xcbincludedir='${includedir}/X11/XCB'
+AC_SUBST(xcbincludedir)
+
+pkgconfigdir='${libdir}/pkgconfig'
+AC_SUBST(pkgconfigdir)
+
+PKG_CHECK_MODULES(XCB, xcb)
+
+AC_OUTPUT([Makefile
+ convenient/Makefile convenient/xcb-aux.pc
+ reply/Makefile reply/xcb-reply.pc
+ image/Makefile image/xcb-image.pc
+ atom/Makefile atom/xcb-atom.pc
+ event/Makefile event/xcb-event.pc
+ keysyms/Makefile keysyms/xcb-keysyms.pc
+ property/Makefile property/xcb-property.pc
+ icccm/Makefile icccm/xcb-icccm.pc
+ wm/Makefile wm/xcb-wm.pc
+ xcb_util_intro
+ ])
diff --git a/event/.cvsignore b/event/.cvsignore
new file mode 100644
index 0000000..65e939d
--- /dev/null
+++ b/event/.cvsignore
@@ -0,0 +1,8 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.loT
+*.la
+*.pc
diff --git a/event/Makefile.am b/event/Makefile.am
new file mode 100644
index 0000000..2b83c56
--- /dev/null
+++ b/event/Makefile.am
@@ -0,0 +1,16 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+lib_LTLIBRARIES = libXCBEvent.la
+
+xcbinclude_HEADERS = xcb_event.h
+
+AM_CFLAGS = -Wall
+INCLUDES = $(XCB_CFLAGS)
+LDADD = $(XCB_LIBS)
+
+libXCBEvent_la_SOURCES = events.c
+
+pkgconfig_DATA = xcb-event.pc
+
+EXTRA_DIST = xcb-event.pc.in
diff --git a/event/events.c b/event/events.c
new file mode 100644
index 0000000..6649eee
--- /dev/null
+++ b/event/events.c
@@ -0,0 +1,88 @@
+#include <assert.h>
+#include <stdlib.h>
+
+#include "xcb_event.h"
+
+typedef struct {
+ GenericEventHandler handler;
+ void *data;
+} EventHandler;
+
+struct EventHandlers {
+ EventHandler event[126];
+ EventHandler error[256];
+ XCBConnection *c;
+};
+
+EventHandlers *allocEventHandlers(XCBConnection *c)
+{
+ EventHandlers *ret = calloc(1, sizeof(EventHandlers));
+ if(ret)
+ ret->c = c;
+ return ret;
+}
+
+void freeEventHandlers(EventHandlers *evenths)
+{
+ free(evenths);
+}
+
+XCBConnection *getXCBConnection(EventHandlers *evenths)
+{
+ return evenths->c;
+}
+
+static EventHandler *getEventHandler(EventHandlers *evenths, int event)
+{
+ assert(event < 256);
+ event &= 0x7f;
+ assert(event >= 2);
+ return &evenths->event[event - 2];
+}
+
+static EventHandler *getErrorHandler(EventHandlers *evenths, int error)
+{
+ assert(error >= 0 && error < 256);
+ return &evenths->error[error];
+}
+
+static int handleEvent(EventHandlers *evenths, XCBGenericEvent *event)
+{
+ EventHandler *eventh = 0;
+ assert(event->response_type != 1);
+
+ if(event->response_type == 0)
+ eventh = getErrorHandler(evenths, ((XCBGenericError *) event)->error_code);
+ else
+ eventh = getEventHandler(evenths, event->response_type);
+
+ if(eventh->handler)
+ return eventh->handler(eventh->data, evenths->c, event);
+ return 0;
+}
+
+void eventLoop(EventHandlers *evenths)
+{
+ XCBGenericEvent *event;
+ while((event = XCBWaitForEvent(evenths->c)))
+ {
+ handleEvent(evenths, event);
+ free(event);
+ }
+}
+
+static void setHandler(GenericEventHandler handler, void *data, EventHandler *place)
+{
+ EventHandler eventh = { handler, data };
+ *place = eventh;
+}
+
+void setEventHandler(EventHandlers *evenths, int event, GenericEventHandler handler, void *data)
+{
+ setHandler(handler, data, getEventHandler(evenths, event));
+}
+
+void setErrorHandler(EventHandlers *evenths, int error, GenericErrorHandler handler, void *data)
+{
+ setHandler((GenericEventHandler) handler, data, getErrorHandler(evenths, error));
+}
diff --git a/event/xcb-event.pc.in b/event/xcb-event.pc.in
new file mode 100644
index 0000000..863fc6e
--- /dev/null
+++ b/event/xcb-event.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCBEvent
+Description: XCB event callback interface
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lXCBEvent @LIBS@
+Cflags: -I${includedir}
diff --git a/event/xcb_event.h b/event/xcb_event.h
new file mode 100644
index 0000000..5d94e4b
--- /dev/null
+++ b/event/xcb_event.h
@@ -0,0 +1,59 @@
+#ifndef EVENTS_H
+#define EVENTS_H
+
+#include <X11/XCB/xcb.h>
+
+typedef struct EventHandlers EventHandlers;
+EventHandlers *allocEventHandlers(XCBConnection *c);
+void freeEventHandlers(EventHandlers *evenths);
+XCBConnection *getXCBConnection(EventHandlers *evenths);
+
+void eventLoop(EventHandlers *evenths);
+
+typedef int (*GenericEventHandler)(void *data, XCBConnection *c, XCBGenericEvent *event);
+typedef int (*GenericErrorHandler)(void *data, XCBConnection *c, XCBGenericError *error);
+
+void setEventHandler(EventHandlers *evenths, int event, GenericEventHandler handler, void *data);
+void setErrorHandler(EventHandlers *evenths, int error, GenericErrorHandler handler, void *data);
+
+#define MAKE_HANDLER(cls,kind) \
+static inline void set##kind##cls##Handler(EventHandlers *evenths, int (*handler)(void *, XCBConnection *, XCB##kind##cls *), void *data) \
+{ \
+ set##cls##Handler(evenths, XCB##kind, (GenericEventHandler) handler, data); \
+}
+
+MAKE_HANDLER(Event, KeyPress)
+MAKE_HANDLER(Event, KeyRelease)
+MAKE_HANDLER(Event, ButtonPress)
+MAKE_HANDLER(Event, ButtonRelease)
+MAKE_HANDLER(Event, MotionNotify)
+MAKE_HANDLER(Event, EnterNotify)
+MAKE_HANDLER(Event, LeaveNotify)
+MAKE_HANDLER(Event, FocusIn)
+MAKE_HANDLER(Event, FocusOut)
+MAKE_HANDLER(Event, KeymapNotify)
+MAKE_HANDLER(Event, Expose)
+MAKE_HANDLER(Event, GraphicsExposure)
+MAKE_HANDLER(Event, NoExposure)
+MAKE_HANDLER(Event, VisibilityNotify)
+MAKE_HANDLER(Event, CreateNotify)
+MAKE_HANDLER(Event, DestroyNotify)
+MAKE_HANDLER(Event, UnmapNotify)
+MAKE_HANDLER(Event, MapNotify)
+MAKE_HANDLER(Event, MapRequest)
+MAKE_HANDLER(Event, ReparentNotify)
+MAKE_HANDLER(Event, ConfigureNotify)
+MAKE_HANDLER(Event, ConfigureRequest)
+MAKE_HANDLER(Event, GravityNotify)
+MAKE_HANDLER(Event, ResizeRequest)
+MAKE_HANDLER(Event, CirculateNotify)
+MAKE_HANDLER(Event, CirculateRequest)
+MAKE_HANDLER(Event, PropertyNotify)
+MAKE_HANDLER(Event, SelectionClear)
+MAKE_HANDLER(Event, SelectionRequest)
+MAKE_HANDLER(Event, SelectionNotify)
+MAKE_HANDLER(Event, ColormapNotify)
+MAKE_HANDLER(Event, ClientMessage)
+MAKE_HANDLER(Event, MappingNotify)
+
+#endif /* EVENTS_H */
diff --git a/xcb_util_intro.in b/xcb_util_intro.in
new file mode 100644
index 0000000..482d658
--- /dev/null
+++ b/xcb_util_intro.in
@@ -0,0 +1,21 @@
+/**
+@file
+@brief XCB Utility functions
+
+These routines are used to facilitate the use of XCB in programs
+*/
+
+/**
+
+@mainpage XCB Utility Documentation
+@version @PACKAGE_VERSION@
+@author Jamey Sharp <jamey@minilop.net>
+@author Vincent Torri <torri@iecn.u-nancy.fr>
+@date 2005
+
+
+@section intro What is available ?
+
+@todo Add more functions in XCBAux
+
+*/