1 diff -ur slang.old/src/slcurses.c slang/src/slcurses.c
2 --- slang.old/src/slcurses.c Fri Apr 24 09:16:46 1998
3 +++ slang/src/slcurses.c Sat Jul 4 07:30:31 1998
6 else if (ch == 0xFFFF) return ERR;
8 - return SLkp_getkey ();
9 + if ((ch = SLkp_getkey ()) != SL_KEY_ERR)
12 + return SLang_getkey ();
14 return SLang_getkey ();
16 diff -ur slang.old/src/slkeymap.c slang/src/slkeymap.c
17 --- slang.old/src/slkeymap.c Fri Apr 24 09:16:47 1998
18 +++ slang/src/slkeymap.c Sat Jul 4 07:41:42 1998
21 SLang_Key_Type *SLang_do_key(SLKeyMap_List_Type *kml, int (*getkey)(void))
23 + unsigned char SLang_Undo_Buffer [SL_MAX_INPUT_BUFFER_LEN];
24 + int SLang_Undo_Len = 0;
25 register SLang_Key_Type *key, *next, *kmax;
27 unsigned char input_ch;
31 input_ch = (unsigned char) SLang_Last_Key_Char;
32 + SLang_Undo_Buffer [SLang_Undo_Len++] = input_ch;
34 key = (SLang_Key_Type *) &((kml->keymap)[input_ch]);
38 key = kml->keymap + input_ch;
41 + if (getkey == (int (*)(void)) SLang_getkey)
42 + SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len);
47 /* It appears to be a prefix character in a key sequence. */
50 SLang_Key_TimeOut_Flag = 1;
51 SLang_Last_Key_Char = (*getkey)();
52 + SLang_Undo_Buffer [SLang_Undo_Len++] = (unsigned char) SLang_Last_Key_Char;
53 SLang_Key_TimeOut_Flag = 0;
60 + if (getkey == (int (*)(void)) SLang_getkey)
61 + SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len);
65 diff -ur slang.old/src/slkeypad.c slang/src/slkeypad.c
66 --- slang.old/src/slkeypad.c Fri Apr 24 09:16:47 1998
67 +++ slang/src/slkeypad.c Sat Jul 4 07:30:31 1998
69 key = SLang_do_key (Keymap_List, (int (*)(void)) SLang_getkey);
70 if ((key == NULL) || (key->type != SLKEY_F_KEYSYM))
72 - SLang_flush_input ();
73 + /* SLang_flush_input (); */