Patchwork [PATH,curses] Fix control-{@[\]^_} and ESC

login
register
mail settings
Submitter Samuel Thibault
Date Aug. 29, 2010, 11:23 p.m.
Message ID <20100829232309.GD5158@const.famille.thibault.fr>
Download mbox | patch
Permalink /patch/62981/
State New
Headers show

Comments

Samuel Thibault - Aug. 29, 2010, 11:23 p.m.
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>

Patch

diff --git a/ui/curses.c b/ui/curses.c
index ed3165e..5d949d6 100644
--- a/ui/curses.c
+++ b/ui/curses.c
@@ -238,9 +240,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;
             }
 
diff --git a/ui/curses_keys.h b/ui/curses_keys.h
index 1decd11..c0d5eb4 100644
--- a/ui/curses_keys.h
+++ b/ui/curses_keys.h
@@ -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,
 };