ANSIエスケープコード
ANSIエスケープシーケンスは、ビデオテキスト端末と端末エミュレータ上でカーソル位置、色、フォントのスタイル、その他のオプションを制御するためのインバンド記号の規格です。 バイトの特定のシーケンス(ほとんどはASCIIエスケープ文字と括弧で始まる)は、テキストに埋め込まれています。端末はこれらのシーケンスを、文字通り表示するテキストではなく、コマンドとして解釈します。
システムモニター「htop」の出力。これはncursesアプリケーションであり、Template:Ctrlやその他のANSI/ISO制御シーケンスを使用しています。 | |
規格 |
|
---|---|
区分 | ISO/IEC 2022ベースの制御コードおよび制御シーケンスセット |
関連エンコーディング |
その他の制御機能規格 |
ANSIシーケンスは、ベンダー固有のシーケンスを置き換えるために1970年代に導入され、1980年代初頭までにコンピュータ機器市場で広く普及しました。21世紀にはハードウェアテキスト端末はますます稀になっていますが、ターミナルエミュレータとコマンドコンソールの大部分がANSI規格の少なくとも一部を解釈するため、ANSI規格の関連性は依然として残っています。
歴史
編集ほとんど全てのビデオ端末メーカーは、画面上の任意の位置にカーソルを置くなどの操作を実行するために、ベンダ固有のエスケープシーケンスを追加しました。一例としてVT52端末があり、これはESC
文字、Y
文字、そしてx,y位置に32を加えた数値に等しい数値を表す2文字(ASCIIスペース文字から始まり、制御文字を避けるため)を送信することで、画面上のx,y位置にカーソルを置くことができました。Hazeltine 1500も同様の機能を持ち、~
、DC1
、そしてコンマで区切られたXとYの位置を使用して呼び出されました。2つの端末はこの点で同一の機能を持っていましたが、それらを呼び出すためには異なる制御シーケンスを使用する必要がありました。
端末ごとにこれらのシーケンスが異なっていたため、プログラムがどの端末でも同じAPIを使用して動作できるように、termcap(「terminal capabilities」、端末機能)のような手の込んだライブラリやtputのようなユーティリティを作成する必要がありました。加えて、これらの端末の多くは、(行や列などの)数値を文字のバイナリ値として送信する必要がありました。一部のプログラミング言語や、内部的にASCIIを内部で使用していなかったシステムでは、数値を正しい文字に変換することは往々にして困難でした。
ANSI規格は、すべての端末が使用するコマンドセットを作成し、すべての数値情報をASCII番号として送信することを要求することで、これらの問題に対処しようとしました。このシリーズの最初の規格はECMA-48であり、1976年に採用されました[1]。これは一連の文字コード規格の継続であり、最初の規格は1965年のECMA-6であり、ISO 646の起源となった7ビット規格です。「ANSIエスケープシーケンス」という名前は、ANSIがANSI X3.64を採用した1979年に由来します。ANSI X3L2委員会は、ECMA委員会TC 1と協力して、ほぼ同一の規格を作成しました。これらの2つの規格は、国際規格であるISO 6429に統合されました[1]。1994年、ANSIは国際規格を支持して規格を撤回しました。
これらのシーケンスをサポートする最初の一般的なビデオ端末は、1978年に導入されたDigital VT100であった[2]。このモデルは市場で非常に成功し、さまざまなVT100クローンを生み出した。その中でも最も初期で人気があったのは、1979年のZenith Z-19であり、はるかに手頃な価格であった[3]。その他には、Qume QVT-108、Televideo TVI-970、Wyse WY-99GT、および他の多くのブランドでさまざまな互換性を持つオプションの「VT100」または「VT103」または「ANSI」モードが含まれていた。これらの普及は徐々に、より多くのソフトウェア(特に電子掲示板やその他のオンラインサービス)がエスケープシーケンスが機能することを前提とするようになり、ほとんどすべての新しい端末とエミュレータプログラムがそれらをサポートするようになった。
Select Graphic Rendition parameters
編集- ^ a b “Standard ECMA-48: Control Functions for Character-Imaging I/O Devices” (1979年8月). 2025年1月30日閲覧。
- ^ “Digital's Video Terminals”. VT100.net (2006年). 2011年8月17日閲覧。
- ^ Heathkit Company (1979年). “Heathkit Catalog 1979”. Heathkit Company. 2012年1月13日時点のオリジナルよりアーカイブ。2011年11月4日閲覧。