diff options
author | Sergey Udaltsov <svu@gnome.org> | 2004-01-20 08:56:41 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2004-01-20 08:56:41 +0000 |
commit | 21b25ac93553d1a8e4a94607875bd99b016d4a71 (patch) | |
tree | fa905c4b6ba115d5fd17c146eb7023e9d9f0e1bd | |
parent | ab2c2908cc9605d2810cd2e56011e114d02fff7f (diff) | |
download | libxklavier-21b25ac93553d1a8e4a94607875bd99b016d4a71.tar.gz |
Trying to make libxklavier buildable without xkb headers, first round
-rw-r--r-- | libxklavier/Makefile.am | 6 | ||||
-rw-r--r-- | libxklavier/xklavier.h | 3 | ||||
-rw-r--r-- | libxklavier/xklavier_config.h | 4 | ||||
-rw-r--r-- | libxklavier/xklavier_config_xkb.c | 18 | ||||
-rw-r--r-- | libxklavier/xklavier_dump.c | 6 | ||||
-rw-r--r-- | libxklavier/xklavier_evt.c | 8 | ||||
-rw-r--r-- | libxklavier/xklavier_private.h | 11 | ||||
-rw-r--r-- | libxklavier/xklavier_private_xkb.h | 16 | ||||
-rw-r--r-- | libxklavier/xklavier_props.c | 18 | ||||
-rw-r--r-- | libxklavier/xklavier_xkb.c | 42 |
10 files changed, 113 insertions, 19 deletions
diff --git a/libxklavier/Makefile.am b/libxklavier/Makefile.am index 49f65b7..c8a9dd8 100644 --- a/libxklavier/Makefile.am +++ b/libxklavier/Makefile.am @@ -1,4 +1,8 @@ -AM_CFLAGS = -DDATA_DIR=\"$(datadir)/$(PACKAGE)\" -I. -I$(includedir) $(XML_CFLAGS) -I$(x_includes) -I$(top_srcdir) +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) lib_LTLIBRARIES = libxklavier.la noinst_HEADERS = xklavier_private.h xklavier_private_xkb.h diff --git a/libxklavier/xklavier.h b/libxklavier/xklavier.h index 51fb087..487f260 100644 --- a/libxklavier/xklavier.h +++ b/libxklavier/xklavier.h @@ -8,7 +8,10 @@ #include <stdarg.h> #include <X11/Xlib.h> + +#ifdef XKB_HEADERS_PRESENT #include <X11/XKBlib.h> +#endif #ifdef __cplusplus extern "C" diff --git a/libxklavier/xklavier_config.h b/libxklavier/xklavier_config.h index f59988b..15c3c85 100644 --- a/libxklavier/xklavier_config.h +++ b/libxklavier/xklavier_config.h @@ -31,6 +31,10 @@ extern "C" { #endif /* __cplusplus */ +#ifndef XKB_HEADERS_PRESENT + typedef void * XkbDescPtr; +#endif + /** * The configuration item. Corresponds to XML element "configItem". */ diff --git a/libxklavier/xklavier_config_xkb.c b/libxklavier/xklavier_config_xkb.c index b9de6b5..8aa9e81 100644 --- a/libxklavier/xklavier_config_xkb.c +++ b/libxklavier/xklavier_config_xkb.c @@ -11,8 +11,10 @@ #include "xklavier_private_xkb.h" +#ifdef XKB_HEADERS_PRESENT #include <X11/extensions/XKBfile.h> #include <X11/extensions/XKM.h> +#endif #define RULES_FILE "xfree86" @@ -28,10 +30,13 @@ #define XK_XKB_KEYS #include <X11/keysymdef.h> +#ifdef XKB_HEADERS_PRESENT XkbRF_VarDefsRec _xklVarDefs; static XkbRF_RulesPtr rules; static XkbComponentNamesRec componentNames; +#endif + static char *locale; Bool XklConfigLoadRegistry( void ) @@ -47,6 +52,7 @@ Bool XklConfigLoadRegistry( void ) static Bool _XklConfigPrepareBeforeKbd( const XklConfigRecPtr data ) { +#ifdef XKB_HEADERS_PRESENT memset( &_xklVarDefs, 0, sizeof( _xklVarDefs ) ); _xklVarDefs.model = ( char * ) data->model; @@ -77,12 +83,13 @@ static Bool _XklConfigPrepareBeforeKbd( const XklConfigRecPtr data ) _xklLastErrorMsg = "Could not translate rules into components"; return False; } - +#endif return True; } static void _XklConfigCleanAfterKbd( ) { +#ifdef XKB_HEADERS_PRESENT XkbRF_Free( rules, True ); if( locale != NULL ) @@ -100,6 +107,7 @@ static void _XklConfigCleanAfterKbd( ) free( _xklVarDefs.options ); _xklVarDefs.options = NULL; } +#endif } static void _XklApplyFun2XkbDesc( XkbDescPtr xkb, XkbDescModifierFunc fun, @@ -157,6 +165,7 @@ Bool XklConfigActivate( const XklConfigRecPtr data, XkbDescModifierFunc fun, } #endif +#ifdef XKB_HEADERS_PRESENT if( _XklConfigPrepareBeforeKbd( data ) ) { XkbDescPtr xkb; @@ -186,11 +195,13 @@ Bool XklConfigActivate( const XklConfigRecPtr data, XkbDescModifierFunc fun, } } _XklConfigCleanAfterKbd( ); +#endif return rv; } int XklSetKeyAsSwitcher( XkbDescPtr kbd, void *userData ) { +#ifdef XKB_HEADERS_PRESENT if( kbd != NULL ) { XkbClientMapPtr map = kbd->map; @@ -215,6 +226,9 @@ int XklSetKeyAsSwitcher( XkbDescPtr kbd, void *userData ) XklDebug( 160, "No client map in the keyboard description?\n" ); } return XkbKeySymsMask | XkbKeyTypesMask | XkbKeyActionsMask; +#else + return 0; +#endif } Bool XklConfigWriteXKMFile( const char *fileName, const XklConfigRecPtr data, @@ -222,6 +236,7 @@ Bool XklConfigWriteXKMFile( const char *fileName, const XklConfigRecPtr data, { Bool rv = False; +#ifdef XKB_HEADERS_PRESENT FILE *output = fopen( fileName, "w" ); XkbFileInfo dumpInfo; @@ -253,5 +268,6 @@ Bool XklConfigWriteXKMFile( const char *fileName, const XklConfigRecPtr data, } _XklConfigCleanAfterKbd( ); fclose( output ); +#endif return rv; } diff --git a/libxklavier/xklavier_dump.c b/libxklavier/xklavier_dump.c index 70d345c..7d3b460 100644 --- a/libxklavier/xklavier_dump.c +++ b/libxklavier/xklavier_dump.c @@ -19,6 +19,7 @@ #include "xklavier_private.h" #include "xklavier_private_xkb.h" +#ifdef XKB_HEADERS_PRESENT static void _XkbModsRecDump( FILE * fs, XkbModsRec * mods ) { fprintf( fs, "flags: 0x%X\n", mods->mask ); @@ -234,9 +235,11 @@ static void _XkbClientMapDump( FILE * fs, int level, XkbClientMapPtr map, } else fprintf( fs, "%*sNO key_sym_map\n", level, "" ); } +#endif void _XkbDescDump( FILE * fs, int level, XkbDescPtr kbd ) { +#ifdef XKB_HEADERS_PRESENT fprintf( fs, "%*sflags: 0x%X\n", level, "", kbd->flags ); fprintf( fs, "%*sdevice_spec: %d\n", level, "", kbd->device_spec ); fprintf( fs, "%*smin_key_code: %d\n", level, "", kbd->min_key_code ); @@ -262,6 +265,9 @@ void _XkbDescDump( FILE * fs, int level, XkbDescPtr kbd ) _XkbClientMapDump( fs, level + 2, kbd->map, kbd ); } else fprintf( fs, "%*sNO map\n", level, "" ); +#else + fprintf( fs, "XKB libraries not present\n" ); +#endif } void XklDumpXkbDesc( const char *filename, XkbDescPtr kbd ) diff --git a/libxklavier/xklavier_evt.c b/libxklavier/xklavier_evt.c index cf492a6..f5868f5 100644 --- a/libxklavier/xklavier_evt.c +++ b/libxklavier/xklavier_evt.c @@ -13,10 +13,12 @@ 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 switch ( xev->type ) { /* core events */ case FocusIn: @@ -119,6 +121,7 @@ void _XklStdXkbHandler( int grp, XklStateChange changeType, unsigned inds, _XklSaveAppState( _xklCurClient, &_xklCurState ); } +#ifdef XKB_HEADERS_PRESENT /** * XKB event handler */ @@ -195,6 +198,7 @@ void _XklXkbEvHandler( XkbEvent * kev ) break; } } +#endif /** * FocusIn handler @@ -285,6 +289,7 @@ void _XklFocusInEvHandler( XFocusChangeEvent * fev ) } } +#ifdef XKB_HEADERS_PRESENT if( XklGetIndicatorsHandling( ) ) { int i; @@ -306,6 +311,7 @@ void _XklFocusInEvHandler( XFocusChangeEvent * fev ) selectedWindowState.indicators & bit, status ); } } else +#endif XklDebug( 150, "Not restoring the indicators %X after gaining focus: indicator handling is not enabled\n", _xklCurState.indicators ); @@ -411,6 +417,7 @@ void _XklPropertyEvHandler( XPropertyEvent * pev ) XklDelState( pev->window ); } } +#ifdef XKB_HEADERS_PRESENT } else if( pev->atom == _xklAtoms[XKB_RF_NAMES_PROP_ATOM] && pev->window == _xklRootWindow ) @@ -423,6 +430,7 @@ void _XklPropertyEvHandler( XPropertyEvent * pev ) _XklFreeAllInfo( ); _XklLoadAllInfo( ); } +#endif } } diff --git a/libxklavier/xklavier_private.h b/libxklavier/xklavier_private.h index f158fa8..d0a894e 100644 --- a/libxklavier/xklavier_private.h +++ b/libxklavier/xklavier_private.h @@ -97,9 +97,14 @@ extern char *_xklIndicatorNames[]; #define WM_STATE 1 #define XKLAVIER_STATE 2 #define XKLAVIER_TRANSPARENT 3 -#define XKB_RF_NAMES_PROP_ATOM 4 -#define XKB_RF_NAMES_PROP_ATOM_BACKUP 5 -#define TOTAL_ATOMS 6 + +#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 #define XKLAVIER_STATE_PROP_LENGTH 2 diff --git a/libxklavier/xklavier_private_xkb.h b/libxklavier/xklavier_private_xkb.h index 8616789..b99a405 100644 --- a/libxklavier/xklavier_private_xkb.h +++ b/libxklavier/xklavier_private_xkb.h @@ -1,6 +1,8 @@ #ifndef __XKLAVIER_PRIVATE_XKB_H__ #define __XKLAVIER_PRIVATE_XKB_H__ +#ifdef XKB_HEADERS_PRESENT + #include <X11/extensions/XKBrules.h> extern void _XklStdXkbHandler( int grp, XklStateChange changeType, @@ -8,12 +10,6 @@ extern void _XklStdXkbHandler( int grp, XklStateChange changeType, extern void _XklXkbEvHandler( XkbEvent * kev ); -extern void XklDumpXkbDesc( const char *filename, XkbDescPtr kbd ); - -extern Bool _xklXkbExtPresent; - -extern XkbDescPtr _xklXkb; - #define ForPhysIndicators( i, bit ) \ for ( i=0, bit=1; i<XkbNumIndicators; i++, bit<<=1 ) \ if ( _xklXkb->indicators->phys_indicators & bit ) @@ -23,3 +19,11 @@ extern int _xklXkbEventType, _xklXkbError; extern XkbRF_VarDefsRec _xklVarDefs; #endif + +extern Bool _xklXkbExtPresent; + +extern XkbDescPtr _xklXkb; + +extern void XklDumpXkbDesc( const char *filename, XkbDescPtr kbd ); + +#endif diff --git a/libxklavier/xklavier_props.c b/libxklavier/xklavier_props.c index b6fec8c..4ab8cf9 100644 --- a/libxklavier/xklavier_props.c +++ b/libxklavier/xklavier_props.c @@ -97,6 +97,7 @@ void XklConfigRecReset( XklConfigRecPtr data ) Bool XklConfigGetFromServer( XklConfigRecPtr data ) { +#ifdef XKB_HEADERS_PRESENT char *rulesFile = NULL; Bool rv = XklGetNamesProp( _xklAtoms[XKB_RF_NAMES_PROP_ATOM], &rulesFile, data ); @@ -104,10 +105,14 @@ Bool XklConfigGetFromServer( XklConfigRecPtr data ) free( rulesFile ); return rv; +#else + return False; +#endif } Bool XklConfigGetFromBackup( XklConfigRecPtr data ) { +#ifdef XKB_HEADERS_PRESENT char *rulesFile = NULL; Bool rv = XklGetNamesProp( _xklAtoms[XKB_RF_NAMES_PROP_ATOM_BACKUP], &rulesFile, @@ -116,13 +121,17 @@ Bool XklConfigGetFromBackup( XklConfigRecPtr data ) free( rulesFile ); return rv; +#else + return False; +#endif } Bool XklBackupNamesProp( ) { + Bool rv = True; +#ifdef XKB_HEADERS_PRESENT char *rf; XklConfigRec data; - Bool rv = True; XklConfigRecInit( &data ); if( XklGetNamesProp @@ -166,15 +175,16 @@ Bool XklBackupNamesProp( ) rv = False; } XklConfigRecDestroy( &data ); - +#endif return rv; } Bool XklRestoreNamesProp( ) { + Bool rv = True; +#ifdef XKB_HEADERS_PRESENT char *rf; XklConfigRec data; - Bool rv = True; XklConfigRecInit( &data ); if( !XklGetNamesProp( _xklAtoms[XKB_RF_NAMES_PROP_ATOM_BACKUP], &rf, &data ) ) @@ -192,7 +202,7 @@ Bool XklRestoreNamesProp( ) rv = False; } XklConfigRecDestroy( &data ); - +#endif return rv; } diff --git a/libxklavier/xklavier_xkb.c b/libxklavier/xklavier_xkb.c index 5dd6994..3dd2351 100644 --- a/libxklavier/xklavier_xkb.c +++ b/libxklavier/xklavier_xkb.c @@ -9,7 +9,7 @@ #include "xklavier_private_xkb.h" XkbDescPtr _xklXkb; - +#ifdef XKB_HEADERS_PRESENT char *_xklIndicatorNames[XkbNumIndicators]; unsigned _xklPhysIndicatorsMask; @@ -22,6 +22,13 @@ const char **XklGetGroupNames( void ) { return ( const char ** ) groupNames; } +#else +const char **XklGetGroupNames( void ) +{ + static const char* dummyName = "???"; + return ( const char ** ) &dummyName; +} +#endif int XklInit( Display * a_dpy ) { @@ -31,6 +38,7 @@ int XklInit( Display * a_dpy ) _xklDefaultErrHandler = XSetErrorHandler( ( XErrorHandler ) _XklErrHandler ); +#ifdef XKB_HEADERS_PRESENT /* Lets begin */ _xklXkbExtPresent = XkbQueryExtension( _xklDpy = a_dpy, &opcode, &_xklXkbEventType, @@ -39,22 +47,31 @@ int XklInit( Display * a_dpy ) { return -1; } +#endif scr = DefaultScreen( _xklDpy ); _xklRootWindow = RootWindow( _xklDpy, scr ); +#ifdef XKB_HEADERS_PRESENT XklDebug( 160, "xkbEvenType: %X, xkbError: %X, display: %p, root: " WINID_FORMAT "\n", _xklXkbEventType, _xklXkbError, _xklDpy, _xklRootWindow ); +#else + XklDebug( 160, + "NO XKB LIBS, display: %p, root: " WINID_FORMAT + "\n", _xklDpy, _xklRootWindow ); +#endif _xklAtoms[WM_NAME] = XInternAtom( _xklDpy, "WM_NAME", False ); _xklAtoms[WM_STATE] = XInternAtom( _xklDpy, "WM_STATE", False ); _xklAtoms[XKLAVIER_STATE] = XInternAtom( _xklDpy, "XKLAVIER_STATE", False ); _xklAtoms[XKLAVIER_TRANSPARENT] = XInternAtom( _xklDpy, "XKLAVIER_TRANSPARENT", False ); +#ifdef XKB_HEADERS_PRESENT _xklAtoms[XKB_RF_NAMES_PROP_ATOM] = XInternAtom( _xklDpy, _XKB_RF_NAMES_PROP_ATOM, False ); _xklAtoms[XKB_RF_NAMES_PROP_ATOM_BACKUP] = XInternAtom( _xklDpy, "_XKB_RULES_NAMES_BACKUP", False ); +#endif _xklAllowSecondaryGroupOnce = False; _xklSkipOneRestore = False; @@ -67,6 +84,7 @@ int XklInit( Display * a_dpy ) int XklPauseListen( ) { +#ifdef XKB_HEADERS_PRESENT XkbSelectEvents( _xklDpy, XkbUseCoreKbd, XkbAllEventsMask, 0 ); // XkbSelectEventDetails( _xklDpy, // XkbUseCoreKbd, @@ -75,11 +93,13 @@ int XklPauseListen( ) // 0 ); //!!_XklSelectInput( _xklRootWindow, 0 ); +#endif return 0; } int XklResumeListen( ) { +#ifdef XKB_HEADERS_PRESENT /* What events we want */ #define XKB_EVT_MASK \ (XkbStateNotifyMask| \ @@ -106,7 +126,7 @@ int XklResumeListen( ) XkbUseCoreKbd, XkbNamesNotify, XKB_NAMES_EVT_DTL_MASK, XKB_NAMES_EVT_DTL_MASK ); - +#endif _XklSelectInputMerging( _xklRootWindow, SubstructureNotifyMask | PropertyChangeMask ); _XklGetRealState( &_xklCurState ); @@ -115,7 +135,11 @@ int XklResumeListen( ) unsigned XklGetNumGroups( ) { +#ifdef XKB_HEADERS_PRESENT return _xklXkb->ctrls->num_groups; +#else + return 1; +#endif } #define KBD_MASK \ @@ -127,6 +151,7 @@ unsigned XklGetNumGroups( ) void _XklFreeAllInfo( ) { +#ifdef XKB_HEADERS_PRESENT if( _xklXkb != NULL ) { int i; @@ -140,6 +165,7 @@ void _XklFreeAllInfo( ) XkbFreeKeyboard( _xklXkb, XkbAllComponentsMask, True ); _xklXkb = NULL; } +#endif } /** @@ -147,6 +173,7 @@ void _XklFreeAllInfo( ) */ Bool _XklLoadAllInfo( ) { +#ifdef XKB_HEADERS_PRESENT int i; unsigned bit; Atom *gna; @@ -210,16 +237,18 @@ Bool _XklLoadAllInfo( ) XklDebug( 200, "Real indicators are %X\n", _xklXkb->indicators->phys_indicators ); +#endif if( _xklConfigCallback != NULL ) ( *_xklConfigCallback ) ( _xklConfigCallbackData ); - return True; } void XklLockGroup( int group ) { XklDebug( 100, "Posted request for change the group to %d ##\n", group ); +#ifdef XKB_HEADERS_PRESENT XkbLockGroup( _xklDpy, XkbUseCoreKbd, group ); +#endif XSync( _xklDpy, False ); } @@ -228,9 +257,12 @@ void XklLockGroup( int group ) */ void _XklGetRealState( XklState * curState_return ) { +#ifdef XKB_HEADERS_PRESENT XkbStateRec state; +#endif curState_return->group = 0; +#ifdef XKB_HEADERS_PRESENT if( Success == XkbGetState( _xklDpy, XkbUseCoreKbd, &state ) ) curState_return->group = state.locked_group; @@ -239,6 +271,7 @@ void _XklGetRealState( XklState * curState_return ) &curState_return->indicators ) ) curState_return->indicators &= _xklXkb->indicators->phys_indicators; else +#endif curState_return->indicators = 0; } @@ -248,6 +281,7 @@ void _XklGetRealState( XklState * curState_return ) */ Bool _XklSetIndicator( int indicatorNum, Bool set ) { +#ifdef XKB_HEADERS_PRESENT XkbIndicatorMapPtr map; map = _xklXkb->indicators->maps + indicatorNum; @@ -396,6 +430,6 @@ Bool _XklSetIndicator( int indicatorNum, Bool set ) return True; } } - +#endif return True; } |