]>
Commit | Line | Data |
---|---|---|
7a3ceb62 | 1 | diff -ru slang-1.4.4.vanilla/src/slcurses.c slang-1.4.4/src/slcurses.c |
2 | --- slang-1.4.4.vanilla/src/slcurses.c Wed Feb 21 02:17:36 2001 | |
3 | +++ slang-1.4.4/src/slcurses.c Sun Jun 24 14:50:06 2001 | |
4 | @@ -127,7 +127,10 @@ | |
5 | } | |
6 | else if (ch == 0xFFFF) return ERR; | |
7 | SLang_ungetkey (ch); | |
8 | - return SLkp_getkey (); | |
9 | + if ((ch = SLkp_getkey ()) != SL_KEY_ERR) | |
10 | + return ch; | |
11 | + else | |
12 | + return SLang_getkey (); | |
13 | } | |
14 | return SLang_getkey (); | |
15 | } | |
16 | diff -ru slang-1.4.4.vanilla/src/slkeymap.c slang-1.4.4/src/slkeymap.c | |
17 | --- slang-1.4.4.vanilla/src/slkeymap.c Wed Feb 21 02:17:37 2001 | |
18 | +++ slang-1.4.4/src/slkeymap.c Sun Jun 24 14:50:06 2001 | |
19 | @@ -335,6 +335,8 @@ | |
20 | ||
21 | SLang_Key_Type *SLang_do_key(SLKeyMap_List_Type *kml, int (*getkey)(void)) | |
22 | { | |
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; | |
26 | unsigned int len; | |
27 | unsigned char input_ch; | |
28 | @@ -348,6 +350,7 @@ | |
29 | return NULL; | |
30 | ||
31 | input_ch = (unsigned char) SLang_Last_Key_Char; | |
32 | + SLang_Undo_Buffer [SLang_Undo_Len++] = input_ch; | |
33 | ||
34 | key = (SLang_Key_Type *) &((kml->keymap)[input_ch]); | |
35 | ||
36 | @@ -364,7 +367,11 @@ | |
37 | ||
38 | key = kml->keymap + input_ch; | |
39 | if (key->type == 0) | |
40 | + { | |
41 | + if (getkey == (int (*)(void)) SLang_getkey) | |
42 | + SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len); | |
43 | return NULL; | |
44 | + } | |
45 | } | |
46 | ||
47 | /* It appears to be a prefix character in a key sequence. */ | |
48 | @@ -377,6 +384,7 @@ | |
49 | { | |
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; | |
54 | ||
55 | len++; | |
56 | @@ -450,6 +458,8 @@ | |
57 | kmax = next; | |
58 | } | |
59 | ||
60 | + if (getkey == (int (*)(void)) SLang_getkey) | |
61 | + SLang_ungetkey_string (SLang_Undo_Buffer, SLang_Undo_Len); | |
62 | return NULL; | |
63 | } | |
64 | ||
65 | diff -ru slang-1.4.4.vanilla/src/slkeypad.c slang-1.4.4/src/slkeypad.c | |
66 | --- slang-1.4.4.vanilla/src/slkeypad.c Wed Feb 21 02:17:37 2001 | |
67 | +++ slang-1.4.4/src/slkeypad.c Sun Jun 24 14:50:06 2001 | |
68 | @@ -122,7 +122,7 @@ | |
69 | key = SLang_do_key (Keymap_List, (int (*)(void)) SLang_getkey); | |
70 | if ((key == NULL) || (key->type != SLKEY_F_KEYSYM)) | |
71 | { | |
72 | - SLang_flush_input (); | |
73 | + /* SLang_flush_input (); */ | |
74 | return SL_KEY_ERR; | |
75 | } | |
76 |