-diff -ur slang.old/src/slcurses.c slang/src/slcurses.c
---- slang.old/src/slcurses.c Fri Apr 24 09:16:46 1998
-+++ slang/src/slcurses.c Sat Jul 4 07:30:31 1998
-@@ -134,7 +134,10 @@
- }
- else if (ch == 0xFFFF) return ERR;
- SLang_ungetkey (ch);
-- return SLkp_getkey ();
-+ if ((ch = SLkp_getkey ()) != SL_KEY_ERR)
-+ return ch;
-+ else
-+ return SLang_getkey ();
- }
- return SLang_getkey ();
- }
-diff -ur slang.old/src/slkeymap.c slang/src/slkeymap.c
---- slang.old/src/slkeymap.c Fri Apr 24 09:16:47 1998
-+++ slang/src/slkeymap.c Sat Jul 4 07:41:42 1998
-@@ -343,6 +343,8 @@
-
- SLang_Key_Type *SLang_do_key(SLKeyMap_List_Type *kml, int (*getkey)(void))
- {
-+ unsigned char SLang_Undo_Buffer [SL_MAX_INPUT_BUFFER_LEN];
-+ int SLang_Undo_Len = 0;
- register SLang_Key_Type *key, *next, *kmax;
- unsigned int len;
- unsigned char input_ch;
-@@ -356,6 +358,7 @@
- return NULL;
-
- input_ch = (unsigned char) SLang_Last_Key_Char;
-+ SLang_Undo_Buffer [SLang_Undo_Len++] = input_ch;
-
- key = (SLang_Key_Type *) &((kml->keymap)[input_ch]);
-
-@@ -372,7 +375,11 @@
-
- key = kml->keymap + input_ch;
- if (key->type == 0)
-+ {
-+ if (getkey == (int (*)(void)) SLang_getkey)
-+ SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len);
- return NULL;
-+ }
- }
-
- /* It appears to be a prefix character in a key sequence. */
-@@ -385,6 +392,7 @@
- {
- SLang_Key_TimeOut_Flag = 1;
- SLang_Last_Key_Char = (*getkey)();
-+ SLang_Undo_Buffer [SLang_Undo_Len++] = (unsigned char) SLang_Last_Key_Char;
- SLang_Key_TimeOut_Flag = 0;
-
- len++;
-@@ -458,6 +466,8 @@
- kmax = next;
- }
-
-+ if (getkey == (int (*)(void)) SLang_getkey)
-+ SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len);
- return NULL;
- }
-
-diff -ur slang.old/src/slkeypad.c slang/src/slkeypad.c
---- slang.old/src/slkeypad.c Fri Apr 24 09:16:47 1998
-+++ slang/src/slkeypad.c Sat Jul 4 07:30:31 1998
-@@ -110,7 +110,7 @@
- key = SLang_do_key (Keymap_List, (int (*)(void)) SLang_getkey);
- if ((key == NULL) || (key->type != SLKEY_F_KEYSYM))
- {
-- SLang_flush_input ();
-+ /* SLang_flush_input (); */
- return SL_KEY_ERR;
- }
-