diff options
author | Josh Triplett <josh@freedesktop.org> | 2006-02-18 16:49:41 -0800 |
---|---|---|
committer | Josh Triplett <josh@josh-mobile.localdomain> | 2006-02-18 16:49:41 -0800 |
commit | d9709cda9f028b11fb0f6a9cef792a90222d3219 (patch) | |
tree | fe4e30bbb1f1c7b2668e730843fda067cf7c2a9b |
Remove xcl and CVSROOT.
-rw-r--r-- | .cvsignore | 14 | ||||
-rw-r--r-- | Doxyfile | 139 | ||||
-rwxr-xr-x | autogen.sh | 3 | ||||
-rw-r--r-- | configure.ac | 33 | ||||
-rw-r--r-- | keysyms/Makefile.am | 16 | ||||
-rw-r--r-- | keysyms/keysyms.c | 378 | ||||
-rw-r--r-- | keysyms/xcb-keysyms.pc.in | 11 | ||||
-rw-r--r-- | keysyms/xcb_keysyms.h | 49 | ||||
-rw-r--r-- | xcb_util_intro.in | 21 |
9 files changed, 664 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/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/keysyms/Makefile.am b/keysyms/Makefile.am new file mode 100644 index 0000000..1d602f3 --- /dev/null +++ b/keysyms/Makefile.am @@ -0,0 +1,16 @@ + +MAINTAINERCLEANFILES = Makefile.in + +lib_LTLIBRARIES = libXCBKeysyms.la + +xcbinclude_HEADERS = xcb_keysyms.h + +AM_CFLAGS = -Wall +INCLUDES = $(XCB_CFLAGS) +LDADD = $(XCB_LIBS) + +libXCBKeysyms_la_SOURCES = keysyms.c + +pkgconfig_DATA = xcb-keysyms.pc + +EXTRA_DIST=xcb-keysyms.pc.in diff --git a/keysyms/keysyms.c b/keysyms/keysyms.c new file mode 100644 index 0000000..f713450 --- /dev/null +++ b/keysyms/keysyms.c @@ -0,0 +1,378 @@ +#include <malloc.h> + +#include <X11/XCB/xcb.h> +#define XK_MISCELLANY +#define XK_XKB_KEYS +#define XK_LATIN1 +#define XK_LATIN2 +#define XK_LATIN3 +#define XK_LATIN4 +#define XK_CYRILLIC +#define XK_GREEK +#define XK_ARMENIAN +#include <X11/keysymdef.h> + +#include "xcb_keysyms.h" + +/* Private declaration */ +enum tag_t { + TAG_COOKIE, + TAG_VALUE +}; + +struct _XCBKeySymbols +{ + XCBConnection *c; + enum tag_t tag; + union { + XCBGetKeyboardMappingCookie cookie; + XCBGetKeyboardMappingRep *reply; + } u; +}; + +static void XCBConvertCase(XCBKEYSYM sym, + XCBKEYSYM *lower, + XCBKEYSYM *upper); + +static void XCBKeySymbolsGetReply (XCBKeySymbols *syms, + XCBGenericError **e); + +/* public implementation */ + +XCBKeySymbols * +XCBKeySymbolsAlloc (XCBConnection *c) +{ + XCBKeySymbols *syms; + XCBKEYCODE min_keycode; + XCBKEYCODE max_keycode; + + if (!c) + return NULL; + + syms = (XCBKeySymbols *)malloc (sizeof (XCBKeySymbols)); + + syms->c = c; + syms->tag = TAG_COOKIE; + + min_keycode = XCBGetSetup (c)->min_keycode; + max_keycode = XCBGetSetup (c)->max_keycode; + + syms->u.cookie = XCBGetKeyboardMapping(c, + min_keycode, + max_keycode.id - min_keycode.id + 1); + + return syms; +} + +void +XCBKeySymbolsFree (XCBKeySymbols *syms) +{ + if (syms) + { + if (syms->tag == TAG_VALUE) + free (syms->u.reply); + free (syms); + syms = NULL; + } +} + +XCBKEYSYM XCBKeySymbolsGetKeysym (XCBKeySymbols *syms, + XCBKEYCODE keycode, + int col) +{ + XCBKEYSYM *keysyms; + XCBKEYSYM keysym_null = { 0 }; + XCBKEYSYM lsym; + XCBKEYSYM usym; + XCBKEYCODE min_keycode; + XCBKEYCODE max_keycode; + int per; + + if (!syms) + return keysym_null; + + XCBKeySymbolsGetReply (syms, NULL); + + keysyms = XCBGetKeyboardMappingKeysyms (syms->u.reply); + min_keycode = XCBGetSetup (syms->c)->min_keycode; + max_keycode = XCBGetSetup (syms->c)->max_keycode; + + per = syms->u.reply->keysyms_per_keycode; + if ((col < 0) || ((col >= per) && (col > 3)) || + (keycode.id < min_keycode.id) || + (keycode.id > max_keycode.id)) + return keysym_null; + + keysyms = &keysyms[(keycode.id - min_keycode.id) * per]; + if (col < 4) + { + if (col > 1) + { + while ((per > 2) && (keysyms[per - 1].id == 0)) + per--; + if (per < 3) + col -= 2; + } + if ((per <= (col|1)) || (keysyms[col|1].id == 0)) + { + XCBConvertCase(keysyms[col&~1], &lsym, &usym); + if (!(col & 1)) + return lsym; + else if (usym.id == lsym.id) + return keysym_null; + else + return usym; + } + } + return keysyms[col]; +} + + +XCBKEYCODE +XCBKeySymbolsGetKeycode (XCBKeySymbols *syms, + XCBKEYSYM keysym) +{ + XCBKEYSYM ks; + XCBKEYCODE keycode_null = { 0 }; + int i, j; + + if (!syms) + return keycode_null; + + XCBKeySymbolsGetReply (syms, NULL); + + for (j = 0; j < syms->u.reply->keysyms_per_keycode; j++) + { + for (i = XCBGetSetup (syms->c)->min_keycode.id; i <= XCBGetSetup (syms->c)->max_keycode.id; i++) + { + XCBKEYCODE keycode; + + keycode.id = i; + ks = XCBKeySymbolsGetKeysym (syms, keycode, j); + if (ks.id == keysym.id) + return keycode; + } + } + + return keycode_null; +} + +XCBKEYSYM +XCBKeyPressLookupKeysym (XCBKeySymbols *syms, + XCBKeyPressEvent *event, + int col) +{ + return XCBKeySymbolsGetKeysym (syms, event->detail, col); +} + +XCBKEYSYM +XCBKeyReleaseLookupKeysym (XCBKeySymbols *syms, + XCBKeyReleaseEvent *event, + int col) +{ + return XCBKeySymbolsGetKeysym (syms, event->detail, col); +} + +int +XCBRefreshKeyboardMapping (XCBKeySymbols *syms, + XCBMappingNotifyEvent *event) +{ + if (event->request == MappingKeyboard && syms) { + if (syms->tag == TAG_VALUE) { + XCBKEYCODE min_keycode; + XCBKEYCODE max_keycode; + + if (syms->u.reply) { + free (syms->u.reply); + syms->u.reply = NULL; + } + syms->tag = TAG_COOKIE; + min_keycode = XCBGetSetup (syms->c)->min_keycode; + max_keycode = XCBGetSetup (syms->c)->max_keycode; + + syms->u.cookie = XCBGetKeyboardMapping(syms->c, + min_keycode, + max_keycode.id - min_keycode.id + 1); + + } + return 1; + } + return 0; +} + + +/* Tests for classes of symbols */ + +int +XCBIsKeypadKey (XCBKEYSYM keysym) +{ + return ((keysym.id >= XK_KP_Space) && (keysym.id <= XK_KP_Equal)); +} + +int +XCBIsPrivateKeypadKey (XCBKEYSYM keysym) +{ + return ((keysym.id >= 0x11000000) && (keysym.id <= 0x1100FFFF)); +} + +int +XCBIsCursorKey (XCBKEYSYM keysym) +{ + return ((keysym.id >= XK_Home) && (keysym.id <= XK_Select)); +} + +int +XCBIsPFKey (XCBKEYSYM keysym) +{ + return ((keysym.id >= XK_KP_F1) && (keysym.id <= XK_KP_F4)); +} + +int +XCBIsFunctionKey (XCBKEYSYM keysym) +{ + return ((keysym.id >= XK_F1) && (keysym.id <= XK_F35)); +} + +int +XCBIsMiscFunctionKey (XCBKEYSYM keysym) +{ + return ((keysym.id >= XK_Select) && (keysym.id <= XK_Break)); +} + +int +XCBIsModifierKey (XCBKEYSYM keysym) +{ + return (((keysym.id >= XK_Shift_L) && (keysym.id <= XK_Hyper_R)) || + ((keysym.id >= XK_ISO_Lock) && (keysym.id <= XK_ISO_Last_Group_Lock)) || + (keysym.id == XK_Mode_switch) || + (keysym.id == XK_Num_Lock)); +} + +/* private functions */ + +void +XCBConvertCase(XCBKEYSYM sym, + XCBKEYSYM *lower, + XCBKEYSYM *upper) +{ + lower->id = sym.id; + upper->id = sym.id; + + switch(sym.id >> 8) + { + case 0: /* Latin 1 */ + if ((sym.id >= XK_A) && (sym.id <= XK_Z)) + lower->id += (XK_a - XK_A); + else if ((sym.id >= XK_a) && (sym.id <= XK_z)) + upper->id -= (XK_a - XK_A); + else if ((sym.id >= XK_Agrave) && (sym.id <= XK_Odiaeresis)) + lower->id += (XK_agrave - XK_Agrave); + else if ((sym.id >= XK_agrave) && (sym.id <= XK_odiaeresis)) + upper->id -= (XK_agrave - XK_Agrave); + else if ((sym.id >= XK_Ooblique) && (sym.id <= XK_Thorn)) + lower->id += (XK_oslash - XK_Ooblique); + else if ((sym.id >= XK_oslash) && (sym.id <= XK_thorn)) + upper->id -= (XK_oslash - XK_Ooblique); + break; + case 1: /* Latin 2 */ + /* Assume the KeySym.Id is a legal value (ignore discontinuities) */ + if (sym.id == XK_Aogonek) + lower->id = XK_aogonek; + else if (sym.id >= XK_Lstroke && sym.id <= XK_Sacute) + lower->id += (XK_lstroke - XK_Lstroke); + else if (sym.id >= XK_Scaron && sym.id <= XK_Zacute) + lower->id += (XK_scaron - XK_Scaron); + else if (sym.id >= XK_Zcaron && sym.id <= XK_Zabovedot) + lower->id += (XK_zcaron - XK_Zcaron); + else if (sym.id == XK_aogonek) + upper->id = XK_Aogonek; + else if (sym.id >= XK_lstroke && sym.id <= XK_sacute) + upper->id -= (XK_lstroke - XK_Lstroke); + else if (sym.id >= XK_scaron && sym.id <= XK_zacute) + upper->id -= (XK_scaron - XK_Scaron); + else if (sym.id >= XK_zcaron && sym.id <= XK_zabovedot) + upper->id -= (XK_zcaron - XK_Zcaron); + else if (sym.id >= XK_Racute && sym.id <= XK_Tcedilla) + lower->id += (XK_racute - XK_Racute); + else if (sym.id >= XK_racute && sym.id <= XK_tcedilla) + upper->id -= (XK_racute - XK_Racute); + break; + case 2: /* Latin 3 */ + /* Assume the KeySym.Id is a legal value (ignore discontinuities) */ + if (sym.id >= XK_Hstroke && sym.id <= XK_Hcircumflex) + lower->id += (XK_hstroke - XK_Hstroke); + else if (sym.id >= XK_Gbreve && sym.id <= XK_Jcircumflex) + lower->id += (XK_gbreve - XK_Gbreve); + else if (sym.id >= XK_hstroke && sym.id <= XK_hcircumflex) + upper->id -= (XK_hstroke - XK_Hstroke); + else if (sym.id >= XK_gbreve && sym.id <= XK_jcircumflex) + upper->id -= (XK_gbreve - XK_Gbreve); + else if (sym.id >= XK_Cabovedot && sym.id <= XK_Scircumflex) + lower->id += (XK_cabovedot - XK_Cabovedot); + else if (sym.id >= XK_cabovedot && sym.id <= XK_scircumflex) + upper->id -= (XK_cabovedot - XK_Cabovedot); + break; + case 3: /* Latin 4 */ + /* Assume the KeySym.Id is a legal value (ignore discontinuities) */ + if (sym.id >= XK_Rcedilla && sym.id <= XK_Tslash) + lower->id += (XK_rcedilla - XK_Rcedilla); + else if (sym.id >= XK_rcedilla && sym.id <= XK_tslash) + upper->id -= (XK_rcedilla - XK_Rcedilla); + else if (sym.id == XK_ENG) + lower->id = XK_eng; + else if (sym.id == XK_eng) + upper->id = XK_ENG; + else if (sym.id >= XK_Amacron && sym.id <= XK_Umacron) + lower->id += (XK_amacron - XK_Amacron); + else if (sym.id >= XK_amacron && sym.id <= XK_umacron) + upper->id -= (XK_amacron - XK_Amacron); + break; + case 6: /* Cyrillic */ + /* Assume the KeySym.Id is a legal value (ignore discontinuities) */ + if (sym.id >= XK_Serbian_DJE && sym.id <= XK_Serbian_DZE) + lower->id -= (XK_Serbian_DJE - XK_Serbian_dje); + else if (sym.id >= XK_Serbian_dje && sym.id <= XK_Serbian_dze) + upper->id += (XK_Serbian_DJE - XK_Serbian_dje); + else if (sym.id >= XK_Cyrillic_YU && sym.id <= XK_Cyrillic_HARDSIGN) + lower->id -= (XK_Cyrillic_YU - XK_Cyrillic_yu); + else if (sym.id >= XK_Cyrillic_yu && sym.id <= XK_Cyrillic_hardsign) + upper->id += (XK_Cyrillic_YU - XK_Cyrillic_yu); + break; + case 7: /* Greek */ + /* Assume the KeySym.Id is a legal value (ignore discontinuities) */ + if (sym.id >= XK_Greek_ALPHAaccent && sym.id <= XK_Greek_OMEGAaccent) + lower->id += (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent); + else if (sym.id >= XK_Greek_alphaaccent && sym.id <= XK_Greek_omegaaccent && + sym.id != XK_Greek_iotaaccentdieresis && + sym.id != XK_Greek_upsilonaccentdieresis) + upper->id -= (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent); + else if (sym.id >= XK_Greek_ALPHA && sym.id <= XK_Greek_OMEGA) + lower->id += (XK_Greek_alpha - XK_Greek_ALPHA); + else if (sym.id >= XK_Greek_alpha && sym.id <= XK_Greek_omega && + sym.id != XK_Greek_finalsmallsigma) + upper->id -= (XK_Greek_alpha - XK_Greek_ALPHA); + break; + case 0x14: /* Armenian */ + if (sym.id >= XK_Armenian_AYB && sym.id <= XK_Armenian_fe) { + lower->id = sym.id | 1; + upper->id = sym.id & ~1; + } + break; + } +} + +void +XCBKeySymbolsGetReply (XCBKeySymbols *syms, + XCBGenericError **e) +{ + if (!syms) + return; + + if (syms->tag == TAG_COOKIE) + { + syms->tag = TAG_VALUE; + syms->u.reply = XCBGetKeyboardMappingReply(syms->c, + syms->u.cookie, + e); + } +} diff --git a/keysyms/xcb-keysyms.pc.in b/keysyms/xcb-keysyms.pc.in new file mode 100644 index 0000000..596017f --- /dev/null +++ b/keysyms/xcb-keysyms.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: XCBKeysyms +Description: XCB Keysyms +Version: @PACKAGE_VERSION@ +Requires: xcb +Libs: -L${libdir} -lXCBKeysyms @LIBS@ +Cflags: -I${includedir} diff --git a/keysyms/xcb_keysyms.h b/keysyms/xcb_keysyms.h new file mode 100644 index 0000000..a2e3d3e --- /dev/null +++ b/keysyms/xcb_keysyms.h @@ -0,0 +1,49 @@ +#ifndef __XCB_KEYSYMS_H__ +#define __XCB_KEYSYMS_H__ + + + +typedef struct _XCBKeySymbols XCBKeySymbols; + + +XCBKeySymbols *XCBKeySymbolsAlloc (XCBConnection *c); + +void XCBKeySymbolsFree (XCBKeySymbols *syms); + +XCBKEYSYM XCBKeySymbolsGetKeysym (XCBKeySymbols *syms, + XCBKEYCODE keycode, + int col); + +XCBKEYCODE XCBKeySymbolsGetKeycode (XCBKeySymbols *syms, + XCBKEYSYM keysym); + +XCBKEYSYM XCBKeyPressLookupKeysym (XCBKeySymbols *syms, + XCBKeyPressEvent *event, + int col); + +XCBKEYSYM XCBKeyReleaseLookupKeysym (XCBKeySymbols *syms, + XCBKeyReleaseEvent *event, + int col); + +int XCBRefreshKeyboardMapping (XCBKeySymbols *syms, + XCBMappingNotifyEvent *event); + + +/* Tests for classes of symbols */ + +int XCBIsKeypadKey (XCBKEYSYM keysym); + +int XCBIsPrivateKeypadKey (XCBKEYSYM keysym); + +int XCBIsCursorKey (XCBKEYSYM keysym); + +int XCBIsPFKey (XCBKEYSYM keysym); + +int XCBIsFunctionKey (XCBKEYSYM keysym); + +int XCBIsMiscFunctionKey (XCBKEYSYM keysym); + +int XCBIsModifierKey (XCBKEYSYM keysym); + + +#endif /* __XCB_KEYSYMS_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 + +*/ |