ECMA-48和ANSI X3.64实施

时间:2018-12-22 01:14:16

标签: tmux gnu-screen ansi-escape

我目前正在使用python开发带有基于文本的用户界面的控制台应用程序,这是一系列行业标准软件的一种开源UNIX替代品,并在我看来以最小化如此规模的软件对硬件/软件的要求。

但是,我不喜欢使用curses / ncurses来了解此类库的工作原理并为自己的目的实现它们。为此,我一直在-进行实验-使用ANSI转义序列会持续一段时间。

在某些时候,我觉得有必要像GNU Screen或tmux中那样将我的终端拆分(或用UNIX术语描述,多路复用)到会话,窗口或窗格中。但是,由于我上面提到的原因,我没有在项目中使用它们,而是试图发现它们的来源以获取启发。但是事实是,他们俩都需要C的广泛知识,至少在这一点上对我来说是这样,并且搜索源代码是详尽无遗的。

我发现GNU Screen文档引用了ECMA 48和ANSI X3.64。

屏幕用户手册

  

每个虚拟终端都提供DEC VT100终端的功能   以及ISO 6429(ECMA   48,ANSI X3.64)和ISO 2022标准(例如,插入/删除行和   支持多个字符集)。有回滚历史   每个虚拟终端的缓冲区和复制粘贴机制,   允许用户在窗口之间移动文本区域。

我还检查了ECMA 48和ANSI X3.64想要实现的目标,找不到线索。

我的问题实际上是在此时出现的。

  1. 如何找出那些标准中已实现的编码字符集?例如,ECMA 48的§8.3.123中提到了“设备组件选择模式”,我发现没有实现或使用它的迹象。

  2. Screen或tmux在创建窗口和窗格时的工作原理是什么?他们用于创建窗口或窗格的路径是什么。

我花在第二个问题上的时间很多,无处可去。我以为每次需要更新(调整大小,创建新窗格等)时,它们可能会扫描整个屏幕,绘制边框,用编码字符分隔行或列。我认为此选项可能是一个基本但令人沮丧的解决方案。而且我不确定屏幕或tmux是否可以这种方式工作。但是我很确定我在这里没有抓住关键点。

任何帮助,意见或建议都会受到赞赏。

0 个答案:

没有答案