前提条件
Linux仮想端末(tty)はVT102-仮想端末サブシステムのソースコード。
本物VT100(ほぼ似ています。VT102)には次のような動作があります。
- 内部にワイヤーモードでは、入力したすべての文字が最初にコンピュータに送信され、次に端末に返されます。ホストから戻るまで端末画面には何も表示されません。
- エスケープシーケンスも例外ではありません。ホストから返された後にのみ解析され実行されます。つまり、フォントの色を赤に変更するには入力する必要があり、そのシーケンスはコンピュータに送信され、再び
ESC[0;31m
エコーされます。VT102これを受けて分析して適用してください。ターミナルフォントの色を変更する他の方法はありません(ワイヤーモデル)。わからないVT102フォントの色は異なりますが、これは単なる例です。
マニュアルの図:
マニュアルから抜粋:
ライン/ローカル
ライン/ローカル機能により、オペレータはターミナルをオンラインまたはローカル(オフライン)状態に簡単に切り替えることができます。端末がオンラインの場合(ON-LINEインジケータが点灯)、キーボードに入力されたすべての文字がコンピュータに直接送信され、コンピュータからのメッセージが画面に表示されます。 LOCALステータス(LOCALインジケータが点灯している)では、端末はコンピュータから電気的に切り離され、キーボードに入力された文字はコンピュータに直接送信または受信されません。
出典:VT100シリーズビデオターミナル技術マニュアル、第3版、1982年7月。
質問
Linuxが異なる動作をするのはなぜですかtty
?
bash
邪魔にならないように省電力モードに設定してからプレーンEsc[0;31m
テキストを入力してインポートすると、色は変わらないため、エスケープシーケンスは効果がありません。
数年前も同様の質問を受けました。キーボードではエスケープシーケンスを送信できませんが、なぜ他のttyでは送信できますか?しかし、今は理解できます。VT102Linuxサブシステムが実際のハードウェア端末とは異なり、なぜそのように動作するのか理解したいと思います。
ベストアンサー1
まず、この質問はレトロコンピューティングしかし、コミュニティはこのサイトがこのサイトに適していると判断しました。しかし、コメントセクションで答えを得たので、ここにコピーしました。
Linux Virtual Consoleは、オンラインモードでLinux(シリアル)ttyデバイスに接続されている(一種の)VT102端末をエミュレートします。 Linux ttyドライバは通常エスケープされた制御文字をエコーしません。^[。 tty ドライバーがこれを実行したくない場合は、次のようにします。スティックトレキオ。さらに、実際のVT102端末は色をサポートせず、実際にはVT102と互換性がないため、Linux Virtual Consoleでは機能しません。
試してみましたが、stty -ctlecho
ほぼ予想通りに動作します。サブ問題は1つだけです。これが本当です。VT102人がエスケープシーケンスを押して入力を開始した後も表示される文字がないので、ESC人は盲目的に入力していますか?