如何解码xterm响应?

时间:2017-01-29 04:35:17

标签: encoding terminal xterm

我正在构建一个使用pty.js在我的计算机上打开伪终端的应用程序。我收到的回复如下:

]0;ec2-user@ip-172-31-62-237:~[?1034h[ec2-user@ip-172-31-62-237 ~]$ ls
]0;ec2-user@ip-172-31-62-237:~[ec2-user@ip-172-31-62-237 ~]$ pwd
/home/ec2-user

我假设pty.js正在发送特定的编码,但我不确定编码是什么以及如何解码。任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:2)

那些不是响应(终端会响应),而是由应用程序(而不是终端)发送的控制序列。我看到一些实例(如果转义字符显示为 ^[] ),OSC可能打印为^[[,CSI打印为^[

]0;ec2-user@ip-172-31-62-237:~

看起来像是设置窗口标题的控件(来自xterm,虽然有几个程序支持它),

OSC Ps ; Pt BEL
OSC Ps ; Pt ST
...
            Ps = 0  -> Change Icon Name and Window Title to Pt.

[?1034h

看起来像xterm的保留曲目中的另一个序列(通常不受其他程序支持):

CSI ? Pm h
          DEC Private Mode Set (DECSET).
...
            Ps = 1 0 3 4  -> Interpret "meta" key, sets eighth bit.
          (enables the eightBitInput resource).

对于给定的示例, encoding 不是一个因素。

为了捕获应用程序的输出,script程序非常有用。我使用一个小实用程序(unmap)将生成的typescript文件转换为可读形式,但cat -v通常足以用于此目的。

进一步阅读:XTerm Control Sequences