[curses] Handle tab keys (3/4)

Peter Berg Larsen pebl at math.ku.dk
Tue Oct 7 23:12:22 CDT 2003


Changelog:
- the Tab key was considered a ctrl-key and Shift-Tab was ignored.
-------------- next part --------------
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:


More information about the wine-patches mailing list