ruby:curses:程序结束时不清除屏幕?

时间:2017-03-30 00:03:49

标签: ruby screen ncurses curses

我使用ruby curses包(ruby 2.1.5)。

在某些情况下,我希望在程序结束时清除 not 屏幕,以便 Curses.stdscr 的最终内容为程序退出时仍在我的终端上显示。

我尝试将电话留给 Curses.close_screen ,但终止屏幕在退出时仍然被清除。

有没有办法告诉ruby中的curses在程序终止时不清除屏幕?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

捆绑的Ruby curses模块缺少(许多)curses函数,例如reset_shell_mode,这是执行此操作的常用方法:

  

reset_prog_mode reset_shell_mode 例程还原   终端到"程序" (在curses中)或" shell" (在   诅咒)状态。这些是endwin(3x)自动完成的   并且,在 endwin 之后, doupdate ,所以他们通常是   不叫。

或者,您可以使用MRuby(提供此功能)。

在任何一种情况下,退出都可以将终端的特殊键设置为application mode。解决方法是发送转义序列(在终端数据库中找到 rmkx )。

答案 1 :(得分:0)

我明白了:事实证明,如果我退出程序时使用退出!而不是退出,则无法调用curses的屏幕重置逻辑,并且 stdscr 的最新内容仍保留在我的屏幕上。

在调用 Curses.init_screen ...

之前,我还会执行以下操作
{{1}}

...我在退出之前发出此命令! ...

{{1}}

(我想接受这个答案,但我不能再这样做了2天。我会在那个时候这样做。)