首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >终端仿真器滚动缓冲区不保留ncurses屏幕

终端仿真器滚动缓冲区不保留ncurses屏幕
EN

Stack Overflow用户
提问于 2017-04-25 03:55:02
回答 1查看 342关注 0票数 0

使用来自AIX的默认curses库的系统具有以下行为:每次清理和重写屏幕时,终端仿真器都会将旧屏幕保留在其滚动缓冲区中,因此您可以在清理之前向后滚动每个屏幕。

现在,使用ncurses 6,也许还有一些修改(我们不知道原始代码是否有变化),所有的终端模拟器都不再保留旧的屏幕。

有没有什么我们可以做的(编程,设置,...)以确保或允许模拟器在清理屏幕之前将其保留在滚动缓冲区中?

EN

回答 1

Stack Overflow用户

发布于 2017-04-25 05:05:06

您所描述的更有可能是终端描述,而不是curses库。但是,您似乎没有描述特性( AIX和ncurses在描述xterm时都使用该特性)。

默认情况下,如果编译ncurses,它将使用自己的终端数据库。可以将其配置为(编译时)使用与AIX相同的二进制格式,在这种情况下,可以将TERMINFO_DIRS设置为首先指向AIX的终端数据库。

源代码中的INSTALL文件告诉您这一点(打包人员当然需要读取该文件):

代码语言:javascript
运行
复制
--with-caps=XXX
    Specify an alternate terminfo capabilities file, which makes the
    configure script look for "include/Caps.XXX".  A few systems, e.g.,
    AIX 4.x use the same overall file-format as ncurses for terminfo
    data, but use different alignments within the tables to support
    legacy applications.  For those systems, you can configure ncurses
    to use a terminfo database which is compatible with the native
    applications.

例如,Caps.aix4文件适用于更高版本的AIX。

AIX的系统终端数据库是/usr/share/lib/terminfo,用它的curses库编译的应用程序将在那里查找。ncurses的TERMINFO_DIRS变量提供了一个要查找的位置列表( AIX curses会忽略该变量)。

使用AIX的终端数据库的一个缺点是,它本质上是经过一些细微调整的SVr3,并且不能正确处理线条绘制(具体地说,它不假定AIX重置线条绘制模式)。因此,将一个终端数据库与另一个库一起使用(如果按照建议配置了ncurses,则两者都是可能的)会使一些应用程序在进行线条绘制时出现错误行为。但是通过这种方式设置,您可以比较终端描述,并查看是哪个功能导致了您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43596655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档