diff options
author | Paul Gilbert | 2019-03-01 19:37:02 -0800 |
---|---|---|
committer | Paul Gilbert | 2019-03-01 19:38:21 -0800 |
commit | f14703e70964eb3247259110f3e4b18b97e1ff40 (patch) | |
tree | a018d8eaea5ceb35ec277b66354f389384b8a249 /engines/glk | |
parent | e91e911b613e4b6cdee5c37346c9304452507aa9 (diff) | |
download | scummvm-rg350-f14703e70964eb3247259110f3e4b18b97e1ff40.tar.gz scummvm-rg350-f14703e70964eb3247259110f3e4b18b97e1ff40.tar.bz2 scummvm-rg350-f14703e70964eb3247259110f3e4b18b97e1ff40.zip |
GLK: Don't ignore Alt key combinations
I'm told that on some foreign keyboards, combinations of Alt & Fn
keys are used to produce standard characters. So I can't just
ignore Alt combinations because of this
Diffstat (limited to 'engines/glk')
-rw-r--r-- | engines/glk/events.cpp | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/engines/glk/events.cpp b/engines/glk/events.cpp index 10651b0031..ed6ad9b243 100644 --- a/engines/glk/events.cpp +++ b/engines/glk/events.cpp @@ -222,28 +222,29 @@ void Events::handleKeyDown(const Common::KeyState &ks) { Windows &windows = *g_vm->_windows; if (ks.flags & Common::KBD_CTRL) { - if (ks.keycode == Common::KEYCODE_a) - windows.inputHandleKey(keycode_Home); - else if (ks.keycode == Common::KEYCODE_c) - clipboard.clipboardSend(CLIPBOARD); - else if (ks.keycode == Common::KEYCODE_e) - windows.inputHandleKey(keycode_End); - else if (ks.keycode == Common::KEYCODE_u) - windows.inputHandleKey(keycode_Escape); - else if (ks.keycode == Common::KEYCODE_v) - clipboard.clipboardReceive(CLIPBOARD); - else if (ks.keycode == Common::KEYCODE_x) - clipboard.clipboardSend(CLIPBOARD); - else if (ks.keycode == Common::KEYCODE_LEFT || ks.keycode == Common::KEYCODE_KP4) - windows.inputHandleKey(keycode_SkipWordLeft); - else if (ks.keycode == Common::KEYCODE_RIGHT || ks.keycode == Common::KEYCODE_KP6) - windows.inputHandleKey(keycode_SkipWordRight); - - return; - } + do { + if (ks.keycode == Common::KEYCODE_a) + windows.inputHandleKey(keycode_Home); + else if (ks.keycode == Common::KEYCODE_c) + clipboard.clipboardSend(CLIPBOARD); + else if (ks.keycode == Common::KEYCODE_e) + windows.inputHandleKey(keycode_End); + else if (ks.keycode == Common::KEYCODE_u) + windows.inputHandleKey(keycode_Escape); + else if (ks.keycode == Common::KEYCODE_v) + clipboard.clipboardReceive(CLIPBOARD); + else if (ks.keycode == Common::KEYCODE_x) + clipboard.clipboardSend(CLIPBOARD); + else if (ks.keycode == Common::KEYCODE_LEFT || ks.keycode == Common::KEYCODE_KP4) + windows.inputHandleKey(keycode_SkipWordLeft); + else if (ks.keycode == Common::KEYCODE_RIGHT || ks.keycode == Common::KEYCODE_KP6) + windows.inputHandleKey(keycode_SkipWordRight); + else + break; - if (ks.flags & Common::KBD_ALT) - return; + return; + } while (false); + } switch (ks.keycode) { case Common::KEYCODE_RETURN: @@ -322,8 +323,7 @@ void Events::handleKeyDown(const Common::KeyState &ks) { windows.inputHandleKey(keycode_Func12); break; default: - windows.inputHandleKey(ks.ascii); - break; + windows.inputHandleKey(ks.keycode); break; } } |