「ターミナル」と「ターミナルエミュレータ」の違いをある程度理解しています。前者は、メインフレームコンピュータなどのデバイスに接続され、テキストで対話する実際のハードウェア周辺機器を指し、後者は、実際のハードウェアではなくソフトウェアでのみ同じことができるソフトウェアです。 。
私は最近、端末エミュレータがこれらの古い端末(人気のあるVT100など)がコンピュータにキーコードを送信する方法を実際にエミュレートし、コンピュータであるかのように偽装することを知りました。しかし、私のLinuxシステムでいくつかのトラブルシューティングと設定を実行する過程で、これらすべてについて考えさせる奇妙でやや面倒な問題に直面している間にいくつかの調査を行った結果、を使用していることを発見しました。このタイプの端末がマウスをサポートするのに十分な早期マウスが作成されたとは想像しないでください。程度。
私はなぜこれを指摘するのですか?まあ、ファンクションキー、Caps Lock、数字ロックなどは、当時多くの端末で一般的に触れることができませんでした(少なくともファンクションキーはキーボードの比較的新機能であることを知っています)。ターミナルエミュレータはこれらのターミナルをエミュレートするため、特別なエスケープシーケンスの送信など、これらのキーをサポートする解決策を使用する必要があります。私の経験では、これはキーボード処理とターミナルエミュレータがキーボードを処理する方法が予想よりもはるかに複雑になりました(少なくとも私の考えでは)。
実際に、F4の上のファンクションキーに関連するキーボードショートカットを定義しようとする試みがいくつかのターミナルエミュレータで機能しない理由と、多くのターミナルエミュレータで(少なくとも)そのようなファンクションキーを押す理由を理解しようとすると、私はこれらすべての質問について考えますし始めました。これらすべての経験について、コマンドラインに「〜」と入力しました。 (これらのキーは専用のキーコードではなくエスケープシーケンスを送信するためです。
私は、なぜ私たちはそもそも存在しない(少なくとも私が知っている限り)これらの古代の端末装置をエミュレートする必要がありますか?ユーザーがキーボードを使用してコマンドを入力して「ターミナルをエミュレート」できるようにコンピュータと対話できるようにするソフトウェアが必要であることを理解しています。しかし、端末エミュレータがまだこれらのデバイスの1つであるかのように偽装している場合、何が役に立ちますか?機能は最新のキーボードインターフェースとは大きく異なり、最新のキーボードと比較していくつかの点で欠けていますか?私が見逃したことがなければ、これらのターミナル以降の最新のデバイスの性能と特徴が発展しているので、そうすることは不適切だと考えられます。
また、不必要な複雑さのように見えます。数十年前には、存在しなかったキーを表すエスケープシーケンスを処理するのではなく、キーボードをコンピュータに特定の標準キーコードをすべて送信するボタンパネルと同じくらい単純であると思いますか?これらの古い端末をサポートする必要があるかどうかはまだまだあると理解できますが、それでも広く使用されており、これがまだ問題になるとは想像できません。コンピュータのモニターとキーボードの組み合わせ自体が端末と見なされないのはなぜですか。端末エミュレータが既存の端末の送信方法に依存せずにコンピュータにテキストを送信する方法を定義するのはどうですか?その時点から、コンピュータのアカウントインターフェイスはどのように変わりましたか?
答え1
これは、エミュレートされる端末にファンクションキーがないため、これらのキーが専用のキーコードの代わりにエスケープシーケンスを送信するためです。
いいえ。これは、「ターミナル」プロトコルが帯域内信号を使用し、基本的に各バイトがテキストとして処理されるためです。何もない本文でこれを具体的に記述する必要はありません(例:脱出する)これは、本質的にキーコードが「エスケープシーケンス」であることを意味します。つまり、エスケープシーケンスはい特殊キーコード。
最新の端末エミュレータが元の端末ができなかったタスクを実行するためにエスケープシーケンスの概念を発明したわけではありません。かなり、それらターミナルは、テレタイプライターができないタスクを実行するためにエスケープシーケンスを発明しました。たとえば、VT100にはPF1-PF4ファンクションキーがあり、対応する「キーコード」は実際には\e[P
...\e[S
エスケープシーケンスでした。同様に、プログラムは「VT100エスケープシーケンス物理端末の動作(カーソルの移動、テキストの外観など)を制御します。
コンピュータのモニターとキーボードの組み合わせ自体が端末と見なされないのはなぜですか。端末エミュレータが既存の端末の送信方法に依存せずにコンピュータにテキストを送信する方法を定義するのはどうですか?その時点から、コンピュータのアカウントインターフェイスはどのように変わりましたか?
これはすでに存在します。これがX11がどのように機能するかです。これはWaylandがどのように機能するかです。低レベルのLinux入力およびグラフィックスAPI(evdevとdrm)、またはWindows、macOS、AmigaOS、SunViewなどのグラフィックアプリケーションにも当てはまります。これらすべてのUIシステムには、「古い端末がどのように実装されたか」という単一の要素に依存しないアプリケーションを生成するためのAPIがあります。
実際に文字セル形式(X11からHTML5まで様々なAPIの上)にとらわれないコマンドシェルインタフェースを作成しようとする試みが多くありましたが、見た目にもかかわらず本物私の考えでは、彼らは採用をたくさん見たことがないようです。
問題は端末エミュレータの目的ですいいえ文字を送るという明示的な目的で「文字を送る」だけです。VT100などの端末の方式、WebブラウザがHTMLを特別に扱うように設計されているのと同じです。現在、VT100ターミナルプロトコルは、広範なアプリケーションのために依然として広く使用されている汎用クロスプラットフォームインターフェースの1つです。
Windows NTの「コンソール」は、まったくVTスタイルの端末エミュレーションに基づいていません。色の変更、マウスクリックの受信などのタスクを実行するために、帯域外Win32 API呼び出しを使用します。しかし、Windows 10では最終的にVT端末のように動作し始めました。 (実際、元のWin32コンソールAPI機能はすべて「廃止予定」と表示されます。)
「Bell LabsのPlan 9」オペレーティングシステムには、エスケープコードをまったくサポートしていないコンソールウィンドウを備えたウィンドウシステムもありました。プログラムが何か素晴らしい仕事をしたい場合は、同じウィンドウから直接グラフィックモードに切り替えました。 。たとえば、テキストエディタであるSamとacmeは、端末ベースのUIが通常持っている制限なしに、ほとんどのテキストUIを使用します。 (Plan 9では、他のオペレーティングシステムと対話するための専用の「VTエミュレータ」アプリケーションを提供しています。)
ユーザーがキーボードを使用してコマンドを入力して「ターミナルをエミュレート」できるようにコンピュータと対話できるようにするソフトウェアが必要であることを理解しています。しかし、端末エミュレータがまだこれらのデバイスの1つであるかのように偽装した場合、何が役に立ちますか?機能は最新のキーボードインターフェースとは大きく異なり、最新のキーボードと比較していくつかの点で欠けていますか?
前述のように、端末エミュレータはインタフェースとして機能します。たくさん従来のソフトウェアおよびハードウェアエコシステムは、VT100などのターミナルプロトコルを使用しています。
規約はい拡張可能結局のところ、カラーサポート(最初の8色、次に256色、その後は16M True Color)とマウスのサポートが得られましたが、どちらも元々VT100にはありませんでした(現在は「Xterm」プロトコルとしてより一般的に知られています)。 「VT100」)、Terminology、Kittyなどのプログラムには、インライン画像、ハイパーリンク、インタラクティブボタンなどを表示する拡張機能もあります。