summaryrefslogtreecommitdiff
path: root/libxklavier/xklavier_config_xkb.c
diff options
context:
space:
mode:
Diffstat (limited to 'libxklavier/xklavier_config_xkb.c')
-rw-r--r--libxklavier/xklavier_config_xkb.c54
1 files changed, 38 insertions, 16 deletions
diff --git a/libxklavier/xklavier_config_xkb.c b/libxklavier/xklavier_config_xkb.c
index eed17cd..64c04dc 100644
--- a/libxklavier/xklavier_config_xkb.c
+++ b/libxklavier/xklavier_config_xkb.c
@@ -41,7 +41,11 @@ static char* _XklGetRulesSetName( void )
{
char* rf = NULL;
if( !XklGetNamesProp( _xklAtoms[XKB_RF_NAMES_PROP_ATOM], &rf, NULL ) || ( rf == NULL ) )
- return NULL;
+ {
+ strncpy( rulesSetName, XKB_DEFAULT_RULESET, sizeof rulesSetName );
+ XklDebug( 100, "Using default rules set: [%s]\n", rulesSetName );
+ return rulesSetName;
+ }
strncpy( rulesSetName, rf, sizeof rulesSetName );
free( rf );
}
@@ -135,6 +139,16 @@ static Bool _XklConfigPrepareBeforeKbd( const XklConfigRecPtr data )
_xklLastErrorMsg = "Could not translate rules into components";
return False;
}
+
+ if ( _xklDebugLevel >= 200 )
+ {
+ XklDebug( 200, "keymap: %s\n", componentNames.keymap );
+ XklDebug( 200, "keycodes: %s\n", componentNames.keycodes );
+ XklDebug( 200, "compat: %s\n", componentNames.compat );
+ XklDebug( 200, "types: %s\n", componentNames.types );
+ XklDebug( 200, "symbols: %s\n", componentNames.symbols );
+ XklDebug( 200, "geometry: %s\n", componentNames.geometry );
+ }
#endif
return True;
}
@@ -144,21 +158,20 @@ static void _XklConfigCleanAfterKbd( )
#ifdef XKB_HEADERS_PRESENT
_XklFreeRulesSet();
- if( locale != NULL )
- {
- free( locale );
- locale = NULL;
- }
- if( _xklVarDefs.layout != NULL )
- {
- free( _xklVarDefs.layout );
- _xklVarDefs.layout = NULL;
- }
- if( _xklVarDefs.options != NULL )
- {
- free( _xklVarDefs.options );
- _xklVarDefs.options = NULL;
- }
+ free( locale );
+ locale = NULL;
+
+ free( _xklVarDefs.layout );
+ free( _xklVarDefs.variant );
+ free( _xklVarDefs.options );
+ memset( &_xklVarDefs, 0, sizeof( _xklVarDefs ) );
+
+ free(componentNames.keymap);
+ free(componentNames.keycodes);
+ free(componentNames.compat);
+ free(componentNames.types);
+ free(componentNames.symbols);
+ free(componentNames.geometry);
#endif
}
@@ -191,7 +204,16 @@ Bool XklMultipleLayoutsSupported( void )
XklDebug( 100, "!!! Multiple layouts ARE supported\n" );
supportState = SUPPORTED;
} else
+ {
XklDebug( 100, "!!! Multiple layouts ARE NOT supported\n" );
+ }
+ free(cNames.keymap);
+ free(cNames.keycodes);
+ free(cNames.compat);
+ free(cNames.types);
+ free(cNames.symbols);
+ free(cNames.geometry);
+
_XklFreeRulesSet();
}
#endif