From 410c9e0b30ae3f140bd55cfcfa05308d929da24e Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Fri, 30 Dec 2011 00:08:31 +0200 Subject: KEYMAPPER: Fix broken implementation of findHardwareKey() This fixes the keymapper dialog (at least on desktop platforms), but the keymapper itself is still not working (tested with LoL) --- backends/keymapper/hardware-key.h | 8 ++++++-- backends/keymapper/keymap.cpp | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'backends/keymapper') 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_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 actions(_actions); List keys(hwKeys->getHardwareKeys()); -- cgit v1.2.3