aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/keymapper/keymapper.cpp3
-rw-r--r--backends/keymapper/types.h2
-rw-r--r--backends/platform/sdl/hardwarekeys.cpp12
3 files changed, 9 insertions, 8 deletions
diff --git a/backends/keymapper/keymapper.cpp b/backends/keymapper/keymapper.cpp
index 24b4d7e5f8..d101e8e0d2 100644
--- a/backends/keymapper/keymapper.cpp
+++ b/backends/keymapper/keymapper.cpp
@@ -195,12 +195,13 @@ bool Keymapper::mapKey(const KeyState& key, bool keyDown) {
// HACK: Temporary fix for modifier recognition, get the hwkey's keystate
// to correct for keydown and keyup generating different ascii codes in SDL
// to be solved more permanently by using a structure other than KeyState
+
const HardwareKey *hwkey = findHardwareKey(key);
if (!hwkey)
return false;
KeyState k = hwkey->key;
- k.flags = key.flags;
+ k.flags = key.flags & hwkey->modMask;
// Search for key in active keymap stack
for (int i = _activeMaps.size() - 1; i >= 0; --i) {
diff --git a/backends/keymapper/types.h b/backends/keymapper/types.h
index 004a90bfcd..3cce79ee9a 100644
--- a/backends/keymapper/types.h
+++ b/backends/keymapper/types.h
@@ -43,7 +43,7 @@ enum KeyType {
kTriggerRightKeyType,
kStartKeyType,
kSelectKeyType,
-// kModiferKeyType,
+ kModiferKeyType,
/* ... */
kKeyTypeMax
diff --git a/backends/platform/sdl/hardwarekeys.cpp b/backends/platform/sdl/hardwarekeys.cpp
index 623e8b50cf..506e71d092 100644
--- a/backends/platform/sdl/hardwarekeys.cpp
+++ b/backends/platform/sdl/hardwarekeys.cpp
@@ -163,12 +163,12 @@ static const Key keys[] = {
// Modifier keys pressed alone
-// {"RSHIFT", KEYCODE_RSHIFT, 0, "Right Shift", kModiferKeyType, ~KBD_SHIFT},
-// {"LSHIFT", KEYCODE_LSHIFT, 0, "Left Shift", kModiferKeyType, ~KBD_SHIFT},
-// {"RCTRL", KEYCODE_RCTRL, 0, "Right Ctrl", kModiferKeyType, ~KBD_CTRL},
-// {"LCTRL", KEYCODE_LCTRL, 0, "Left Ctrl", kModiferKeyType, ~KBD_CTRL},
-// {"RALT", KEYCODE_RALT, 0, "Right Alt", kModiferKeyType, ~KBD_ALT},
-// {"LALT", KEYCODE_LALT, 0, "Left Alt", kModiferKeyType, ~KBD_ALT},
+ {"RSHIFT", KEYCODE_RSHIFT, 0, "Right Shift", kModiferKeyType, ~KBD_SHIFT},
+ {"LSHIFT", KEYCODE_LSHIFT, 0, "Left Shift", kModiferKeyType, ~KBD_SHIFT},
+ {"RCTRL", KEYCODE_RCTRL, 0, "Right Ctrl", kModiferKeyType, ~KBD_CTRL},
+ {"LCTRL", KEYCODE_LCTRL, 0, "Left Ctrl", kModiferKeyType, ~KBD_CTRL},
+ {"RALT", KEYCODE_RALT, 0, "Right Alt", kModiferKeyType, ~KBD_ALT},
+ {"LALT", KEYCODE_LALT, 0, "Left Alt", kModiferKeyType, ~KBD_ALT},
// Miscellaneous function keys