public void HandleInterrupt(TerminalInterrupt interrupt) { switch (interrupt) { case TerminalInterrupt.CHAR: // queue up the characters until we have a completed line char c = driver.RecvChar(); partialLineQueue.Add(c); if (Echo) { driver.SendChar(c); } break; case TerminalInterrupt.ENTER: if (Echo) { driver.SendNewLine(); } // get all the characters from the partial line queue and create a completed line string line = new string (partialLineQueue.ToArray()); completedLineQueue.Insert(line); partialLineQueue.Clear(); break; case TerminalInterrupt.BACK: // throw away the last character entered if (partialLineQueue.Count > 0) { partialLineQueue.RemoveAt(partialLineQueue.Count - 1); if (Echo) { driver.SendChar((char)8); driver.SendChar((char)0); driver.SendChar((char)8); } } else { driver.SendChar((char)7); } break; } }
public void HandleInterrupt(TerminalInterrupt interrupt) { switch (interrupt) { case TerminalInterrupt.CHAR: // queue up the characters char c = driver.RecvChar(); if (Echo) { driver.SendChar(c); } partialLineQueue.Add(c); break; case TerminalInterrupt.ENTER: if (Echo) { driver.SendNewLine(); } // get all the characters from the queue, and turn them into a completed line completedLineQueue.Insert(new string(partialLineQueue.ToArray())); partialLineQueue.Clear(); break; case TerminalInterrupt.BACK: // throw away LAST character, not first if (partialLineQueue.Count > 0) { if (Echo) { // wipe last character driver.SendChar('\b'); driver.SendChar(' '); driver.SendChar('\b'); } partialLineQueue.RemoveAt(partialLineQueue.Count - 1); } break; } //stuff will happen here }