3

我使用 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 ~
4

1 回答 1

0

There's no standard for special keys. The existing standards (most recently, ECMA-48 last revised in 1991) only deal with control sequences which an application can send to the terminal (with a very small number of control sequences which elicit a response from the terminal).

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

ncurses 中的唯一文档是:xfce 终端和 gtkterm 是使用 VTE 实现所有相关功能的“皮肤” 。如果您查看这些依赖项,您将看到一些与 ncurses 中的描述相关的版本信息(从这里开始)。

于 2019-02-18T10:15:33.333 回答