^M should run the command

svn path=/trunk/; revision=19905
This commit is contained in:
Brandon Turner 2005-12-05 01:56:40 +00:00
parent 4c43e1c8b9
commit a0af76e470

View file

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