Changelog: - the Tab key was considered a ctrl-key and Shift-Tab was ignored.
diff -b -u wine-20030911/programs/wineconsole/curses.c wine-my/programs/wineconsole/curses.c --- wine-20030911/programs/wineconsole/curses.c 2003-09-07 07:08:14.000000000 +0200 +++ wine-my/programs/wineconsole/curses.c 2003-09-13 02:52:09.000000000 +0200 @@ -492,11 +492,18 @@ switch (real_inchar) { - case 127: inchar = '\b'; break; - case 10: inchar = '\r'; real_inchar = 27; /* so that we don't think key is ctrl- something */ break; + case 9: inchar = real_inchar; + real_inchar = 27; /* so that we don't think key is ctrl- something */ + break; + case 10: inchar = '\r'; + real_inchar = 27; /* Fixme: so that we don't think key is ctrl- something */ + break; + case 127: inchar = '\b'; + break; case 27: - /* we assume that ESC & and the second character are atomically generated - * otherwise, we'll have a race here + /* we assume that ESC & and the second character are atomically + * generated otherwise, we'll have a race here. FIXME: This gives 1 sec. delay + * because curses looks for a second character. */ if ((inchar = wgetch(stdscr)) != ERR) { @@ -720,7 +727,14 @@ case KEY_B2: case KEY_C1: case KEY_C3: - case KEY_BTAB: + goto notFound; + case KEY_BTAB: /* shift tab */ + numEvent = WCCURSES_FillSimpleChar(ir, 0x9); + ir[0].Event.KeyEvent.dwControlKeyState |= SHIFT_PRESSED; + ir[1].Event.KeyEvent.dwControlKeyState |= SHIFT_PRESSED; + if (numEvent != 2) WINE_ERR("FillsimpleChar has changed"); + break; + case KEY_BEG: case KEY_CANCEL: case KEY_CLOSE: