VT100 终端协议中的奇怪列号“:0”
Strange column number " :0 " in VT100 terminal protocol
我正在解释串行端口的一些输出。输出在 VT100 protocol 中。 VT100 终端协议使用一些控制字符序列来设置光标在屏幕上的位置。控制序列如下所示:
ESC[row;columnH
例如,
ESC[01;01H means set cursor to row 1, column 1.
但是当列号超过 2 位数时,我看到以下序列。
ESC[10;:0H
注意分号后的额外“:”。此控制序列位于 ESC[10;99H
之后,即第 10 行第 99 列。
我的理解是:0
= 100
。但是如果列号是 200 呢?
我不认为这实际上是有效的,或者,如果是这样,那完全是偶然的。传递给 CUP
(光标位置)命令(以及许多其他涉及屏幕坐标的参数)的参数仅限于一位或两位数字。
在 ASCII table 中,数字 9
后跟 :
所以,其中 99
表示 9 * 10 + 9
,:0
可能代表10 * 10 + 0
或100
:
假设该错误适用于更高的数字(我对此没有信心),您正在寻找 200
,这将是 20 * 10 + 0
或可能 D0
( D
是 ASCII 中比 :
大十的字符 table).
没有,相关标准没有规定位数限制为两位,比如因为VT100s可以寻址24行132列
忽略参数中的前导零。 OP 可能报告了一个仅使用两位数字的问题(来自某些未提及的程序)。这与终端本身无关(除非是在针对终端仿真器开发人员的错误报告的上下文中)。
resize程序假设一个人的终端不大于 999 x 999 以将光标定位到 "past" 的右下角屏幕。对于那些不依赖多个像素来辨别字符的人,xterm 确实使用了一种名为 "Unreadable" 的字体,这可能会导致更大的屏幕。
我正在解释串行端口的一些输出。输出在 VT100 protocol 中。 VT100 终端协议使用一些控制字符序列来设置光标在屏幕上的位置。控制序列如下所示:
ESC[row;columnH
例如,
ESC[01;01H means set cursor to row 1, column 1.
但是当列号超过 2 位数时,我看到以下序列。
ESC[10;:0H
注意分号后的额外“:”。此控制序列位于 ESC[10;99H
之后,即第 10 行第 99 列。
我的理解是:0
= 100
。但是如果列号是 200 呢?
我不认为这实际上是有效的,或者,如果是这样,那完全是偶然的。传递给 CUP
(光标位置)命令(以及许多其他涉及屏幕坐标的参数)的参数仅限于一位或两位数字。
在 ASCII table 中,数字 9
后跟 :
所以,其中 99
表示 9 * 10 + 9
,:0
可能代表10 * 10 + 0
或100
:
假设该错误适用于更高的数字(我对此没有信心),您正在寻找 200
,这将是 20 * 10 + 0
或可能 D0
( D
是 ASCII 中比 :
大十的字符 table).
没有,相关标准没有规定位数限制为两位,比如因为VT100s可以寻址24行132列
忽略参数中的前导零。 OP 可能报告了一个仅使用两位数字的问题(来自某些未提及的程序)。这与终端本身无关(除非是在针对终端仿真器开发人员的错误报告的上下文中)。
resize程序假设一个人的终端不大于 999 x 999 以将光标定位到 "past" 的右下角屏幕。对于那些不依赖多个像素来辨别字符的人,xterm 确实使用了一种名为 "Unreadable" 的字体,这可能会导致更大的屏幕。