Die meisten Terminalemulatoren können den Inhalt des Bildschirms speichern und wiederherstellen.
Die Terminalcodes dafür sind smcup
, um den Vollbildmodus zu aktivieren und rmcup
, um es zu verlassen. (Die älteren termcap-Codes sind ti
und te
.)
Wenn diese Fähigkeiten in der terminfo
Datenbank aktiviert sind, jedes Programm, das ncurses
nutzt die smcup
Zeichenfolge auf Eintrag drucken, und die rmcup
Zeichenfolge an der Ausfahrt.
auf dem System, ich bin im Augenblick verwendet wird, sind die Saiten (\E
mit Escape-Zeichen repräsentiert):
smcup: \E7\E[?1;47h
rmcup: \E[2J\E[?1;47l\E8
Diese den vorherigen Inhalt des Bildschirms sowie die Cursorposition wieder herstellt.
Die spezifischen Bedeutungen der Sequenzen (für xterm) sind documented here:
- smcup:
\E7
Speichern Cursor
\E[?1;47h
Anwendung Cursortasten; Alternativen Fensterpuffer
- rmcup:
\E[2J
Erase Bildschirm
\E[?1;47l
Anwendung Cursor-Tasten; Verwenden Sie Normal Bildschirm Buffer
\E8
wiederherstellen Cursor
(Dies setzt voraus, verstehe ich die Verwendung des Semikolons richtig;. Ich bin nicht 100% sicher, dass)
Etwas Neues gelernt. Das erklärt viel; Danke. – Qix
Das Setzen von Cursor-Tasten wird normalerweise nicht in smcup/rmcup durchgeführt - die meisten Programme nehmen an, dass dies in der Initialisierungs-Zeichenkette (is2) geschieht. Siehe zum Beispiel [putty] (http://invisible-island.net/ncurses/terminfo.src.html#tic-putty) in der ncurses-Terminal-Datenbank. Und natürlich ist der Modus 47 mit xterm schon lange überholt (seit [1998] (http://invisible-island.net/xterm/xterm.log.html#xterm_90)). –
@ThomasDickey: Anscheinend sind meine termcap/terminfo Einträge veraltet (was nicht überraschend ist). Danke für die Information. Ich werde etwas recherchieren und meine Antwort Real Soon Now aktualisieren. –