【问题标题】:Do you know of documented uses of the APC (U+009F) control sequences?您知道 APC (U+009F) 控制序列的记录用途吗?
【发布时间】:2021-06-04 21:40:39
【问题描述】:

我正在寻找使用 APC(应用程序命令)控制字符的应用程序文档示例。我读过 ECMA-48,它的定义如下:

应用程序命令 APC - 应用程序命令

符号:(C1)

表示:09/15 或 ESC 05/15

APC 用作应用程序使用的控制字符串的开始分隔符。后面的命令字符串可能由 00/08 到 00/13 和 02/00 到 07/14 范围内的位组合组成。控制字符串由终止分隔符 STRING TERMINATOR (ST) 关闭。 命令字符串的解释取决于相关的应用程序。

我发现许多现代终端仿真器程序足以识别此控件以通过 ST 抑制 APC 的显示,这似乎与 ECMA 意图相匹配...我正在寻找任何使用“命名空间”的示例" 这可能允许不同的应用程序在命令序列中使用不同的内容。我会对终端仿真器使用 APC 序列执行某些操作的示例特别感兴趣。

示例

const APC = "\x9F"
const ST = "\x9C"

console.log(`Hello world${APC}hidden command${ST}!`)

在终端上显示(Windows 10)

PS > node index.js
Hello world!

“隐藏命令”不显示。这看起来不错,但如果我将输出传送到另一个应用程序,命令字符串就在那里。

有些 shell 似乎对 C1 版本的控制字符有点困惑,我有一些工作要做来记录。

背景

我正在考虑使用 APC 序列来允许将嵌入的数据(例如 JSON 格式)混合到标准输出流中。

【问题讨论】:

  • 如果您想将 Unicode 字符用于非标准用途,为什么不使用私人使用区域之一呢?它们适用于任何“依赖于实现”的东西。
  • 我认为私人使用区域是用于非标准图形字符的。我将放入 APC 中的字符将是标准 ASCII; JSON 文本都是可打印的。所以我断言这不会是非标准的,而是符合 ECMA(和 ANSI)定义的标准
  • 私人使用区域代码点绝对没有标准定义的语义,即标准也没有将它们定义为字形或字符,您可以根据需要使用它们。当然,最广为人知的用途是用于各种非 Unicode 脚本。
  • 不,我坚持我的主张,提供UAX #44 表 10 作为支持:控制代码(又名 Cc)根据定义仅限于 C0 和 C1 代码,它们不是真正的字符。私人使用代码(又名 Co)根据定义是字符,这意味着它们是图形的。

标签: unicode control-characters


【解决方案1】:

screen 手册中偶然发现了这个小金块。

Screen maintains a hardstatus line for every window. 
If a window gets selected, the display's hardstatus
will be updated to match the window's hardstatus line. 
If the display has no hardstatus the line  will  be  displayed
as a standard screen message.
The hardstatus line can be changed with the 
ANSI Application Program Command (APC):
"ESC_<string>ESC\".
As a convenience for xterm users the sequence
"ESC]0..2;<string>^G" is also accepted.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多