转义码VT102和ANSI

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转义码VT102和ANSI相关的知识,希望对你有一定的参考价值。

我使用minicom通过串行线路与一个转储以十六进制接收的字符的设备进行通信。我这样做是为了查看某些键的转义码。我使用VT102终端仿真和ANSI一次尝试过minicom。

对于VT102和ANSI,箭头键对应

Up:    Esc [ A
Down:  Esc [ B
Right: Esc [ C
Left:  Esc [ D

这与我在几个网站上找到的相匹配,例如VT102 User Guide

我尝试了其他密钥,我在整个网络上找不到任何参考:

            VT102         ANSI
Home:     Esc [ 1 ~      Esc [ H
End:      Esc O F        Esc O F
Insert:   Esc [ 2 ~      Esc [ @

这些代码是标准的吗?什么标准?我在哪里可以找到互联网上的比赛?

如果我尝试命令行(xfce-terminal),按此顺序按Home,End和Insert:

$ cat | hexdump -C
^[[H^[[F^[[2~00000000  1b 5b 48 1b 5b 46 1b 5b  32 7e                    |.[H.[F.[2~|

似乎Home等于Minicom ANSI序列,End将'O'改为'[',而Insert等于Minicom VT102转义序列。 同样运行GtkTerm。

我在Windows上尝试使用TeraTerm,结果仍然不同。

总结

           Minicom VT102        Minicom ANSI    xfce-terminal & GtkTerm    TeraTerm VT100/VT102
Home:         Esc [ 1 ~           Esc [ H              Esc [ H                   Esc [ 1 ~
End:          Esc O F             Esc O F              Esc [ F                   Esc [ 4 ~
Insert:       Esc [ 2 ~           Esc [ @              Esc [ 2 ~                 Esc [ 2 ~
答案

特殊键没有标准。现有标准(最近,ECMA-48最后修改于1991年)仅处理应用程序可以发送到终端的控制序列(具有非常少量的控制序列,其引起来自终端的响应)。

特殊键(和最常用的控制序列)记录在terminal databases中,例如ncurses's。但是在阅读终端描述时,您必须记住,许多终端可以根据它们设置的模式发送不同的转义序列(或根本不发送)。这些将由这些终端仿真器的开发人员记录,但对于给定的示例,开发人员不提供该信息。

什么是ncurses是唯一的文档:xfce终端和gtkterm是"skins"使用VTE获取所有相关功能。如果你查看那些依赖项,你会看到一些版本信息可以与ncurses中的描述相关(启动here)。

以上是关于转义码VT102和ANSI的主要内容,如果未能解决你的问题,请参考以下文章

使用 ANSI / VT100 代码在 PowerShell 控制台中输出彩色文本

读取设备状态报告 ANSI 转义序列回复

为啥ANSI颜色转义码不起作用[重复]

Python:如何使 ANSI 转义码在 Windows 中也能正常工作?

如何使用ansi转义码为python中的特定字符单元着色,其中字符单元格位置由变量确定

将 ANSI 转义(终端格式/颜色代码)转换为 HTML 的库 [关闭]