diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-04-09 23:59:46 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-04-09 23:59:46 +0300 |
commit | 8f3be5cd0544af07c6cb65bef7a1f3ba1a3704bb (patch) | |
tree | 61182aa0154f8477581da0a8950397c65c8e59a6 /src/inputmanager.cpp | |
parent | 21ed1674f5ee382626e80a35dba9d97ec0bc1b92 (diff) | |
download | mv-8f3be5cd0544af07c6cb65bef7a1f3ba1a3704bb.tar.gz mv-8f3be5cd0544af07c6cb65bef7a1f3ba1a3704bb.tar.bz2 mv-8f3be5cd0544af07c6cb65bef7a1f3ba1a3704bb.tar.xz mv-8f3be5cd0544af07c6cb65bef7a1f3ba1a3704bb.zip |
Fix asigning keys unknown for SDL.
Allow full use of keys unknown for SDL (with press state also).
Diffstat (limited to 'src/inputmanager.cpp')
-rw-r--r-- | src/inputmanager.cpp | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/src/inputmanager.cpp b/src/inputmanager.cpp index b539c4bcf..3c73376df 100644 --- a/src/inputmanager.cpp +++ b/src/inputmanager.cpp @@ -156,7 +156,7 @@ void InputManager::store() default: break; } - if (key.value >= 0) + if (key.value != -1) { if (keyStr.empty()) { @@ -264,16 +264,17 @@ std::string InputManager::getKeyStringLong(int index) const const KeyItem &key = mKey[index].values[i]; if (key.type == INPUT_KEYBOARD) { + std::string str; if (key.value >= 0) + str = keyboard.getKeyName(key.value); + else if (key.value < -1) + str = strprintf(_("key_%d"), -key.value); + if (!str.empty()) { - std::string str = keyboard.getKeyName(key.value); - if (!str.empty()) - { - if (keyStr.empty()) - keyStr = str; - else - keyStr += std::string(" ") + str; - } + if (keyStr.empty()) + keyStr = str; + else + keyStr += std::string(" ") + str; } } } @@ -292,17 +293,22 @@ std::string InputManager::getKeyValueString(int index) const const KeyItem &key = mKey[index].values[i]; if (key.type == INPUT_KEYBOARD) { + std::string str; if (key.value >= 0) { - std::string str = keyboard.getKeyShortString( + str = keyboard.getKeyShortString( keyboard.getKeyName(key.value)); - if (!str.empty()) - { - if (keyStr.empty()) - keyStr = str; - else - keyStr += std::string(" ") + str; - } + } + else if (key.value < -1) + { + str = strprintf(_("key_%d"), -key.value); + } + if (!str.empty()) + { + if (keyStr.empty()) + keyStr = str; + else + keyStr += std::string(" ") + str; } } } @@ -382,6 +388,7 @@ bool InputManager::handleEvent(const SDL_Event &event) if (handleAssignKey(event)) return true; + keyboard.handleActicateKey(event); // send straight to gui for certain windows if (quitDialog || TextDialog::isActive() || NpcPostDialog::isActive()) @@ -401,6 +408,10 @@ bool InputManager::handleEvent(const SDL_Event &event) return true; } } + else if (event.type == SDL_KEYUP) + { + keyboard.handleDeActicateKey(event); + } try { |