diff options
-rw-r--r-- | backends/keymapper/hardware-key.h | 8 | ||||
-rw-r--r-- | backends/keymapper/keymap.cpp | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/backends/keymapper/hardware-key.h b/backends/keymapper/hardware-key.h index 32df042525..014e73a11e 100644 --- a/backends/keymapper/hardware-key.h +++ b/backends/keymapper/hardware-key.h @@ -97,8 +97,12 @@ public: List<const HardwareKey*>::const_iterator it; for (it = _keys.begin(); it != _keys.end(); it++) { - if ((*it)->key == keystate) - return (*it); + if ((*it)->key.keycode == keystate.keycode) { + // Only check for control/alt/shift modifiers, not for sticky + // modifiers like num lock/caps lock/scroll lock + if ((*it)->key.flags == (keystate.flags & 7)) + return (*it); + } } return 0; } diff --git a/backends/keymapper/keymap.cpp b/backends/keymapper/keymap.cpp index d2c9b9b572..d64b888702 100644 --- a/backends/keymapper/keymap.cpp +++ b/backends/keymapper/keymap.cpp @@ -145,7 +145,7 @@ void Keymap::loadMappings(const HardwareKeySet *hwKeys) { const HardwareKey *hwKey = hwKeys->findHardwareKey(it->_value.c_str()); if (!hwKey) { - warning("HardwareKey with ID %s not known", it->_value.c_str()); + warning("HardwareKey with ID '%s' not known", it->_value.c_str()); _configDomain->erase(key); continue; } @@ -199,7 +199,7 @@ bool Keymap::isComplete(const HardwareKeySet *hwKeys) { // - if an action finds a key with required type but a parent action with // higher priority is using it, that key is never used void Keymap::automaticMapping(HardwareKeySet *hwKeys) { -#if 0 //disabling the broken automapper for now +#if 1 //disabling the broken automapper for now // Create copies of action and key lists. List<Action*> actions(_actions); List<const HardwareKey*> keys(hwKeys->getHardwareKeys()); |