【问题标题】:How to use the current screen in ncurses as a background?如何使用ncurses中的当前屏幕作为背景?
【发布时间】:2012-10-02 15:08:12
【问题描述】:

我想使用 ncurses 在当前终端上创建覆盖。通过查看 C 示例,有一个 cur_scr 变量包含当前屏幕的数据,我假设我可以使用它来清除屏幕,以创建覆盖终端的 ncurses 外观。

我想用似乎有问题的 ruby​​ ncurses 执行此操作,因为我不知道如何从 ruby​​ 访问 cur_scr 变量。

我该怎么做?

【问题讨论】:

  • 您想在程序运行之前将您的 ncurses 界面覆盖在屏幕的现有内容上?
  • 是的,这正是我的意思。

标签: ruby ncurses


【解决方案1】:

恐怕这是不可能的。

当你启动 ncurses 时,它无法知道屏幕当前包含什么,所以它做的第一件事就是清除屏幕。一旦屏幕被清除,ncurses 确实知道屏幕的状态,因此它可以覆盖内容,但它通过始终在内存中保持屏幕的完整状态来做到这一点。 (见How Do ncurses et. al. Work?

有些终端可以保存屏幕内容,并在 ncurses 应用程序结束时重新显示,但这不是 ncurses 的特性,而是终端的特性。

【讨论】:

  • 所以终端没有截屏库?
  • 据我所知,vt220 和 ansi 转义序列都不包括确定屏幕上给定位置的当前字符的方法。特定的终端可能会提供扩展,但它肯定是不可移植的。
  • 显然screen -L 会记录终端,所以我可以“空白”、“打印屏幕日志”、“显示窗口”。我会试一试并报告。当我cat screenlog.0 它也输出颜色时:D 但我不确定我是否可以在 ncurses 中以这种方式输出到屏幕。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多