当前数据位置和活动的显示位置之差

问题描述 投票:0回答:1

是什么活动数据位置和Active展现位置之间在ECMA-48单独定义在4.2.5和4.2.6的密钥输出差?

我想我的光标移动到不同的协调与ECMA-48定义的转义序列控制台。

我遇到了两种实现方式做同样的事情,但实际上讲的东西在不同的定义。

根据定义:

杯子

银联导致演示组件要移动的活动显示位置...

HVP

HVP导致在数据分量将要移动的活动数据位置...

当与C代码进行测试:

杯子:

printf("Hello");
printf("\x1b" "[" "%d" ";" "%d" "H", 5, 5);
printf("World");

HVP:

printf("Hello");
printf("\x1b" "[" "%d" ";" "%d" "f", 5, 5);
printf("World");

它们产生相同的结果。

那么,什么差别,标准试图通过定义这两个方面做出?

编辑:

据6.1.5,

在一个单向设备,无论它只有一个呈现组件或呈现组件和数据组件中,在激活的数据位置和有源展现位置之间没有差异。

而在第16页(6.1.5),第一段:

因为字符进展和字符路径之间的可能的差异如在一些双向环境,在数据分量和在呈现组件活性提示位置的活性数据位置的坐标可以不同。

解释活动的显示位置和活动数据的位置与实际示例的双向环境。

而且,其中一个我应该使用围绕控制台移动?

[N.B:别提你推荐使用ncurses的。但在ECMA-48的落实任何建议受到欢迎]

c console escaping cursor-position ansi-escape
1个回答
0
投票

因为它说:一个单向设备没有什么区别。你必须研究一个双向设备(并启用相应的模式)。

它指的是其中光标可以作出推进终端以某种其它方式印刷的字符比之后的左设备到右,包装顶部至底部。你可以看到这样的事情在一个GUI Web浏览器访问一个网页,在阿拉伯语:文本从去从右到左,但你可以嵌入在其文本分量,再从书面左到右。该数据和演示立场是用来保持该混合物直。 (如果没有混合,这是一个很重要的问题,但相应的兴趣不大)。

VT100s从来没有这样做。最后的DEC的初期/中期,20世纪90年代的终端时,VT520没有(很可能是没有广泛使用的终端支持双向控制)。虽然在HVP ECMA-48(1979年8月)的2nd edition,在第4版(1986年12月)中加入有关方向的措辞。它是为5th edition(1991年6月)有所修订。

一些终端仿真器能够做到这一点,但缺乏一个硬件终端(这已经证明了这是谁写的文件,该委员会的成员想好了这个功能),有超过解释的差异和分歧。

© www.soinside.com 2019 - 2024. All rights reserved.