使用php ncurses,我很想知道具体是ncurses_def_shell_mode()
和ncurses_def_prog_mode()
函数的具体内容。它们没有在PHP手册中记录,我在man ncurses
中偶然发现的事情并没有帮助。
如果我拨打ncurses_def_shell_mode()
,然后在调用ncurses_reset_shell_mode()
之前使用ncurses_end()
重置,endwin
根据分机的来源应该在ncurses中调用<?php
ncurses_init(); // start ncurses window
ncurses_def_shell_mode();
sleep(2); // print some stuff here
ncurses_reset_shell_mode();
ncurses_end(); // clean up and get out
exit;
?>
,终端光标仍然以某种方式丢失。
ncurses_def_shell_mode()
我尝试使用和不使用ncurses_def_prog_mode()
和ncurses_reset_shell_mode()
,但不管怎样,尽管正确调用了重置,但在退出时窗口仍未正确重置。我误解了这些功能应该如何工作?我能够挖掘出非常少的信息,以便更深入地了解它们的正确用法。
我知道ncurses可能过时,但这使得知道如何正确使用它变得更加困难。
此处的预期行为是,在调用ncurses_reset_prog_mode()
或{{1}}之后,shell或prog窗口应该恢复到之前保存的状态。
实际行为似乎是shell在退出时处于破碎状态。光标不闪烁,键入不会显示终端中的任何内容。但是,终端正在正确接收输入,因为键入命令并按下输入仍然有效。
答案 0 :(得分:2)
php ncurses是ncurses的包装器。您要询问的功能在ncurses手册页中有更详细的记录,例如curs_kernel(3x)。这表示这些功能可以保存/恢复终端模式。这些对应于termios中的curses设置(终端I / O设置)。
终端I / O设置不包括闪烁光标(使用终端特定的转义序列完成)。对于echo,manual page可以提供帮助:
def_prog_mode
和def_shell_mode
例程保存 当前的终端模式作为&#34;程序&#34; (在诅咒中)或 &#34;壳&#34; (不是在curses中)声明由reset_prog_mode
和reset_shell_mode
例程使用。这个完成了 由newterm()分配的每个屏幕上下文。
当ncurses启动时,例如initscr
(ncurses_init()
),它会保存shell模式并初始化prog模式,基本上将终端置于 raw 模式更好地控制它。
致电ncurses_def_shell_mode();
ncurses_reset_shell_mode();
恢复&#34; 时,进一步阅读:
ncurses_init()
已定义。