Korzystanie z php ncurses, jestem ciekawy, aby zrozumieć, co dokładnie robią funkcje ncurses_def_shell_mode()
i ncurses_def_prog_mode()
. Nie są one udokumentowane w podręczniku PHP i nie pomogło mi to, o czym bardzo natknąłem się w man ncurses
.Co dokładnie robią ncurses_def_shell_mode() i ncurses_def_prog_mode()?
Jeśli zadzwonię ncurses_def_shell_mode()
a następnie zresetować z ncurses_reset_shell_mode()
przed wywołaniem ncurses_end()
, który w zależności od źródła tego rozszerzenia należy zadzwonić endwin
w ncurses, terminal kursor jest nadal jakoś stracone.
<?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;
?>
Próbowałem i bez, ncurses_def_shell_mode()
i ncurses_def_prog_mode()
, ale jakoś okno nie zostało poprawnie zresetowane przy wyjściu mimo właściwie nazywając reset. Czy nie rozumiem, jak te funkcje mają działać? Udało mi się wykopać bardzo mało informacji, aby uzyskać lepszy wgląd w ich właściwe użycie.
Wiem, że ncurses może być archaiczna, ale to właśnie sprawia, że o wiele trudniej jest wiedzieć, jak jej używać.
Spodziewane zachowanie polega na tym, że po wywołaniu ncurses_reset_shell_mode()
lub ncurses_reset_prog_mode()
okno powłoki lub prog powinno powrócić do wcześniej zapisanego stanu, tak jak było wcześniej.
Rzeczywistym zachowaniem wydaje się być to, że skorupa jest stanem zerwanym po wyjściu. Kursor nie miga, pisanie nie powoduje niczego w terminalu. Jednak terminal odbiera poprawnie dane wejściowe, ponieważ wpisywanie komend i naciśnięcie Enter nadal działa.