端末エミュレータを実装する場合、どのタイプの端末がサポートされますか? [閉鎖]

端末エミュレータを実装する場合、どのタイプの端末がサポートされますか? [閉鎖]

VT100は事実上の標準だと聞きました。これは、VT100だけをサポートすると、私の端末が大きな問題なしに既存のコマンドラインアプリケーションで動作することを意味しますか?そうでなければ、端末が実用的であることをどのように確認できますか?この目標を達成するのに役立つ参考資料はありますか?

答え1

トーマス・ディッキーが過熱しようとしています。

長年にわたり VT10x ターミナルについて循環する地下情報を無視します。ほとんどは間違っていました。 DEC VT100、VT101、およびVT102は、これらの文書を読むことで理解できる非常に具体的な機能セットを実装しています。

それはいいえしかし、この用語を実際の意味vt100と混同する人は何ですか?vt102通常、彼らは多くのことができる端末エミュレーションについて話します。もっと実際のVT10xよりはるかに優れています。少ない。たとえば、実際のDEC VT102にはシリアルプリンタが接続されており、それにアクセスするための制御シーケンスがあります。それもそうだったいいえ人々が誤って「vt102」と考えている最新の端末エミュレータと実際の端末には多くの制御シーケンスがあります。たとえば、SGR カラー変更の概念はありません。

2つの基本的なオプションがあります。

  • termcap / terminfoデータベースで定義されている既存の端末タイプとの互換性を実装します。これを行うには、既存のすべての端末タイプに対して説明されている動作を正確に複製して正しく実行する必要があります。 (noshツールセットのターミナルエミュレータは、Linuxでターミナルタイプをエミュレートすることでこれを行うことができます。拡張キーとファンクションキーのターミナルタイプのユニークで制限されたエンコーディングを複製する必要がありますlinux。)linux
  • ユーザーが動作を設計した独自の端末タイプを実装し、それをtermcap / terminfoデータベースに含める必要があります。厳密に言えば、これはPuTTY端末エミュレータが行うことです。正しいterminfoの説明は次のとおりです。 puttyputty-256colorまたはputty-sco

前者の場合、標準が何であるかは重要ではありません。いくら非標準でも説明された動作を複製する必要があるからです。後者の場合、事実上の基準を見つけないでください。それを見てください(これ実際標準の一部は1976年以来存在していました。

  • ECMA-48(1976年に初めて発表され、後でISO / IEC規格、ISO / IEC 6429として採用)は次のことを説明します。
    • C0制御コード、
    • C1コントロールコード(よく知られていませんが、タブストップの設定/削除、および前方/後方索引付けなどのいくつかの便利な操作を処理します)
    • すべてのC1制御コードの7ビットエイリアス(例:[ESC実際8ビット制御文字U + 009B)、
    • CSIによって導入された制御シーケンス
    • そして他の多くのもの。
  • ISO/IEC 2022 では、7 ビット文字セット間の切り替えについて説明します。最初からUTF-8機能を実装したい場合は、Markus Kuhnと彼の発明者がmosh示すように、ISO / IEC 2022を完全に無視するのが最善です。
  • ISO/IEC 8613-6(1989年発行、1994年改訂)では、パレットの「インデックスカラー」および「ダイレクトカラー」RGB選択を含む、カラーSGR制御シーケンスのECMA-48拡張について説明しています。 (両方直接色そしてインデックスカラーISO/IEC 8613-2で定義されています。後者は「256色」という名前でわかります。 )

    重要なヒント: ほとんどすべての実装は実際の標準ではなく地下ソースで動作するため(または単に互いにコピーするため)、この標準を誤って実装します。標準は、§13.1.8で、コロン(:、「3/10」)をサブパラメータ区切り文字として使用することを指定します。ほとんどすべての実装でセミコロン(;)を誤って使用すると、解析があいまいになります。多くのソフトウェアがこのエラーを解決しました。

追加読書

関連情報