diff options
author | Sergey Udaltsov <svu@gnome.org> | 2004-11-02 23:06:25 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2004-11-02 23:06:25 +0000 |
commit | 4d431bbaae40a5a99988c4d8e7d5d33dc717710f (patch) | |
tree | 553fa8bdba0c1bc2f8f5c4de2c40c9dd126a6558 | |
parent | 2fc330af2405d304aa79457a4e43a1d6e709cd70 (diff) | |
download | libxklavier-4d431bbaae40a5a99988c4d8e7d5d33dc717710f.tar.gz |
virtualizing xkb functions into vtable. preparing 1.11
-rw-r--r-- | ChangeLog | 18 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | libxklavier/Makefile.am | 4 | ||||
-rw-r--r-- | libxklavier/xklavier.c | 6 | ||||
-rw-r--r-- | libxklavier/xklavier.h | 4 | ||||
-rw-r--r-- | libxklavier/xklavier_config.c | 1 | ||||
-rw-r--r-- | libxklavier/xklavier_config_i18n.c | 4 | ||||
-rw-r--r-- | libxklavier/xklavier_config_xkb.c | 15 | ||||
-rw-r--r-- | libxklavier/xklavier_dump.c | 4 | ||||
-rw-r--r-- | libxklavier/xklavier_evt.c | 179 | ||||
-rw-r--r-- | libxklavier/xklavier_private.h | 17 | ||||
-rw-r--r-- | libxklavier/xklavier_private_xkb.h | 10 | ||||
-rw-r--r-- | libxklavier/xklavier_props.c | 16 | ||||
-rw-r--r-- | libxklavier/xklavier_xkb.c | 2 |
14 files changed, 56 insertions, 226 deletions
@@ -1,3 +1,21 @@ +2004-11-02 22:55 svu + + * libxklavier/Makefile.am, + libxklavier/xklavier.c, + libxklavier/xklavier.h, + libxklavier/xklavier_config.c, + libxklavier/xklavier_config_i18n.c, + libxklavier/xklavier_config_xkb.c, + libxklavier/xklavier_dump.c, + libxklavier/xklavier_evt.c, + libxklavier/xklavier_private.h, + libxklavier/xklavier_private_xkb.h, + libxklavier/xklavier_props.c, + libxklavier/xklavier_xkb.c: virtualizing everything (?) which + involves XKB directly. The VTable is introduced. So, now another + VTable (xmodmap) can be created, hopefully... + * configure.in: preparing 1.11 + 2004-10-31 21:00 svu * libxklavier/xklavier_config_xkb.c: diff --git a/configure.in b/configure.in index 47e6511..b8a4c74 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ AC_INIT(libxklavier/xklavier.c) PACKAGE=libxklavier MAJOR_VERSION=1 -MINOR_VERSION=10 +MINOR_VERSION=11 VERSION=$MAJOR_VERSION.$MINOR_VERSION VERSION_INFO=9:0:0 diff --git a/libxklavier/Makefile.am b/libxklavier/Makefile.am index c8a9dd8..8834675 100644 --- a/libxklavier/Makefile.am +++ b/libxklavier/Makefile.am @@ -2,7 +2,7 @@ if XKB_HEADERS_PRESENT XKB_HEADERS_PRESENT_CFLAG = -DXKB_HEADERS_PRESENT=1 endif -AM_CFLAGS = -DDATA_DIR=\"$(datadir)/$(PACKAGE)\" -I. -I$(includedir) $(XML_CFLAGS) -I$(x_includes) -I$(top_srcdir) $(XKB_HEADERS_PRESENT_CFLAG) +AM_CFLAGS = -Wall -Werror -DDATA_DIR=\"$(datadir)/$(PACKAGE)\" -I. -I$(includedir) $(XML_CFLAGS) -I$(x_includes) -I$(top_srcdir) $(XKB_HEADERS_PRESENT_CFLAG) lib_LTLIBRARIES = libxklavier.la noinst_HEADERS = xklavier_private.h xklavier_private_xkb.h @@ -10,7 +10,7 @@ noinst_HEADERS = xklavier_private.h xklavier_private_xkb.h xklavierincdir = $(includedir)/libxklavier xklavierinc_HEADERS = xklavier.h xklavier_config.h -libxklavier_la_SOURCES = xklavier.c xklavier_xkb.c xklavier_evt.c xklavier_util.c xklavier_config.c xklavier_config_xkb.c xklavier_config_i18n.c xklavier_props.c xklavier_dump.c \ +libxklavier_la_SOURCES = xklavier.c xklavier_xkb.c xklavier_evt.c xklavier_evt_xkb.c xklavier_util.c xklavier_config.c xklavier_config_xkb.c xklavier_config_i18n.c xklavier_props.c xklavier_dump.c \ $(noinst_HEADERS) $(xklavierinc_HEADERS) libxklavier_la_LDFLAGS = -version-info @VERSION_INFO@ $(XML_LIBS) -lxkbfile -L$(x_libraries) $(LIBICONV) diff --git a/libxklavier/xklavier.c b/libxklavier/xklavier.c index 0ce8a53..2c1f7b6 100644 --- a/libxklavier/xklavier.c +++ b/libxklavier/xklavier.c @@ -148,7 +148,6 @@ int XklStopListen( ) int XklInit( Display * a_dpy ) { - int opcode; int scr; char *sdl; int rv; @@ -559,7 +558,7 @@ Bool _XklGetAppState( Window appWin, XklState * state_return ) ( _xklDpy, appWin, _xklAtoms[XKLAVIER_STATE], 0L, XKLAVIER_STATE_PROP_LENGTH, False, XA_INTEGER, &type_ret, &format_ret, &nitems, &rest, - ( unsigned char ** ) &prop ) == Success ) + ( unsigned char ** ) ( void * ) &prop ) == Success ) && ( type_ret == XA_INTEGER ) && ( format_ret == 32 ) ) { grp = prop[0]; @@ -684,11 +683,10 @@ Bool _XklIsTransparentAppWindow( Window appWin ) int format_ret; unsigned long nitems, rest; CARD32 *prop = NULL; - Bool retVal; if( ( XGetWindowProperty ( _xklDpy, appWin, _xklAtoms[XKLAVIER_TRANSPARENT], 0L, 1, False, XA_INTEGER, &type_ret, &format_ret, &nitems, &rest, - ( unsigned char ** ) &prop ) == Success ) + ( unsigned char ** ) ( void * ) &prop ) == Success ) && ( type_ret == XA_INTEGER ) && ( format_ret == 32 ) ) { if( prop != NULL ) diff --git a/libxklavier/xklavier.h b/libxklavier/xklavier.h index 08387b8..8c08cb0 100644 --- a/libxklavier/xklavier.h +++ b/libxklavier/xklavier.h @@ -9,10 +9,6 @@ #include <X11/Xlib.h> -#ifdef XKB_HEADERS_PRESENT -#include <X11/XKBlib.h> -#endif - #ifdef __cplusplus extern "C" { diff --git a/libxklavier/xklavier_config.c b/libxklavier/xklavier_config.c index 239742a..06c93fb 100644 --- a/libxklavier/xklavier_config.c +++ b/libxklavier/xklavier_config.c @@ -350,6 +350,7 @@ void XklConfigInit( void ) xmlXPathCompile( "/xkbConfigRegistry/optionList/group" ); _XklI18NInit( ); + _XklEnsureVTableInited(); (*xklVTable->xklConfigInitHandler)(); } diff --git a/libxklavier/xklavier_config_i18n.c b/libxklavier/xklavier_config_i18n.c index c8eef15..92fe440 100644 --- a/libxklavier/xklavier_config_i18n.c +++ b/libxklavier/xklavier_config_i18n.c @@ -102,8 +102,6 @@ static Bool _XklGetCharset( const char **a ) char *_XklLocaleFromUtf8( const char *utf8string ) { int len; - int bytesRead; - int bytesWritten; iconv_t converter; static char converted[XKL_MAX_CI_DESC_LENGTH]; @@ -134,8 +132,6 @@ char *_XklLocaleFromUtf8( const char *utf8string ) } return strdup( utf8string ); } - //converted = convert_with_iconv( utf8string, - // len, converter, &bytesRead, &bytesWritten ); if( iconv( converter, &utfStart, &len, &convertedStart, &clen ) == -1 ) { diff --git a/libxklavier/xklavier_config_xkb.c b/libxklavier/xklavier_config_xkb.c index 57221dd..71a3b79 100644 --- a/libxklavier/xklavier_config_xkb.c +++ b/libxklavier/xklavier_config_xkb.c @@ -4,6 +4,7 @@ #include <unistd.h> #include <sys/stat.h> #include <sys/param.h> +#include <sys/wait.h> #include <sys/types.h> #include <fcntl.h> @@ -33,9 +34,9 @@ XkbRF_VarDefsRec _xklVarDefs; static XkbRF_RulesPtr _xklRules; static XkbComponentNamesRec componentNames; -#endif static char *locale; +#endif static char* _XklGetRulesSetName( void ) { @@ -91,17 +92,19 @@ static XkbRF_RulesPtr _XklLoadRulesSet( void ) } #endif +#ifdef XKB_HEADERS_PRESENT static void _XklFreeRulesSet( void ) { -#ifdef XKB_HEADERS_PRESENT if ( _xklRules ) XkbRF_Free( _xklRules, True ); -#endif } +#endif void _XklXkbConfigInit( void ) { +#ifdef XKB_HEADERS_PRESENT XkbInitAtoms( NULL ); +#endif } Bool XklConfigLoadRegistry( void ) @@ -124,9 +127,9 @@ Bool XklConfigLoadRegistry( void ) return XklConfigLoadRegistryFromFile( fileName ); } +#ifdef XKB_HEADERS_PRESENT static Bool _XklConfigPrepareBeforeKbd( const XklConfigRecPtr data ) { -#ifdef XKB_HEADERS_PRESENT XkbRF_RulesPtr rulesPtr = _XklLoadRulesSet(); memset( &_xklVarDefs, 0, sizeof( _xklVarDefs ) ); @@ -160,13 +163,11 @@ static Bool _XklConfigPrepareBeforeKbd( const XklConfigRecPtr data ) XklDebug( 200, "symbols: %s\n", componentNames.symbols ); XklDebug( 200, "geometry: %s\n", componentNames.geometry ); } -#endif return True; } static void _XklConfigCleanAfterKbd( ) { -#ifdef XKB_HEADERS_PRESENT _XklFreeRulesSet(); free( locale ); @@ -183,10 +184,8 @@ static void _XklConfigCleanAfterKbd( ) free(componentNames.types); free(componentNames.symbols); free(componentNames.geometry); -#endif } -#ifdef XKB_HEADERS_PRESENT static XkbDescPtr _XklConfigGetKeyboard( Bool activate ) { XkbDescPtr xkb = NULL; diff --git a/libxklavier/xklavier_dump.c b/libxklavier/xklavier_dump.c index 95962ec..3fabd8c 100644 --- a/libxklavier/xklavier_dump.c +++ b/libxklavier/xklavier_dump.c @@ -27,7 +27,7 @@ static void _XkbModsRecDump( FILE * fs, XkbModsRec * mods ) fprintf( fs, "vmods: 0x%X\n", mods->vmods ); } -static void _XkbControlsDump( FILE * fs, XkbControlsPtr ctrls ) +extern void _XkbControlsDump( FILE * fs, XkbControlsPtr ctrls ) { int i; char buf[1024]; @@ -180,7 +180,7 @@ static void _XkbServerMapDump( FILE * fs, int level, XkbServerMapPtr server, static void _XkbKeyTypeDump( FILE * fs, int level, XkbKeyTypePtr type ) { char *z = type->name == None ? NULL : XGetAtomName( _xklDpy, type->name ); - fprintf( fs, "%*sname: 0x%X(%s)\n", level, "", type->name, z ); + fprintf( fs, "%*sname: 0x%X(%s)\n", level, "", (int)type->name, z ); if( z != NULL ) XFree( z ); } diff --git a/libxklavier/xklavier_evt.c b/libxklavier/xklavier_evt.c index cb37854..1099673 100644 --- a/libxklavier/xklavier_evt.c +++ b/libxklavier/xklavier_evt.c @@ -6,19 +6,14 @@ #include <X11/Xlibint.h> #include "xklavier_private.h" -#include "xklavier_private_xkb.h" int XklFilterEvents( XEvent * xev ) { XAnyEvent *pe = ( XAnyEvent * ) xev; XklDebug( 400, "**> Filtering event %d of type %d from window %d\n", pe->serial, pe->type, pe->window ); -#ifdef XKB_HEADERS_PRESENT - if( xev->type == _xklXkbEventType ) - { - _XklXkbEvHandler( ( XkbEvent * ) xev ); - } else -#endif + _XklEnsureVTableInited(); + if ( !xklVTable->xklEventHandler( xev ) ) switch ( xev->type ) { /* core events */ case FocusIn: @@ -68,154 +63,6 @@ int XklFilterEvents( XEvent * xev ) } /** - * Some common functionality for Xkb handler - */ -void _XklStdXkbHandler( int grp, XklStateChange changeType, unsigned inds, - Bool setInds ) -{ - Window focused, focusedApp; - XklState oldState; - int revert; - Bool haveState; - Bool setGroup = changeType == GROUP_CHANGED; - - XGetInputFocus( _xklDpy, &focused, &revert ); - - if( ( focused == None ) || ( focused == PointerRoot ) ) - { - XklDebug( 160, "Something with focus: " WINID_FORMAT "\n", focused ); - return; - } - - if( !_XklGetAppWindow( focused, &focusedApp ) ) - focusedApp = _xklCurClient; //what else can I do - - XklDebug( 150, "Focused window: " WINID_FORMAT ", '%s'\n", focusedApp, - _XklGetDebugWindowTitle( focusedApp ) ); - XklDebug( 150, "CurClient: " WINID_FORMAT ", '%s'\n", _xklCurClient, - _XklGetDebugWindowTitle( _xklCurClient ) ); - - if( focusedApp != _xklCurClient ) - { - if ( !_XklGetAppState( focusedApp, &oldState ) ) - { - _XklUpdateCurState( grp, inds, - "Updating the state from new focused window" ); - _XklAddAppWindow( focusedApp, ( Window ) NULL, False, &_xklCurState ); - } - else - { - grp = oldState.group; - inds = oldState.indicators; - } - _xklCurClient = focusedApp; - XklDebug( 160, "CurClient:changed to " WINID_FORMAT ", '%s'\n", - _xklCurClient, _XklGetDebugWindowTitle( _xklCurClient ) ); - } - // if the window already has this this state - we are just restoring it! - // (see the second parameter of stateCallback - haveState = _XklGetAppState( _xklCurClient, &oldState ); - - if( setGroup || haveState ) - { - _XklUpdateCurState( setGroup ? grp : oldState.group, - setInds ? inds : oldState.indicators, - "Restoring the state from the window" ); - } - - if( haveState ) - _XklTryCallStateCallback( changeType, &oldState ); - - _XklSaveAppState( _xklCurClient, &_xklCurState ); -} - -#ifdef XKB_HEADERS_PRESENT -/** - * XKB event handler - */ -void _XklXkbEvHandler( XkbEvent * kev ) -{ - int i; - unsigned bit; - unsigned inds; - - XklDebug( 150, "Xkb event detected\n" ); - - switch ( kev->any.xkb_type ) - { - case XkbStateNotify: -#define GROUP_CHANGE_MASK \ - ( XkbGroupStateMask | XkbGroupBaseMask | XkbGroupLatchMask | XkbGroupLockMask ) - - XklDebug( 150, - "XkbStateNotify detected, changes: %X/(mask %X), new group %d\n", - kev->state.changed, GROUP_CHANGE_MASK, - kev->state.locked_group ); - - if( kev->state.changed & GROUP_CHANGE_MASK ) - _XklStdXkbHandler( kev->state.locked_group, GROUP_CHANGED, 0, False ); - else - { - XklDebug( 200, - "This type of state notification is not regarding groups\n" ); - if ( kev->state.locked_group != _xklCurState.group ) - XklDebug( 0, - "ATTENTION! Currently cached group %d is not equal to the current group from the event: %d\n!", - _xklCurState.group, - kev->state.locked_group ); - } - - break; - - case XkbIndicatorStateNotify: - - XklDebug( 150, "XkbIndicatorStateNotify\n" ); - - inds = _xklCurState.indicators; - - ForPhysIndicators( i, bit ) if( kev->indicators.changed & bit ) - { - if( kev->indicators.state & bit ) - inds |= bit; - else - inds &= ~bit; - } - - _XklStdXkbHandler( 0, INDICATORS_CHANGED, inds, True ); - break; - - case XkbIndicatorMapNotify: - XklDebug( 150, "XkbIndicatorMapNotify\n" ); - _XklFreeAllInfo( ); - _XklLoadAllInfo( ); - break; - - case XkbControlsNotify: - XklDebug( 150, "XkbControlsNotify\n" ); - _XklFreeAllInfo( ); - _XklLoadAllInfo( ); - break; - - case XkbNamesNotify: - XklDebug( 150, "XkbNamesNotify\n" ); - _XklFreeAllInfo( ); - _XklLoadAllInfo( ); - break; - - case XkbNewKeyboardNotify: - XklDebug( 150, "XkbNewKeyboardNotify\n" ); - _XklFreeAllInfo( ); - _XklLoadAllInfo( ); - break; - - default: - XklDebug( 150, "Unknown xkb event %d\n", kev->any.xkb_type ); - break; - } -} -#endif - -/** * FocusIn handler */ void _XklFocusInEvHandler( XFocusChangeEvent * fev ) @@ -321,29 +168,14 @@ void _XklFocusInEvHandler( XFocusChangeEvent * fev ) } } -#ifdef XKB_HEADERS_PRESENT if( XklGetIndicatorsHandling( ) ) { - int i; - unsigned bit; - XklDebug( 150, "Restoring the indicators from %X to %X after gaining focus\n", _xklCurState.indicators, selectedWindowState.indicators ); - ForPhysIndicators( i, - bit ) if( _xklXkb->names->indicators[i] != None ) - { - Bool status; - status = - _XklSetIndicator( i, - ( selectedWindowState.indicators & bit ) != - 0 ); - XklDebug( 150, "Set indicator \"%s\"/%d to %d: %d\n", - _xklIndicatorNames[i], _xklXkb->names->indicators[i], - selectedWindowState.indicators & bit, status ); - } + _XklEnsureVTableInited(); + (*xklVTable->xklSetIndicatorsHandler)( &selectedWindowState ); } else -#endif XklDebug( 150, "Not restoring the indicators %X after gaining focus: indicator handling is not enabled\n", _xklCurState.indicators ); @@ -448,7 +280,6 @@ void _XklPropertyEvHandler( XPropertyEvent * pev ) XklDelState( pev->window ); } } -#ifdef XKB_HEADERS_PRESENT } else if( pev->atom == _xklAtoms[XKB_RF_NAMES_PROP_ATOM] && pev->window == _xklRootWindow ) @@ -461,7 +292,6 @@ void _XklPropertyEvHandler( XPropertyEvent * pev ) _XklFreeAllInfo( ); _XklLoadAllInfo( ); } -#endif } } @@ -470,7 +300,6 @@ void _XklPropertyEvHandler( XPropertyEvent * pev ) * */ void _XklCreateEvHandler( XCreateWindowEvent * cev ) { - long newmask; XklDebug( 200, "Under-root window " WINID_FORMAT "/%s (%d,%d,%d x %d) is created\n", cev->window, diff --git a/libxklavier/xklavier_private.h b/libxklavier/xklavier_private.h index 7025661..78a2d04 100644 --- a/libxklavier/xklavier_private.h +++ b/libxklavier/xklavier_private.h @@ -15,6 +15,8 @@ typedef Bool ( *XklConfigWriteFileHandler )( const char *fileName, const XklConfigRecPtr data, const Bool binary ); +typedef int ( *XklEventHandler )( XEvent *xev ); + typedef void ( *XklFreeAllInfoHandler )( void ); typedef const char **( *XklGetGroupNamesHandler )( void ); @@ -27,12 +29,15 @@ typedef void ( *XklLockGroupHandler )( int group ); typedef int ( *XklPauseResumeListenHandler )( void ); +typedef void ( *XklSetIndicatorsHandler )( const XklState *windowState ); + typedef struct { XklConfigActivateHandler xklConfigActivateHandler; XklConfigInitHandler xklConfigInitHandler; /* private */ XklConfigMultipleLayoutsSupportedHandler xklConfigMultipleLayoutsSupportedHandler; XklConfigWriteFileHandler xklConfigWriteFileHandler; + XklEventHandler xklEventHandler; XklFreeAllInfoHandler xklFreeAllInfoHandler; /* private */ XklGetGroupNamesHandler xklGetGroupNamesHandler; XklGetNumGroupsHandler xklGetNumGroupsHandler; @@ -40,6 +45,7 @@ typedef struct XklLockGroupHandler xklLockGroupHandler; XklPauseResumeListenHandler xklPauseListenHandler; XklPauseResumeListenHandler xklResumeListenHandler; + XklSetIndicatorsHandler xklSetIndicatorsHandler; /* private */ } XklVTable; extern void _XklEnsureVTableInited( void ); @@ -143,13 +149,10 @@ extern char *_xklIndicatorNames[]; #define XKLAVIER_STATE 2 #define XKLAVIER_TRANSPARENT 3 -#ifdef XKB_HEADERS_PRESENT - #define XKB_RF_NAMES_PROP_ATOM 4 - #define XKB_RF_NAMES_PROP_ATOM_BACKUP 5 - #define TOTAL_ATOMS 6 -#else - #define TOTAL_ATOMS 4 -#endif +// XKB ones +#define XKB_RF_NAMES_PROP_ATOM 4 +#define XKB_RF_NAMES_PROP_ATOM_BACKUP 5 +#define TOTAL_ATOMS 6 #define XKLAVIER_STATE_PROP_LENGTH 2 diff --git a/libxklavier/xklavier_private_xkb.h b/libxklavier/xklavier_private_xkb.h index 1823f33..e4daa3a 100644 --- a/libxklavier/xklavier_private_xkb.h +++ b/libxklavier/xklavier_private_xkb.h @@ -3,6 +3,7 @@ #ifdef XKB_HEADERS_PRESENT +#include <X11/XKBlib.h> #include <X11/extensions/XKBrules.h> #define ForPhysIndicators( i, bit ) \ @@ -17,11 +18,6 @@ extern XkbDescPtr _xklXkb; extern void XklDumpXkbDesc( const char *filename, XkbDescPtr kbd ); -extern void _XklStdXkbHandler( int grp, XklStateChange changeType, - unsigned inds, Bool setInds ); - -extern void _XklXkbEvHandler( XkbEvent * kev ); - /* Start VTable methods */ extern Bool _XklXkbConfigActivate( const XklConfigRecPtr data ); @@ -34,6 +30,8 @@ extern Bool _XklXkbConfigWriteFile( const char *fileName, const XklConfigRecPtr data, const Bool binary ); +extern int _XklXkbEventHandler( XEvent * kev ); + extern void _XklXkbFreeAllInfo( void ); extern const char **_XklXkbGetGroupNames( void ); @@ -46,6 +44,8 @@ extern void _XklXkbLockGroup( int group ); extern int _XklXkbPauseResumeListen( void ); +extern void _XklXkbSetIndicators( const XklState *windowState ); + /* End of VTable methods */ #endif diff --git a/libxklavier/xklavier_props.c b/libxklavier/xklavier_props.c index f4dd1f9..99c12e0 100644 --- a/libxklavier/xklavier_props.c +++ b/libxklavier/xklavier_props.c @@ -116,7 +116,6 @@ void XklConfigRecReset( XklConfigRecPtr data ) Bool XklConfigGetFromServer( XklConfigRecPtr data ) { -#ifdef XKB_HEADERS_PRESENT Bool rv = XklGetNamesProp( _xklAtoms[XKB_RF_NAMES_PROP_ATOM], NULL, data ); @@ -124,27 +123,19 @@ Bool XklConfigGetFromServer( XklConfigRecPtr data ) rv = _XklGetDefaultNamesProp( NULL, data ); return rv; -#else - return False; -#endif } Bool XklConfigGetFromBackup( XklConfigRecPtr data ) { -#ifdef XKB_HEADERS_PRESENT Bool rv = XklGetNamesProp( _xklAtoms[XKB_RF_NAMES_PROP_ATOM_BACKUP], NULL, data ); return rv; -#else - return False; -#endif } Bool XklBackupNamesProp( ) { Bool rv = True; -#ifdef XKB_HEADERS_PRESENT char *rf = NULL; XklConfigRec data; Bool cgp = False; @@ -193,14 +184,12 @@ Bool XklBackupNamesProp( ) rv = False; } XklConfigRecDestroy( &data ); -#endif return rv; } Bool XklRestoreNamesProp( ) { Bool rv = True; -#ifdef XKB_HEADERS_PRESENT char *rf = NULL; XklConfigRec data; @@ -217,7 +206,6 @@ Bool XklRestoreNamesProp( ) rv = False; } XklConfigRecDestroy( &data ); -#endif return rv; } @@ -241,7 +229,7 @@ Bool XklGetNamesProp( Atom rulesAtom, XGetWindowProperty( _xklDpy, _xklRootWindow, rulesAtom, 0L, _XKB_RF_NAMES_PROP_MAXLEN, False, XA_STRING, &realPropType, &fmt, &nitems, &extraBytes, - ( unsigned char ** ) &propData ); + ( unsigned char ** ) ( void * ) &propData ); // property not found! if( rtrn != Success ) { @@ -352,7 +340,7 @@ Bool XklGetNamesProp( Atom rulesAtom, Bool XklSetNamesProp( Atom rulesAtom, char *rulesFile, const XklConfigRecPtr data ) { - int len, i, rv; + int len, rv; char *pval; char *next; char *allLayouts = _XklConfigRecMergeLayouts( data ); diff --git a/libxklavier/xklavier_xkb.c b/libxklavier/xklavier_xkb.c index df7554f..26a76a4 100644 --- a/libxklavier/xklavier_xkb.c +++ b/libxklavier/xklavier_xkb.c @@ -368,6 +368,7 @@ int _XklXkbInit( void ) _XklXkbConfigInit, _XklXkbConfigMultipleLayoutsSupported, _XklXkbConfigWriteFile, + _XklXkbEventHandler, _XklXkbFreeAllInfo, _XklXkbGetGroupNames, _XklXkbGetNumGroups, @@ -375,6 +376,7 @@ int _XklXkbInit( void ) _XklXkbLockGroup, _XklXkbPauseListen, _XklXkbResumeListen, + _XklXkbSetIndicators, }; /* Lets begin */ _xklXkbExtPresent = XkbQueryExtension( _xklDpy, |