diff options
author | Sergey Udaltsov <svu@gnome.org> | 2004-11-27 15:47:04 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2004-11-27 15:47:04 +0000 |
commit | a9f5148f77cb23de913206becf874dac735a6059 (patch) | |
tree | 93a5dbdeb22b34ec10c38b3ba63b4b5fd97980f2 /libxklavier/xklavier_evt_xmm.c | |
parent | d431ef4a3ca6228954ddb21e2e4a88f0cf9e8624 (diff) | |
download | libxklavier-a9f5148f77cb23de913206becf874dac735a6059.tar.gz |
first working version of xmodmap
Diffstat (limited to 'libxklavier/xklavier_evt_xmm.c')
-rw-r--r-- | libxklavier/xklavier_evt_xmm.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/libxklavier/xklavier_evt_xmm.c b/libxklavier/xklavier_evt_xmm.c index 1046757..f2e3a4a 100644 --- a/libxklavier/xklavier_evt_xmm.c +++ b/libxklavier/xklavier_evt_xmm.c @@ -40,19 +40,45 @@ static int _XklXmmPropertyEventHandler( XPropertyEvent* kpe ) { XklDebug( 200, "Processing the PropertyNotify event: %d/%d\n", kpe->atom, xmmStateAtom ); + /** + * Group is changed! + */ if( kpe->atom == xmmStateAtom ) { + XklState state; + _XklXmmGetRealState( &state ); + if( _xklListenerType & XKLL_MANAGE_LAYOUTS ) { - XklState state; - _XklXmmGetRealState( &state ); XklDebug( 150, "Current group from the root window property %d\n", state.group ); _XklXmmUngrabShortcuts(); _XklXmmActualizeGroup( state.group ); _XklXmmGrabShortcuts(); return 1; } + + if( _xklListenerType & + ( XKLL_MANAGE_WINDOW_STATES | XKLL_TRACK_KEYBOARD_STATE ) ) + { + XklDebug( 150, + "XMM state changed, new 'group' %d\n", + state.group ); + + _XklStateModificationHandler( GROUP_CHANGED, + state.group, + 0, + False ); + } + } else + /** + * Configuration is changed! + */ + if( kpe->atom == xklVTable->baseConfigAtom ) + { + _XklFreeAllInfo(); + _XklLoadAllInfo(); } + return 0; } |