]> git.proxmox.com Git - mirror_qemu.git/commitdiff
curses: Fix control-{@[\]^_} and ESC
authorSamuel Thibault <samuel.thibault@gnu.org>
Tue, 19 Oct 2010 17:48:20 +0000 (19:48 +0200)
committerAndrzej Zaborowski <balrog@zabor.org>
Thu, 21 Oct 2010 16:31:28 +0000 (18:31 +0200)
control-{@[\]^_} shouldn't get the 'a' - 'A' offset for correct
translation. ESC is better simulated as escape key.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Andrew Zaborowski <balrogg@gmail.com>
ui/curses.c
ui/curses_keys.h

index ed3165e45e56efd4b28bb74d4d821a87a422470d..82bc614040590dd5379b9a7f4f7b508b1a1e305a 100644 (file)
@@ -238,9 +238,12 @@ static void curses_refresh(DisplayState *ds)
                 keysym = curses2keysym[chr];
 
             if (keysym == -1) {
-                if (chr < ' ')
-                    keysym = (chr + '@' - 'A' + 'a') | KEYSYM_CNTRL;
-                else
+                if (chr < ' ') {
+                    keysym = chr + '@';
+                    if (keysym >= 'A' && keysym <= 'Z')
+                        keysym += 'a' - 'A';
+                    keysym |= KEYSYM_CNTRL;
+                } else
                     keysym = chr;
             }
 
index 1decd1119d9ee436eb8239fd4059fd3385401a60..c0d5eb452fa4922dc4d10f5237607239c50ab604 100644 (file)
@@ -55,6 +55,7 @@ static const int curses2keysym[CURSES_KEYS] = {
     [0x7f] = KEY_BACKSPACE,
     ['\r'] = KEY_ENTER,
     ['\n'] = KEY_ENTER,
+    [27] = 27,
     [KEY_BTAB] = '\t' | KEYSYM_SHIFT,
 };