Crtl-C gives a new line when reading input Modified: trunk/reactos/subsys/system/cmd/cmd.c Modified: trunk/reactos/subsys/system/cmd/cmdinput.c _____
Modified: trunk/reactos/subsys/system/cmd/cmd.c --- trunk/reactos/subsys/system/cmd/cmd.c 2005-12-05 01:56:40 UTC (rev 19905) +++ trunk/reactos/subsys/system/cmd/cmd.c 2005-12-05 02:59:29 UTC (rev 19906) @@ -1449,7 +1449,7 @@
ConOutPuts (commandline); }
- if (*commandline) + if (*commandline && !CheckCtrlBreak(BREAK_INPUT)) { ParseCommandLine (commandline); if (bEcho && !bIgnoreEcho && (!bIsBatch || bEchoThisLine)) @@ -1469,8 +1469,25 @@ BOOL WINAPI BreakHandler (DWORD dwCtrlType) {
+ DWORD dwWritten; + INPUT_RECORD rec; static BOOL SelfGenerated = FALSE; + + rec.EventType = KEY_EVENT; + rec.Event.KeyEvent.bKeyDown = TRUE; + rec.Event.KeyEvent.wRepeatCount = 1; + rec.Event.KeyEvent.wVirtualKeyCode = _T('C'); + rec.Event.KeyEvent.wVirtualScanCode = _T('C') - 35; + rec.Event.KeyEvent.uChar.AsciiChar = _T('C'); + rec.Event.KeyEvent.uChar.UnicodeChar = _T('C'); + rec.Event.KeyEvent.dwControlKeyState = RIGHT_CTRL_PRESSED;
+ WriteConsoleInput( + hIn, + &rec, + 1, + &dwWritten); + if ((dwCtrlType != CTRL_C_EVENT) && (dwCtrlType != CTRL_BREAK_EVENT)) { _____
Modified: trunk/reactos/subsys/system/cmd/cmdinput.c --- trunk/reactos/subsys/system/cmd/cmdinput.c 2005-12-05 01:56:40 UTC (rev 19905) +++ trunk/reactos/subsys/system/cmd/cmdinput.c 2005-12-05 02:59:29 UTC (rev 19906) @@ -409,8 +409,9 @@
#endif break; - + case _T('M'): + case _T('C'): /* ^M does the same as return */ if(!(ir.Event.KeyEvent.dwControlKeyState & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED))) @@ -513,10 +514,12 @@ } #ifdef _UNICODE ch = ir.Event.KeyEvent.uChar.UnicodeChar; - if ((ch >= 32 && ch <= 255) && (charcount != (maxlen - 2))) + if ((ch >= 32 && ch <= 255) && (charcount != (maxlen - 2)) && + !(ir.Event.KeyEvent.dwControlKeyState & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED))) #else ch = ir.Event.KeyEvent.uChar.AsciiChar; - if ((UCHAR)ch >= 32 && (charcount != (maxlen - 2))) + if ((UCHAR)ch >= 32 && (charcount != (maxlen - 2)) && + !(ir.Event.KeyEvent.dwControlKeyState & (RIGHT_CTRL_PRESSED|LEFT_CTRL_PRESSED))) #endif /* _UNICODE */ { /* insert character into string... */