public void WriteSpecialKey (ConsoleKeyInfo key)
{
switch (key.Key) {
case ConsoleKey.Backspace:
if (cursorLeft > 0) {
if (cursorLeft <= rl_startx && cursorTop == rl_starty)
break;
cursorLeft--;
SetCursorPosition (cursorLeft, cursorTop);
WriteConsole (" ");
SetCursorPosition (cursorLeft, cursorTop);
}
#if DEBUG
logger.WriteLine ("BS left: {0} top: {1}", cursorLeft, cursorTop);
logger.Flush ();
#endif
break;
case ConsoleKey.Tab:
int n = 8 - (cursorLeft % 8);
for (int i = 0; i < n; i++){
IncrementX ();
}
WriteConsole ("\t");
break;
case ConsoleKey.Clear:
WriteConsole (clear);
cursorLeft = 0;
cursorTop = 0;
break;
case ConsoleKey.Enter:
break;
default:
break;
}
#if DEBUG
logger.WriteLine ("left: {0} top: {1}", cursorLeft, cursorTop);
logger.Flush ();
#endif
}