/// <summary> /// 初始化终端解析器 /// </summary> /// <param name="eventDlg">终端事件回调</param> public void Initialize() { this.isAnsiMode = true; this.isApplicationMode = false; this.Keyboard = new VTKeyboard(); this.Keyboard.SetAnsiMode(true); this.Keyboard.SetKeypadMode(false); this.unicodeText = new List <byte>(); this.oscString = new StringBuilder(); this.oscParam = 0; this.intermediate = new List <byte>(); this.parameters = new List <int>(); this.state = VTStates.Ground; // 状态机默认设置为基态 }
private void EnterDCSIntermediate() { this.state = VTStates.DCSIntermediate; }
private void EnterDCSParam() { this.state = VTStates.DCSParam; }
private void EnterDCSIgnore() { this.state = VTStates.DCSIgnore; }
private void EnterDCSEntry() { this.state = VTStates.DCSEntry; this.ActionClear(); }
private void EnterOSCTermination() { this.state = VTStates.OSCTermination; }
private void EnterOSCString() { this.state = VTStates.OSCString; }
/// <summary> /// This state is entered whenever the C0 control ESC is received. This will immediately cancel any escape sequence, control sequence or control string in progress /// </summary> private void EnterEscape() { this.state = VTStates.Escape; // 根据https://vt100.net/emu/dec_ansi_parser#STDCSIGN这个网页上的表格,第一次进入Escape状态的时候需要做clear动作 this.ActionClear(); }
private void EnterCSIParam() { this.state = VTStates.CSIParam; }
private void EnterCSIIgnore() { this.state = VTStates.CSIIgnore; }
private void EnterCSIIntermediate() { this.state = VTStates.CSIIntermediate; }
private void EnterCSIEntry() { this.state = VTStates.CSIEntry; // 根据https://vt100.net/emu/dec_ansi_parser#STDCSIGN这个网页上的表格,第一次进入csi entry状态的时候需要做clear动作 this.ActionClear(); }
private void EnterGround() { this.state = VTStates.Ground; }
private void EnterEscapeIntermediate() { this.state = VTStates.EscapeIntermediate; }
private void EnterDCSPassThrough() { this.state = VTStates.DCSPassthrough; }
private void EnterVt52Param() { this.state = VTStates.Vt52Param; }
private void EnterOSCParam() { this.state = VTStates.OSCParam; }