aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/agi/agi.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp
index 7d61aa58b9..b555e93067 100644
--- a/engines/agi/agi.cpp
+++ b/engines/agi/agi.cpp
@@ -122,18 +122,11 @@ static void process_events() {
break;
}
- if (event.kbd.flags == OSystem::KBD_CTRL) {
+ if (event.kbd.flags & OSystem::KBD_CTRL)
key_control = 1;
- key = 0;
- break;
- } else if (event.kbd.flags == OSystem::KBD_ALT) {
+
+ if (event.kbd.flags & OSystem::KBD_ALT)
key_alt = 1;
- key = 0;
- break;
- } else if (event.kbd.flags == OSystem::KBD_SHIFT) {
- key = 0;
- break;
- }
switch (key = event.kbd.keycode) {
case 256 + 20: // left arrow
@@ -224,12 +217,16 @@ static void process_events() {
key = KEY_ENTER;
break;
default:
- if (key < 256 && !isalpha(key))
+ if (key < 256 && !isalpha(key)) {
+ key = event.kbd.ascii;
break;
+ }
if (key_control)
key = (key & ~0x20) - 0x40;
else if (key_alt)
key = scancode_table[(key & ~0x20) - 0x41] << 8;
+ else if (event.kbd.flags & OSystem::KBD_SHIFT)
+ key = event.kbd.ascii;
break;
}
if (key)