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... */
Show replies by date