SCO function key mode now affects the small keypad (Ins, Del, etc)
[sgt/putty] / window.c
index 546a917..3d4f080 100644 (file)
--- a/window.c
+++ b/window.c
@@ -2758,7 +2758,8 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam,
            return p - output;
        }
 
-       if (cfg.funky_type == 5 && code >= 11 && code <= 34) {
+       if (cfg.funky_type == 5 &&     /* SCO function keys */
+           code >= 11 && code <= 34) {
            char codes[] = "MNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@[\\]^_`{";
            int index = 0;
            switch (wParam) {
@@ -2780,6 +2781,16 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam,
            p += sprintf((char *) p, "\x1B[%c", codes[index]);
            return p - output;
        }
+       if (cfg.funky_type == 5 &&     /* SCO small keypad */
+           code >= 1 && code <= 6) {
+           char codes[] = "HL.FIG";
+           if (code == 3) {
+               *p++ = '\x7F';
+           } else {
+               p += sprintf((char *) p, "\x1B[%c", codes[code-1]);
+           }
+           return p - output;
+       }
        if ((vt52_mode || cfg.funky_type == 4) && code >= 11 && code <= 24) {
            int offt = 0;
            if (code > 15)