2017-12-07 2 views
0

Das Standard-Xterm-Programm verfügt über eine Tek4014-Emulation für einige einfache Grafikausgaben. Dies ist jedoch in den meisten (allen?) Successoren wie rxvt, gnome-terminal oder kterm nicht implementiert.So ermitteln Sie die Grafikfunktionen eines x11-Terminalfensters

Allerdings melden fast alle X11-Terminals xterm als (Teil von) der Umgebungsvariablen , was es für ein Programm schwierig macht festzustellen, ob das zugrunde liegende Terminal über Grafikfunktionen verfügt.

Ist es möglich, das programmatisch zu finden? Und gibt es moderne Terminal-Fenster (neben Xterm), die Tek4014-Grafiken implementieren, vielleicht als Add-on?

Antwort

1

Eigentlich kterm bietet Tek4014 Emulation nach seinen Menüs. Sie beziehen sich wahrscheinlich auf KDE Konsole, die nicht. TeraTerm (eine Windows-Anwendung) unterstützt diese Funktion Berichten zufolge ebenfalls.

Zurück zum Punkt: Es gibt keine nützliche Methode, um zu sagen, ob ein bestimmtes Terminal ein bestimmtes Feature unterstützt. Einige Terminals geben Statusinformationen zurück, die angeben, um welchen Typ von Terminal es sich handelt und welche optionalen Funktionen es haben kann (basierend auf den Geräteantworten von DEC und ähnlichen Terminals). Das Tektronix-Terminal hatte keine solche Statusabfrage/Antwort (siehe XTerm Control Sequences).

Sich auf die Statusantworten in jedem Fall zu verlassen, gibt nicht viel Sicherheit, da einige Entwickler Antworten auf xterm fest codieren.

Da das Terminal wird Ihnen nicht sagen, der einzige Weg, um dies zu überprüfen wäre durch tatsächliche Inspektion. Jemand könnte ein Programm erstellen, das Screenhumps machen und überprüfen kann, dass das Terminal auf die Sequenzen reagiert, aber es gibt immer noch den Haken, dass der Wechsel zwischen vt100 (oder ähnlich) und tek4014 möglicherweise nicht mit der gleichen Escape-Sequenz in xterm erfolgt. Diese Escape-Sequenz gehört schließlich nicht zum Standardrepertoire eines Hardware-Terminals.

0

Die Sequenz zum Senden von Geräteattributen bewirkt, dass das Terminal mit einer kryptischen Zeichenfolge antwortet. Programme wie vim verwenden dies, um zu untersuchen, welche Version von xterm sie beschäftigen, aber ich kenne keine spezifische Dokumentation, um die Ergebnisse zu interpretieren. Vielleicht Lesequelle?

See:

What is the ANSI escape code sequence "ESC[>c"?

Probieren Sie es selbst:

printf "\E[c\n" ; sleep 1 ; echo 

Meine Nicht-xterm xterm kompatiblen Terminal sagt: "\ E [1, 2c?" Zurück.

+0

Das identifiziert es als (nicht grafische) vt100. Es gibt keine entsprechende Abfrage/Antwort für Tek4014. –

0

Wenn Sie Zugriff auf das X11-Display haben, auf dem das Terminal ausgeführt wird, können Sie Folgendes tun. Geben Sie die Esc-Sequenz "enter Tektronix mode" "\E[?38h" ein und achten Sie darauf, dass ein neues Fenster geöffnet wird. Die WM_CLIENT_LEADER-Eigenschaft sollte wahrscheinlich die ID des ursprünglichen Terminalfensters sein, und die WM_CLASS-Eigenschaft sollte wahrscheinlich "tektronix" enthalten (ich habe nur mit der tatsächlichen xterm-Anwendung überprüft).

Wenn Sie dies von Ihrer Textmodusanwendung aus tun müssen, können Sie versuchen, zu überprüfen, ob ein Wechsel zum Tek-Fenster tatsächlich etwas bewirkt.Zum Beispiel

echo -en '\n\E[?38h' && echo -en 12345678 && echo -en '\E\003' && \ 
    echo -en '\e[6n' && sleep 1 && echo -en '\n' 

druckt eine neue Zeile, wechselt zum Tek-Fenster druckt einige Zeichen gibt, kehrt zurück in die VT-Fenster, und fordern Sie die Cursorposition Bericht. Da der gesamte Druck im Tek-Modus war, sollte der Cursor in Spalte 1 bleiben. Wenn das Terminal jedoch den Tek-Modus nicht unterstützt, würden die Zeichen im Hauptfenster gedruckt und die Spalte wäre> 1.

Verwandte Themen