【问题标题】:unknown ansi escape codes - )0[, ?7h and ?7l未知的 ansi 转义码 - )0[, ?7h 和 ?7l
【发布时间】:2015-05-13 05:19:32
【问题描述】:

所以我在某些输出中看到了一些我不熟悉的 ANSI 转义码。

\\x1B)0[
\\x1B[?7h
\\x1B[?7l

http://ascii-table.com/ansi-escape-sequences.php 表示 \\x1B[=7h\\x1B[=7l 将(分别)设置和重置启用换行的模式,但那些有 = 而不是?

有什么想法吗?

【问题讨论】:

  • 可能是某种字符集问题,? 应该是 =
  • 这就是我的想法,但我要返回的字符的十六进制是 \\x3F,这是 ASCII 中 ? 的十六进制。
  • en.wikipedia.org/wiki/ANSI_escape_code 执行 Control-F "[?"。您会看到\\x1B[?5h\\x1B[?5l 闪烁终端屏幕。也许用 7 替换 5 会闪烁其他东西。不过,那里的第一行似乎完全无效,因为没有一个转义码以 ) 开头
  • 顺便说一下,OP的引用URL描述了ansi.sys,它与VT100只是模糊相关。

标签: terminal xterm ansi-escape vt100


【解决方案1】:

第一个 \\x1B)0(如果没有被错误引用)可能是字符集控件之一:

        C = 0  -> DEC Special Character and Line Drawing Set.
....
ESC ) C   Designate G1 Character Set (ISO 2022, VT100).
          The same character sets apply as for ESC ( C.

? 表示隐私模式设置。 ISO-6429 (ECMA-48) 定义了四个:<>?=。对应的mode(还是引用XTerm Control Sequences):

CSI ? Pm h
      DEC Private Mode Set (DECSET).
...
        Ps = 7  -> Wraparound Mode (DECAWM).

应用程序应该在反转视频和恢复正常状态之间短暂暂停。

【讨论】:

  • OP 的序列有 7 个,所以这是环绕模式 (DECAWM)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
  • 2014-08-25
  • 2018-10-01
  • 1970-01-01
  • 2016-09-09
  • 2021-06-28
相关资源
最近更新 更多