如何知道 ANSI 控制码的结尾?

如何知道 ANSI 控制码的结尾?

我正在为串行终端编写代码,并且正在实现用于移动光标、清除屏幕等的 ANSI 转义码,我很好奇如何知道使用哪个,因为似乎没有代码的明确停止点。

我在用着https://www2.ccs.neu.edu/research/gpc/VonaUtils/vona/terminal/vtansi.htm作为参考

例如,如果我收到代码,我开始读取字符,但如果我得到值 75='K',则可能是ESC[K= 擦除行尾,或者 75 作为代码的计数,例如ESC[{COUNT=75}C移动光标 75 列正确的。如果我收到的代码是擦除后面带有打印 A 的行怎么办?据我所知,其代码和光标右侧 75 列将收到完全相同的序列。

我可能错过了一些明显的东西,但有人可以给我提示吗?谢谢

答案1

对于“ANSI”(实际上ECMA-48),开始控制序列的字符,确定一组最终的人物。它被记录在接近开始的时候ECMA-48第 5.4 节特别相关,尽管您可能需要 ASCII 图表来理解其术语)。

范围 75控制序列中的字符是75,而不是其值恰好是的字符75。两者之间没有混淆。

您引用的链接是由不熟悉该标准的人编写的文档。 ncurses 常见问题解答中提到了这一点如何使用 VT100 获取颜色?

相关内容