private static TerminalSequence ConsumeEscapeSequence(XTermInputBuffer stream) { stream.PushState(); var next = stream.Read(); switch (next) { case '[': return(ConsumeCSI(stream)); case ']': return(ConsumeOSC(stream)); case 'P': return(ConsumeDeviceControlStringSequence(stream)); case '#': return(ConsumeCharacterSize(stream)); case ' ': return(ConsumeCompliance(stream)); case '%': return(ConsumeUnicode(stream)); case '(': case ')': case '*': case '+': case '-': case '.': case '/': return(ConsumeCharacterSet(next, stream)); case 'Y': var vt52mc = new Vt52MoveCursorSequence { Row = stream.ReadRaw() - ' ', Column = stream.ReadRaw() - ' ' }; stream.Commit(); System.Diagnostics.Debug.WriteLine(vt52mc.ToString()); return(vt52mc); default: var esc = new EscapeSequence { Command = next.ToString() }; stream.Commit(); //System.Diagnostics.Debug.WriteLine(esc.ToString()); return(esc); } }
private static TerminalSequence ConsumeSS3Sequence(XTermInputBuffer stream) { var next = stream.ReadRaw(); var ss3 = new SS3Sequence { Command = next.ToString() }; stream.Commit(); //System.Diagnostics.Debug.WriteLine(ss3.ToString()); return(ss3); }