Sto imparando a programmare in C e voglio essere in grado di digitare caratteri nel terminale mentre il mio codice è in esecuzione senza premere restituire. Il mio programma funziona, tuttavia quando chiamo initscr()
, lo schermo viene cancellato, anche dopo aver chiamato filter()
. La documentazione per filter
suggerisce che dovrebbe disabilitare la cancellazione, tuttavia non è questo il mio caso.Come si usa getch dalle maledizioni senza cancellare lo schermo?
#include <stdio.h>
#include <curses.h>
#include <term.h>
int main(void) {
int ch;
filter();
initscr();
cbreak();
noecho();
keypad(stdscr, TRUE);
while((ch = getch()) != EOF);
endwin();
return 0;
}
Perché il codice sopra riportato cancella lo schermo e cosa si può fare per risolverlo?
Sto usando Debian Lenny (stabile) e gnome-terminal se questo aiuta.
Per PDCurses è possibile impostare l'PDC_PRESERVE_SCREEN variabili d'ambiente o PDC_RESTORE_SCREEN qualsiasi valore: dal file STORIA: – Brandin
PDC_PRESERVE_SCREEN Se questa variabile d'ambiente è impostato, PDCurses non cancellerà lo schermo sul bianco predefinito all'avvio. Ciò consente di sovrapporre a una finestra nella parte superiore dello sfondo dello schermo esistente. PDC_RESTORE_SCREEN Se questa variabile di ambiente è impostata, PDCurses prenderà una copia del contenuto dello schermo nello al momento dell'avvio di PDCurses; initscr(), e quando viene chiamato endwin(), lo schermo verrà ripristinato. – Brandin