^M should run the command
authorBrandon Turner <turnerb7@msu.edu>
Mon, 5 Dec 2005 01:56:40 +0000 (01:56 +0000)
committerBrandon Turner <turnerb7@msu.edu>
Mon, 5 Dec 2005 01:56:40 +0000 (01:56 +0000)
svn path=/trunk/; revision=19905

reactos/subsys/system/cmd/cmdinput.c

index 8dd2812..76c28d8 100644 (file)
@@ -138,6 +138,7 @@ VOID ReadCommand (LPTSTR str, INT maxlen)
        WORD   wLastKey = 0;
        TCHAR  ch;
        BOOL bContinue=FALSE;/*is TRUE the second case will not be executed*/
+    BOOL bReturn = FALSE;
        TCHAR szPath[MAX_PATH];
 
        /* get screen size */
@@ -156,6 +157,9 @@ VOID ReadCommand (LPTSTR str, INT maxlen)
 
        do
        {
+    
+        bReturn = FALSE;
+        
                ConInKey (&ir);
 
                if (ir.Event.KeyEvent.dwControlKeyState &
@@ -406,6 +410,14 @@ VOID ReadCommand (LPTSTR str, INT maxlen)
 #endif
                                break;
 
+            case _T('M'):
+                /* ^M does the same as return */
+                if(!(ir.Event.KeyEvent.dwControlKeyState &
+                   (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED)))
+                {
+                    break;
+                }
+                    
                        case VK_RETURN:
                                /* end input, return to main */
 #ifdef FEATURE_HISTORY
@@ -415,6 +427,7 @@ VOID ReadCommand (LPTSTR str, INT maxlen)
 #endif
                                ConInDummy ();
                                ConOutChar (_T('\n'));
+                bReturn = TRUE;
                                break;
 
                        case VK_ESCAPE:
@@ -497,65 +510,57 @@ VOID ReadCommand (LPTSTR str, INT maxlen)
                                }
                                break;
 
-                       default:
+                       }
 #ifdef _UNICODE
-                               ch = ir.Event.KeyEvent.uChar.UnicodeChar;
-                               if ((ch >= 32 && ch <= 255) && (charcount != (maxlen - 2)))
+            ch = ir.Event.KeyEvent.uChar.UnicodeChar;
+            if ((ch >= 32 && ch <= 255) && (charcount != (maxlen - 2)))
 #else
-                               ch = ir.Event.KeyEvent.uChar.AsciiChar;
-                               if ((UCHAR)ch >= 32 && (charcount != (maxlen - 2)))
+            ch = ir.Event.KeyEvent.uChar.AsciiChar;
+            if ((UCHAR)ch >= 32 && (charcount != (maxlen - 2)))
 #endif /* _UNICODE */
-                               {
-                                       /* insert character into string... */
-                                       if (bInsert && current != charcount)
-                                       {
-                                               /* If this character insertion will cause screen scrolling,
-                                                * adjust the saved origin of the command prompt. */
-                                               tempscreen = _tcslen(str + current) + curx;
-                                               if ((tempscreen % maxx) == (maxx - 1) &&
-                                                   (tempscreen / maxx) + cury == (maxy - 1))
-                                               {
-                                                       orgy--;
-                                                       cury--;
-                                               }
-
-                                               for (count = charcount; count > current; count--)
-                                                       str[count] = str[count - 1];
-                                               str[current++] = ch;
-                                               if (curx == maxx - 1)
-                                                       curx = 0, cury++;
-                                               else
-                                                       curx++;
-                                               ConOutPrintf (_T("%s"), &str[current - 1]);
-                                               SetCursorXY (curx, cury);
-                                               charcount++;
-                                       }
-                                       else
-                                       {
-                                               if (current == charcount)
-                                                       charcount++;
-                                               str[current++] = ch;
-                                               if (GetCursorX () == maxx - 1 && GetCursorY () == maxy - 1)
-                                                       orgy--, cury--;
-                                               if (GetCursorX () == maxx - 1)
-                                                       curx = 0, cury++;
-                                               else
-                                                       curx++;
-                                               ConOutChar (ch);
-                                       }
-                               }
-#if 0
-                               else
-                               {
-                                       MessageBeep (-1);
-                               }
-#endif
-                               break;
-
-               }
+            {
+                /* insert character into string... */
+                if (bInsert && current != charcount)
+                {
+                        /* If this character insertion will cause screen scrolling,
+                                                                 * adjust the saved origin of the command prompt. */
+                        tempscreen = _tcslen(str + current) + curx;
+                    if ((tempscreen % maxx) == (maxx - 1) &&
+                        (tempscreen / maxx) + cury == (maxy - 1))
+                    {
+                        orgy--;
+                        cury--;
+                    }
+
+                    for (count = charcount; count > current; count--)
+                        str[count] = str[count - 1];
+                    str[current++] = ch;
+                    if (curx == maxx - 1)
+                        curx = 0, cury++;
+                    else
+                        curx++;
+                    ConOutPrintf (_T("%s"), &str[current - 1]);
+                    SetCursorXY (curx, cury);
+                    charcount++;
+                }
+                else
+                {
+                    if (current == charcount)
+                        charcount++;
+                    str[current++] = ch;
+                    if (GetCursorX () == maxx - 1 && GetCursorY () == maxy - 1)
+                        orgy--, cury--;
+                    if (GetCursorX () == maxx - 1)
+                        curx = 0, cury++;
+                    else
+                        curx++;
+                    ConOutChar (ch);
+                }
+            }
+               
                wLastKey = ir.Event.KeyEvent.wVirtualKeyCode;
        }
-       while (ir.Event.KeyEvent.wVirtualKeyCode != VK_RETURN);
+       while (!bReturn);
 
        SetCursorType (bInsert, TRUE);
 }