void KGlobalAccel::setItemEnabled( const char * action, bool activate ) { debug("KGlobalAccel::setItemEnabled"); KKeyEntry *pEntry = aKeyDict[ action ]; if ( !pEntry ) { QString str; str.sprintf( "KGlobalAccel : cannont enable action %s"\ "which is not in the object dictionary", action ); warning( str ); return; } if ( pEntry->bEnabled == activate ) return; if ( pEntry->aCurrentKeyCode == 0 ) return; uint keysym = keyToXSym( pEntry->aCurrentKeyCode ); uint mod = keyToXMod( pEntry->aCurrentKeyCode ); if ( keysym == NoSymbol ) return; if ( !pEntry->bEnabled ) { pEntry->bEnabled = grabKey( keysym, mod ); } else { ungrabKey( keysym, mod ); pEntry->bEnabled = false; } return; }
static void ungrab_key(Icon *icon) { int *count; g_return_if_fail(icon != NULL); if (!icon->shortcut_key.keycode) return; icon_shortcuts = g_list_remove(icon_shortcuts, icon); count = g_hash_table_lookup(grab_counter, &icon->shortcut_key); g_return_if_fail(count != NULL); (*count)--; if (*count > 0) return; g_hash_table_remove(grab_counter, &icon->shortcut_key); if (!ungrabKey(&icon->shortcut_key)) g_warning("Failed to ungrab shortcut '%s' for '%s' icon.", icon->shortcut, icon->item->leafname); }
void App::setDoGrab(bool doGrab) { if (m_doGrab != doGrab) {; if (doGrab) { grabKey(); } else { ungrabKey(); } m_doGrab = doGrab; } }
void App::setTriggerKeys(QList< TriggerKey > triggersList) { if (m_doGrab) { ungrabKey(); } m_triggersList = triggersList; if (m_doGrab) { grabKey(); } }
bool KGlobalAccel::setKeyDict( QDict<KKeyEntry> nKeyDict ) { // ungrab all connected and enabled keys QDictIterator<KKeyEntry> *aKeyIt = new QDictIterator<KKeyEntry>( aKeyDict ); aKeyIt->toFirst(); #define pE aKeyIt->current() while( pE ) { QString s; if ( pE->bEnabled ) { uint keysym = keyToXSym( pE->aCurrentKeyCode ); uint mod = keyToXMod( pE->aCurrentKeyCode ); ungrabKey( keysym, mod ); } ++*aKeyIt; } #undef pE // Clear the dictionary aKeyDict.clear(); // Insert the new items into the dictionary and reconnect if neccessary // Note also swap config and current key codes !!!!!! aKeyIt = new QDictIterator<KKeyEntry>( nKeyDict ); aKeyIt->toFirst(); #define pE aKeyIt->current() KKeyEntry *pEntry; while( pE ) { pEntry = new KKeyEntry; aKeyDict.insert( aKeyIt->currentKey(), pEntry ); pEntry->aDefaultKeyCode = pE->aDefaultKeyCode; // Not we write config key code to current key code !! pEntry->aCurrentKeyCode = pE->aConfigKeyCode; pEntry->aConfigKeyCode = pE->aConfigKeyCode; pEntry->bConfigurable = pE->bConfigurable; pEntry->aAccelId = pE->aAccelId; pEntry->receiver = pE->receiver; pEntry->member = new QString( pE->member->data() ); pEntry->bEnabled = pE->bEnabled; if ( pEntry->bEnabled ) { uint keysym = keyToXSym( pEntry->aCurrentKeyCode ); uint mod = keyToXMod( pEntry->aCurrentKeyCode ); grabKey( keysym, mod ); } ++*aKeyIt; } #undef pE return true; }
void KGlobalAccel::readSettings() { QString s; KConfig *pConfig = kapp->getConfig(); pConfig->setGroup( aGroup.data() ); QDictIterator<KKeyEntry> aKeyIt( aKeyDict ); aKeyIt.toFirst(); #define pE aKeyIt.current() while ( pE ) { s = pConfig->readEntry( aKeyIt.currentKey() ); if ( s.isNull() ) pE->aConfigKeyCode = pE->aDefaultKeyCode; else pE->aConfigKeyCode = stringToKey( s.data() ); if ( pE->bEnabled ) { uint keysym = keyToXSym( pE->aCurrentKeyCode ); uint mod = keyToXMod( pE->aCurrentKeyCode ); ungrabKey( keysym, mod ); } pE->aCurrentKeyCode = pE->aConfigKeyCode; if ( pE->bEnabled ) { uint keysym = keyToXSym( pE->aCurrentKeyCode ); uint mod = keyToXMod( pE->aCurrentKeyCode ); grabKey( keysym, mod ); } ++aKeyIt; } #undef pE }