La maggior parte degli emulatori di terminale è in grado di salvare e ripristinare il contenuto dello schermo.
I codici terminfo per questo sono smcup
per accedere alla modalità a schermo intero e rmcup
per uscire. (I codici termcap sono ti
e te
.)
Se queste funzionalità sono attivate nel database terminfo
, qualsiasi programma che utilizza ncurses
stamperà la stringa smcup
in entrata, e la stringa rmcup
in uscita.
Sul sistema che sto utilizzando in questo momento, le corde sono (con \E
che rappresenta il carattere di escape):
smcup: \E7\E[?1;47h
rmcup: \E[2J\E[?1;47l\E8
Questo ripristina il contenuto precedente dello schermo, nonché la posizione del cursore.
I significati specifici delle sequenze (per xterm) sono documented here:
- smcup:
\E7
Salva Cursore
\E[?1;47h
applicazione Tasti cursore; Utilizzare schermo alternativo Buffer
- rmcup:
\E[2J
schermata Cancella
\E[?1;47l
applicazione Tasti cursore; Uso normale buffer dello schermo
\E8
Ripristinare Cursore
(Ciò presuppone che sto comprendere l'uso del punto e virgola correttamente;. Io non sono sicuro al 100% di quello)
fonte
2015-07-22 23:05:26
Ho imparato qualcosa di nuovo. Questo spiega molto; grazie. – Qix
L'impostazione dei tasti cursore dell'applicazione normalmente non viene eseguita in smcup/rmcup - la maggior parte dei programmi presume che sia stata eseguita nella stringa di inizializzazione (is2). Vedi ad esempio [mastice] (http://invisible-island.net/ncurses/terminfo.src.html#tic-putty) nel database del terminale ncurses. E, naturalmente, la modalità 47 è stata a lungo obsoleta con xterm (dal [1998] (http://invisible-island.net/xterm/xterm.log.html#xterm_90)). –
@ThomasDickey: Apparentemente le mie voci termcap/terminfo non sono aggiornate (il che non è sorprendente). Grazie per l'informazione. Farò qualche ricerca e aggiornerò la mia risposta Real Soon Now. –