summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2004-11-02 23:06:25 +0000
committerSergey Udaltsov <svu@gnome.org>2004-11-02 23:06:25 +0000
commit4d431bbaae40a5a99988c4d8e7d5d33dc717710f (patch)
tree553fa8bdba0c1bc2f8f5c4de2c40c9dd126a6558
parent2fc330af2405d304aa79457a4e43a1d6e709cd70 (diff)
downloadlibxklavier-4d431bbaae40a5a99988c4d8e7d5d33dc717710f.tar.gz
virtualizing xkb functions into vtable. preparing 1.11
-rw-r--r--ChangeLog18
-rw-r--r--configure.in2
-rw-r--r--libxklavier/Makefile.am4
-rw-r--r--libxklavier/xklavier.c6
-rw-r--r--libxklavier/xklavier.h4
-rw-r--r--libxklavier/xklavier_config.c1
-rw-r--r--libxklavier/xklavier_config_i18n.c4
-rw-r--r--libxklavier/xklavier_config_xkb.c15
-rw-r--r--libxklavier/xklavier_dump.c4
-rw-r--r--libxklavier/xklavier_evt.c179
-rw-r--r--libxklavier/xklavier_private.h17
-rw-r--r--libxklavier/xklavier_private_xkb.h10
-rw-r--r--libxklavier/xklavier_props.c16
-rw-r--r--libxklavier/xklavier_xkb.c2
14 files changed, 56 insertions, 226 deletions
diff --git a/ChangeLog b/ChangeLog
index c300257..6b87a15 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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,