2017-12-07 21 views
0

標準のxtermプログラムには、単純なグラフィック出力用のTek4014エミュレーションがあります。しかしこれはrxvt、gnome-terminal、ktermのようなほとんどの(すべての)sucessorsでは実装されていません。x11端末ウィンドウのグラフィック機能の決定方法

しかし、ほとんどのX11端末では、環境変数TERM(の一部)としてxtermが報告されています。そのため、プログラムがその端末にグラフィックス機能があるかどうかを判断することは困難です。

これをプログラムで見つけることは可能でしょうか?そして、Tek4014のグラフィックスを実装している、おそらくアドオンとしての最新のターミナルウィンドウ(xtermの横にある)がありますか?

答えて

1

実際にktermは、メニューに従ってTek4014エミュレーションを提供します。あなたはおそらくKDE konsoleを指していますが、そうではありません。 TeraTerm(Windowsアプリケーション)はこの機能もサポートしていると伝えられている。

に戻る:指定された端末が特定の機能をサポートしているかどうかを示す有用な方法はありません。一部の端末は、端末のタイプと、それが持つ可能性のあるオプション機能(DECなどの端末からの応答に基づいて)を示すステータス情報を返します。テクトロニクス端末には、このようなステータスクエリー/レスポンスはありませんでした(XTerm Control Sequences参照)。

いずれの場合でもステータス応答に依存しても、xtermに一致する応答をハードコードする開発者が多いため、多くの保証はありません。

端末では通知されないため、実際の検査で確認する唯一の方法です。誰かがscreendumpを実行して端末がシーケンスに応答することを確認するプログラムを構築するかもしれませんが、vt100(または同様のもの)とtek4014の間の切り替えがxtermで使用されているのと同じエスケープシーケンスでは行えないという落とし穴があります。結局のところ、そのエスケープシーケンスは、どのハードウェア端末の標準レパートリーにもありません。

0

送信デバイスの属性シーケンスによって、端末は暗黙の文字列で返信します。 vimのようなプログラムは、彼らが扱っているxtermのバージョンを調べるためにこれを使用しますが、結果を解釈するための具体的な文書はわかりません。おそらく読書のソースですか?

参照:

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

はそれを自分で試してみてください。

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

私の非のxterm xtermの互換性のある端末が言う "\ Eを[1; 2cの?" バック。

+0

これはそれを非グラフィカルなvt100として識別します。 Tek4014に対応するクエリ/応答はありません。 –

0

端末が動作するX11ディスプレイにアクセスできる場合は、次の操作を実行できます。 「Enter Tektronix mode」エスケープ・シーケンス"\E[?38h"を出力し、新しいウィンドウが開くのを見てください。 WM_CLIENT_LEADERプロパティはおそらく元のターミナルウィンドウのIDでなければならず、WM_CLASSプロパティにはおそらく "tektronix"が含まれているはずです(私は実際のxtermアプリケーションでのみチェックしています)。

これをテキストモードアプリケーションから実行する必要がある場合は、Tekウィンドウへの切り替えが実際に何か機能しているかどうかを確認できます。例えば、

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

が改行を出力し、テック・ウィンドウに切り替え、そこにいくつかの文字を印刷し、バックVTウィンドウに戻り、カーソルの位置報告を要求。すべての印刷がTekモードで行われていたため、カーソルは1列目のままになります。ただし、端末がTekモードをサポートしていない場合、文字はメインウィンドウに表示され、列は> 1になります。