だから私はターミナルエミュレーションを書いています(私は知っています。パテなどをコンパイルする必要があります)、vttestを使ってゆっくりと作業して正しいことを確認する段階にあります。現在はVT102をベースとして使用していますが、後でベース機能が正しく動作するようになったら、色などの端末機能を追加してみます。
命令セットは主にANSIです。 DECには独自の命令セットがありますが、約1973年からANSI命令をサポートしてきました。これらのANSI規格は現在利用できませんが、ECMAと同等の規格はありますが(ECMA-48が最も関連性があるようです)、私が知っている限り、この質問に対する答えを見ることはできません。ほとんどのANSI命令シーケンスはESCで始まります。多くのコマンドはここでCSIとマークされているコマンドシーケンス識別子で始まり、データから0x1c 0x5b(ESC [
)または8ビット通信が可能な場合は0xdbとして表示されます。その後、一連の認識コマンドが出ます。一部のコマンドはカーソル位置に影響を与え、一部のコマンドは画面に影響を与え、一部のコマンドはホストへの応答を引き起こすなどのタスクを実行します。
一部の端末コマンドには数値パラメーターが含まれています。この例CSI 10 ; 5 H
では、カーソルを行10、列5に置くことを意味します。数値パラメータが欠落している場合は、デフォルト値を使用できます。これはCSI 10 ; H
、パラメータが指定されていない場合のデフォルト値は1なので、カーソルを行10、列1に置くことを意味します。
私はvt100.net(素晴らしいリソース)のvt102マニュアルと、これらのコマンドシーケンスに関する部分的な情報を提供する約12ページを持っています。明らかに、完全な福音のDECターミナル仕様はDECから来たことはありません。
明示的にCSI C
カーソルを右に移動します。デフォルトは 1 です。
明確ではないのは、「はい」が意味するものですCSI 0 C
。
そこにゼロがあるのはなぜですか?コマンドが何もしないように見えますか? 「デフォルトを使用」を意味する場合は、1として送信できますが、短い文字列には引数がなく、とにかく1と解釈されるデフォルト値に依存します。これらの実際の物理VT端末は通常300ボード以下で使用されるため、1つの文字が重要です!
私は両方の方法を試してみて、どの方法がすべてを完璧にするかを確認するのに十分なvttestに慣れていませんが、このような小さな問題が重要になり始めるのに十分遠くあります。
答え1
私はxtermとvttestを管理するThomas Dickey(invisible-island.net)に連絡しました。彼はこれがCSI 0 C
xtermと同じかxtermにあると説明しました。CSI 1 C
CSI C
ターミナルプログラミングに関するより多くの情報を探している人なら、彼がホストしているxtermソースコード、特にxterm内のctlseqs.txtをチェックすることをお勧めします。これは私が探していた実際の端末制御シーケンス参照と非常によく似ています。
答え2
さまざまな端末の特定のコードシーケンスに機能をマッピングするデータベースがすでにあり、特定の端末タイプのハードコード互換性が必要なのはなぜですか? (terminfoデータベースは通常/usr/shareにあり、ほとんどのncursesディストリビューションに含まれています)。呪いに関するすべての資料は、これらの機能がどのように表示されるかを説明する必要があります。
terminfo ファイルは通常 (tic を使用して) コンパイルされるため、terminfo ソースファイルを見つけるには、さらに詳しく調べる必要があります。
また、見ることができますhttp://tldp.org/HOWTO/Text-Terminal-HOWTO.html#toc16(terminfo.srcファイルストアへのリンクがあります)