【问题标题】:How do I decode xterm responses?如何解码 xterm 响应?
【发布时间】:2017-01-29 04:35:16
【问题描述】:

我正在构建一个应用程序,它使用 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 正在发回特定的编码,但我不确定编码是什么以及如何解码。任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: encoding terminal xterm


    【解决方案1】:

    这些不是响应(终端会响应),而是由应用程序(不是终端)发送的控制序列。我看到了一些实例(如果转义字符显示为 ^[,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).
    

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

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

    延伸阅读:XTerm Control Sequences

    【讨论】:

      猜你喜欢
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2019-12-15
      • 2019-07-14
      • 2015-07-21
      相关资源
      最近更新 更多