The Tab key was considered a ctrl-key and Shift-Tab was ignored.

This commit is contained in:
Peter Berg Larsen 2003-10-09 04:26:29 +00:00 committed by Alexandre Julliard
parent 67d9f38059
commit 09f71d08ec
1 changed files with 19 additions and 5 deletions

View File

@ -464,11 +464,18 @@ static unsigned WCCURSES_FillSimpleChar(INPUT_RECORD* ir, unsigned real_inchar)
switch (real_inchar) switch (real_inchar)
{ {
case 127: inchar = '\b'; break; case 9: inchar = real_inchar;
case 10: inchar = '\r'; real_inchar = 27; /* so that we don't think key is ctrl- something */ break; 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: case 27:
/* we assume that ESC & and the second character are atomically generated /* we assume that ESC & and the second character are atomically
* otherwise, we'll have a race here * 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) if ((inchar = wgetch(stdscr)) != ERR)
{ {
@ -692,7 +699,14 @@ static unsigned WCCURSES_FillCode(struct inner_data* data, INPUT_RECORD* ir, int
case KEY_B2: case KEY_B2:
case KEY_C1: case KEY_C1:
case KEY_C3: 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_BEG:
case KEY_CANCEL: case KEY_CANCEL:
case KEY_CLOSE: case KEY_CLOSE: