转义码VT102和ANSI

3

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

对于VT102和ANSI,箭头键对应于

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

这与我在几个网站上找到的内容相符,例如VT102用户指南

我尝试了其他一些键,但在整个网络中都找不到任何参考资料:

            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 ~
1个回答

0

没有关于特殊键的标准。现有的标准(最近的是1991年修订的ECMA-48)只涉及应用程序可以发送到终端的控制序列(其中只有很少一部分控制序列会引发终端的响应)。

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

ncurses是唯一的文档来源:xfce终端和gtkterm都使用VTE提供所有相关功能("外观")。如果您查看这些软件的依赖项,您会看到一些版本信息,可以与ncurses中的描述关联起来(从这里开始)。


我必须编写一个命令解释器。我使用vt220来解释“end”、“insert”和“home”键的转义代码,但minicom发送的“end”序列并不是我期望的。所以我想知道是我编写的解释器有问题,还是minicom发送了错误的序列。我还希望我的解释器与更多的软件兼容,包括minicvom、gtkterm和TeraTerm。 - mastupristi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接