ANSIエスケープコード

ANSI X3.64 (ISO/IEC 6429)
システム モニターhtop、ncurses アプリケーション ( SGRおよびその他の ANSI/ISO 制御シーケンスを使用) の出力。
規格
分類ISO/IEC 2022に基づく制御コードおよび制御シーケンスセット
その他の関連エンコーディング
その他の制御機能規格:

ANSIエスケープシーケンスは、ビデオテキスト端末および端末エミュレータにおけるカーソル位置、色、フォントスタイル、その他のオプションを制御するためのインバンドシグナリングの標準規格です。特定のバイトシーケンス(ほとんどはASCIIエスケープ文字と括弧文字で始まる)がテキストに埋め込まれます。端末はこれらのシーケンスをテキストとして解釈し、そのまま表示するのではなく、コマンドとして解釈します。

ANSIシーケンスは、ベンダー固有のシーケンスに代わるものとして1970年代に導入され、1980年代初頭までにコンピュータ機器市場に広く普及しました。21世紀に入り、ハードウェアテキスト端末はますます少なくなっていますが、大多数の端末エミュレータとコマンドコンソールがANSI規格の少なくとも一部を解釈できるため、ANSI規格の重要性は依然として残っています。

歴史

ほぼすべてのビデオ端末メーカーは、画面上の任意の位置にカーソルを配置するなどの操作を実行するために、ベンダー固有のエスケープシーケンスを追加しました。一例として、VT52ESC端末が挙げられます。この端末では、文字、文字、そしてx,y位置プラス32に等しい数値を表す2つの文字(ASCIIスペース文字から始まり、制御文字は回避されます)を送信することで、Y画面上のx,y位置にカーソルを配置できました。Hazeltine 1500にも同様の機能があり、 を使用し~DC1次にカンマで区切られたXとYの位置を使用して呼び出されました。この点では2つの端末は同一の機能を備えていましたが、それぞれ異なる制御シーケンスを使用する必要がありました

これらのシーケンスは端末ごとに異なっていたため、プログラムが同じAPIを使用してどの端末でも動作できるように、 termcap(「端末機能」)などの複雑なライブラリやtputなどのユーティリティを作成する必要がありました。さらに、これらの端末の多くは、文字のバイナリ値として数値(行や列など)を送信する必要がありました。一部のプログラミング言語や、内部的にASCIIを使用しないシステムでは、数値を正しい文字に変換することが困難な場合が多かったのです。

ANSI規格は、すべての端末で使用できるコマンドセットを作成し、すべての数値情報をASCII数値として送信することを義務付けることで、これらの問題に対処しようとしました。このシリーズの最初の規格は、1976年に採用されたECMA-48です。 [1]これは一連の文字符号化規格の継続であり、最初の規格は1965年のECMA-6で、 ISO 646の起源となった7ビット規格です。「ANSIエスケープシーケンス」という名前は、ANSIがANSI X3.64を採用した1979年に由来しています。ANSI X3L2委員会は、ECMA委員会TC 1と協力して、ほぼ同一の規格を作成しました。これら2つの規格は、国際規格であるISO 6429に統合されました。[1] 1994年、ANSIは国際規格を支持し、自らの規格を撤回しました

DEC VT100端末
DEC VT100 ビデオ ディスプレイ ターミナル。

これらのシーケンスをサポートした最初の人気ビデオ端末は、1978年に発売されたDigital VT100でした。 [2]このモデルは市場で大成功を収め、様々なVT100クローン製品が誕生しました。中でも初期で最も人気を博したのは、1979年に発売されたはるかに手頃な価格のZenith Z-19でした。 [3] その他にも、Qume QVT-108、Televideo TVI-970、Wyse WY-99GT、そしてオプションで「VT100」または「VT103」または「ANSI」モードがあり、他の多くのブランドとさまざまなレベルの互換性がありました。これらの人気により、エスケープシーケンスが機能することを前提とするソフトウェア(特に掲示板システムやその他のオンラインサービス)が徐々に増え、ほぼすべての新しい端末とエミュレータプログラムがエスケープシーケンスをサポートするようになりました。

1981年、ANSI X3.64はFIPS出版物86によって米国政府での使用に採用されました。その後、米国政府は業界標準の複製を中止したため、FIPS出版物86は撤回されました。[4]

ECMA-48は数回更新されており、現在は1991年の第5版です。[5] ISOおよびIECでもISO/IEC 6429規格として採用されています[6]そのバージョンはJIS X 0211として日本工業規格にも採用されています

関連規格には、テレテックス規格のITU T.61およびオープン・ドキュメント・アーキテクチャ規格のISO/IEC 8613(主にISO/IEC 8613-6またはITU T.416)があります。これら2つのシステムはANSIシステムと多くのエスケープコードを共有していますが、コンピュータ端末にとって必ずしも意味のない拡張機能も含まれています。どちらのシステムもすぐに使われなくなりましたが、ECMA-48では、これらのシステムで使用されている拡張機能を予約済みとしてマークしています。

プラットフォームサポート

Xterm端末エミュレータ
Xterm端末エミュレーター

1980年代初頭、多くのソフトウェアがこれらのシーケンスを直接使用して画面表示を更新していました。これには、DEC端末を前提とするVMS上のすべてのソフトウェア、 CP/Mホームコンピュータへの移植性を考慮して設計されたほとんどのソフトウェア、そしてこの記事の以下のシェルスクリプト例のように、termcapライブラリよりも使いやすかった多くのUnixソフトウェアも含まれていました。

リモートマシンと通信するための端末エミュレータは、ほぼ常にANSIエスケープコードを実装しています。これは、家庭用コンピュータやパーソナルコンピュータ上の掲示板システムと通信するために書かれたものすべてに当てはまります。Unixでは、xtermなどの端末エミュレータは、同じマシン上で実行されているソフトウェアとも通信できるため、端末エミュレータ上のX11で実行されるソフトウェアは、これらのシーケンスを記述できると想定できます。

コンピュータの性能が向上するにつれて、内蔵ディスプレイもエスケープシーケンスをサポートするようになり、CP/Mシステム間でソフトウェアの移植が可能になりました。エスケープシーケンスを拡張してプリンタをサポートする試みもありました[7]。また、初期のPDFに似た文書保存形式として、Open Document Architectureが開発されました[要出典]

DOSとWindows

1981年に発売されたIBM PCは、画面を更新するためのこれらのエスケープシーケンスやその他のエスケープシーケンスをサポートしていませんでした。基盤となるBIOSによって解釈されるのは、いくつかの制御文字BELCRLFBS )のみでした。表示効果はすべて、非常に遅いことで知られるBIOS呼び出し、またはIBM PCハードウェアを直接操作することによって行う必要がありました。そのため、興味深いソフトウェアは移植性が低く、 PCクローンでディスプレイハードウェアの詳細を複製する必要が生じました

DOS バージョン 2.0 には、ANSI.SYSというオプションのデバイスドライバが含まれていました。パフォーマンスが低く、デフォルトではインストールされなかったため、ソフトウェアでこのドライバが利用されることはほとんどありませんでした(そもそも利用されることもありませんでした)。

WindowsコンソールはANSIエスケープシーケンスをサポートしておらず、Microsoftもそれを有効にする方法を提供していなかった。JP SoftwareのTCC(旧4NT)、Michael J. MeffordのANSI.COM、Jason HoodのANSICON [8]、Maximus5のConEmuといった代替ソフトはANSIエスケープシーケンスを有効にしていた。Pythonのcoloramaパッケージ[9]Cygwinといったソフトウェアは、コンソールに送信されるテキストをインプロセスで変更し、ANSIエスケープシーケンスを抽出してWindowsの呼び出しでエミュレートしていた。

2016年、マイクロソフトはWindows 10 バージョン1511のアップデートをリリースし、Windowsの登場から30年以上を経て、ANSIエスケープシーケンスのサポートを予期せず実装しました。[10]これはWindows Subsystem for Linuxと並行して行われUnix系ターミナルベースのソフトウェアがWindowsコンソールを使用できるようにするために行われたようです。Windows PowerShell 5.1ではこれがデフォルトで有効になり、PowerShell 6では必要なESC文字を文字列に埋め込むことが可能になりました`e[11]

2019年に導入されたWindowsターミナルは、デフォルトでシーケンスをサポートしています。[12] Windows 11 22H2およびWindowsターミナル1.15以降、WindowsターミナルがWindowsコンソールに取って代わり、デフォルトになりました。[13] [14]

C0制御コード

ほとんどすべてのユーザーは、一部のシングルバイト文字の機能を想定しています。デフォルトのC0制御コードセットは、当初はASCIIの一部として定義されていましたが、現在はISO 6429(ECMA-48)で定義されており、ANSIエスケープシーケンスによって呼び出されるC1セットと同じ規格の一部となっています(ただし、ISO 2022では、0x1Bが常にESCである場合、ISO 6429 C0セットをISO 6429 C1セットなしで使用することも、その逆も可能です)。これは、送信されるデータ量を短縮するため、またはエスケープシーケンスでは利用できない機能を実行するために使用されます

一般的な C0 制御コード (網羅的なリストではありません)
^C0略語Cエスケープシーケンス名称効果
^G0x07ベル\aベル聞こえる音を出します。
^H0x08BS\bバックスペースカーソルを左に移動します(ただし、カーソルが行頭にある場合は「逆方向に折り返す」場合があります)。
^I0x09HT\tタブカーソルを次のタブストップまで右に移動します
^J0x0ALF\n改行次の行に移動します。画面の下部にある場合は、表示を上にスクロールします。通常は水平方向には移動しませんが、プログラムはこれに依存しないでください
^L0x0CFF\fフォームフィードプリンタを次のページの先頭に移動します。通常は水平方向には移動しませんが、プログラムはこれに依存しないでください。ビデオ端末への影響はさまざまです
^M0x0DCR\rキャリッジリターンカーソルを0桁目に移動します
^[0x1BESC\x1B,\033エスケープすべてのエスケープシーケンスを開始します

エスケープシーケンスの長さは様々です。ANSI準拠のエスケープシーケンスの一般的な形式は、ANSI X3.41(ECMA-35またはISO/IEC 2022に相当)で定義されています。[15] : 13.1 エスケープシーケンスは、 0x20〜0x7F (すべての非制御ASCII文字)の範囲のバイトのみで構成され、先読みせずに解析できます。制御文字、上位ビットがセットされたバイト、または有効なシーケンスに含まれないバイトがシーケンスの末尾より前に出現した場合の動作は未定義です。

Feエスケープシーケンス

ESCの後に0x40から0x5Fの範囲のバイトが続く場合、エスケープシーケンスは型であるFe。その解釈は、該当するC1制御コード規格に委任される。[15] : 13.2.1 したがって、ANSI X3.64 / ECMA-48のC1制御コードに対応するすべてのエスケープシーケンスはこの形式に従う。[16] : 5.3.a 

標準では、8ビット環境では、型エスケープシーケンス( C1制御コードFeのセットのもの)に対応する制御機能は、0x80〜0x9Fの範囲の1バイトとして表現できるとされています。[16] :5.3.b これは、 ISO 8859シリーズなど、ISO 2022で作成された8ビットコードの規定に準拠した文字エンコードでは可能です。ただし、 UTF-8CP-1252などの最新のデバイスで使用される文字エンコードでは、それらのコードは他の目的に使用されることが多いため、通常は2バイトのシーケンスのみが使用されます。 UTF-8の場合、C1制御コードをC1制御およびLatin-1補足ブロックで表すと、異なる2バイトコード(U+008Eの場合は0xC2,0x8Eなど)になりますが、この方法ではスペースが節約されません。

一部のタイプFe (C1 セット要素) ANSI エスケープ シーケンス (網羅的なリストではありません)
コードC1略語名称効果
ESC N0x8ESS2シングルシフト2代替文字セットの1つから1つの文字を選択します。SS2はG2文字セットを選択し、SS3はG3文字セットを選択します。[17] 7ビット環境では、この後にそのセットの文字を指定する1つ以上のGLバイト(0x20~0x7F)が続きます。[15] : 9.4  8ビット環境では、これらはGRバイト(0xA0~0xFF)になる場合があります。[15] : 8.4 
ESC O0x8FSS3シングルシフト3
ESC P0x90DCSデバイス制御文字列STによって終了しました。[16] : 5.6  Xtermはこのシーケンスをユーザー定義キーの定義やTermcap/Terminfoデータの要求や設定に使用します。[17]
ESC [0x9BCSI制御シーケンスイントロデューサほとんどの有用なシーケンスを開始し、0x40から0x7Eの範囲のバイトで終了します。[16] : 5.4 
ESC \0x9CST文字列終端記号他のコントロール内の文字列を終了します。[16] : 8.3.143 
ESC ]0x9DOSCオペレーティングシステムコマンドオペレーティングシステムが使用する制御文字列を開始し、STで終了します。[16] :8.3.89 
ESC X0x98SOS文字列の開始STで終了する文字列を引数として受け取ります。[16] : 5.6 これらの文字列制御シーケンスの使用方法は、アプリケーションによって定義されます。[16] : 8.3.2、8.3.128 またはプライバシー規律。[16] : 8.3.94  これらの関数はほとんど実装されておらず、引数はxtermによって無視されます。[17]一部のKermitクライアントでは、APCシーケンスにKermitコマンドを埋め込むことで、サーバーがクライアント上でKermitコマンドを自動的に実行することを許可しています。これは、サーバーが信頼できない場合、潜在的なセキュリティリスクとなります。[18]
ESC ^0x9EPMプライバシーメッセージ
ESC _0x9FAPCアプリケーションプログラムコマンド

制御シーケンスイントロデューサコマンド

制御シーケンスイントロデューサ(CSI)コマンドでは、ESC [\e[またはいくつかのプログラミング言語で)\x1b[の後に、 \033[0x30~0x3F(ASCII)の範囲の任意の数(0個を含む)の「パラメータバイト」が続き0–9:;<=>?、次に0x20~0x2F(ASCIIスペースと)の範囲の任意の数の「中間バイト」が続き!"#$%&'()*+,-./、最後に0x40~0x7E(ASCII)の範囲の単一の「最終バイト」が続きます@A–Z[\]^_`a–z{|}~[16] :5.4 

一般的なシーケンスはすべて、 のように、セミコロンで区切られた一連の数字としてパラメータを使用します1;2;3[16] : 5.4.2 欠落した数字は01;;3は中間の数字のように動作し0、 にパラメータがない場合はリセットコードESC[mのように動作します0。一部のシーケンス(CUUなど)では、欠落したパラメータを有効活用するために を として0扱います。 [16] : F.4.2 1

端末メーカーが標準規格に抵触することなく独自のシーケンスを挿入できるよう、一部の配列は「プライベート」と宣言されました。パラメータバイト<=>?または最終バイト0x70~0x7E(p–z{|}~)を含むシーケンスはプライベートです。

CSIシーケンスに0x20~0x7Eの範囲外の文字が含まれている場合、端末の動作は未定義です。これらの不正な文字とは、C0制御文字(0~0x1Fの範囲)、DEL(0x7F)、または上位ビットがセットされたバイトのいずれかです。可能な応答は、バイトを無視するか、直ちに処理するか、さらにCSIシーケンスを続行するか、直ちに中止するか、残りの部分を無視するかのいずれかです。[要出典]

いくつかの ANSI 制御シーケンス(網羅的なリストではありません)
コード[a]略語名称効果
CSI n ACUUカーソル上カーソルを指定された方向にn(デフォルト1)セル移動します。カーソルがすでに画面の端にある場合は、何も起こりません
CSI n BCUDカーソルダウン
CSI n CCUFカーソル前進
CSI n DCUBカーソル後退
CSI n ECNLカーソルを次の行へカーソルをn行(デフォルト)下の行の先頭に移動します1。(ANSI.SYSではサポートされていません)
CSI n FCPLカーソルを前の行へカーソルをn行(デフォルト)上の行の先頭に移動します1。(ANSI.SYSではサポートされていません)
CSI n GCHAカーソル水平絶対カーソルをn列目に移動します(デフォルト1)。(ANSI.SYSでは無効)
CSI  n  ;  m  Hカップカーソル位置カーソルをnm列に移動します。値は1から始まり、1省略した場合は(左上隅)がデフォルトになります。などのシーケンスはCSI ;5Hasの同義語でありCSI 1;5H、asはandCSI 17;Hと同じですCSI 17HCSI 17;1H
CSI n JEDディスプレイ内消去画面の一部をクリアします。nが(または省略されている場合)の場合0カーソルから画面の末尾までクリアします。nが の場合カーソルから1画面の先頭までクリアします。nが の場合画面全体をクリアします(DOS ANSI.SYS2ではカーソルを左上に移動します)。nが の場合画面全体をクリアし、スクロールバックバッファに保存されているすべての行を削除します(この機能はxterm用に追加され、他の端末アプリケーションでもサポートされています)。3
CSI n KEL線に沿って消す行の一部を消去します。n が (または省略)の場合カーソル0から行末までを消去します。n が の場合カーソル1から行頭までを消去します。n が の場合2全体を消去します。カーソル位置は変化しません。
CSI n SSU上へスクロールページ全体をn行(デフォルト1)上へスクロールします。新しい行は下部に追加されます。(ANSI.SYSではありません)
CSI n TSD下へスクロールページ全体をn行(デフォルト1)下へスクロールします。新しい行は先頭に追加されます。(ANSI.SYSではありません)
CSI n  ; m fHVP水平垂直位置CUPと同じですが、CUDやCNLのようなエディタ機能ではなく、 CRやLFのようなフォーマットエフェクタ機能としてカウントされます。これにより、特定の端末モードでは処理が異なる場合があります。[16] :付録A 
CSI n mSGRグラフィックレンディションの選択このコードに続く文字の色とスタイルを設定します
CSI 5iAUXポートオンローカルシリアルプリンター用の補助シリアルポートを有効にします
CSI 4iAUXポートオフ通常、ローカルシリアルプリンター用のAUXシリアルポートを無効にします

CSI 6nDSRデバイスステータスレポートカーソル位置(CPR)を送信して報告します。nESC[n;mRは行mは列です
人気のプライベートシーケンス
コード略語名称効果
CSISCP、SCOSC現在のカーソル位置を保存SCOコンソールモードでカーソルの位置/状態を保存します。[19]垂直分割画面モードでは、代わりに左右の余白を設定(として)またはリセットするために使用されます。[20]CSI n ; n s
CSI uRCP、SCORC保存されたカーソル位置を復元SCOコンソールモードでカーソルの位置/状態を復元します。[21]
CSI ? 25時間DECTCEMVT220からのカーソルを表示します
CSI ? 25 lDECTCEMカーソルを非表示にします。
CSI ? 1004 hフォーカスの報告を有効にします。端末エミュレータがフォーカスに入ったとき、またはフォーカスから出たとき、それぞれ と としてESC [I報告しますESC [O
CSI ? 1004 lフォーカスの報告を無効にします。
CSI ? 1049 hxtermから代替画面バッファを有効にします
CSI ? 1049 lxtermからの代替画面バッファを無効にする
CSI ? 2004 h括弧付き貼り付けモードをオンにします。[22]括弧付き貼り付けモードでは、端末に貼り付けられたテキストは と で囲まれますESC [200~ESC [201~端末で実行されているプログラムは、これらのシーケンスで囲まれた文字をコマンドとして扱いません(たとえば、Vimはそれらをコマンドとして扱いません)。 [23] xtermから[24]
CSI ? 2004 l括弧付き貼り付けモードをオフにします。

グラフィックレンディションパラメータを選択します

Select Graphic Rendition (SGR) と呼ばれる制御シーケンスは、表示属性を設定します。複数の属性を同じシーケンス内でセミコロンで区切って設定できます。[25]各表示属性は、次のSGRによってリセットされるまで有効です。[16]コードが指定されていない場合は、 (リセット / 通常)として扱われますCSI n mCSI mCSI 0 m

n名称メモ
0リセットまたは通常すべての属性がオフになります
1大胆または強度の増加faintと同様に、色の変化はPC(SCO / CGA)の発明です。[26] [より良い情報源が必要]
2かすかな、強度の低下した、または暗い太字のような軽いフォントとして実装されることもある[27]
3イタリック体広く支持されていない。反転や点滅として扱われることもある。[26]
4下線Kitty、VTE、mintty、iTerm2、Konsole用のスタイル拡張機能が存在します。[28] [29] [30]
5ゆっくり点滅点滅回数を1分間に150回未満に設定します
6高速点滅MS-DOS ANSI.SYS、1分間に150回以上。広くサポートされていない
7ビデオを反転 または反転する前景色と背景色の入れ替え;一貫性のないエミュレーション[31] [疑わしい議論する]
8隠す広く支持
9取り消し線または線引き文字は判読可能ですが、削除対象としてマークされています。Terminal.appではサポートされていません
10プライマリ(デフォルト)フォント
11~19代替フォント代替フォントを選択n − 10
20フラクトゥール(ゴシック体)ほとんどサポートされていない
21二重下線付き、または太字ではないECMA-48 [16] :8.3.117 に従って二重下線が引かれますが、 Linuxカーネルバージョン4.17より前コンソールを含むいくつかの端末で太字の強度が無効になります。 [32]
22通常の強度太すぎず、細すぎず、強度に応じて色が変化します。
23イタリック体でもブラックレターでもない
24下線なし単線も二重線も引いていない
25点滅なし点滅をオフにする
26比例間隔ITU T.61およびT.416は端末で使用されているかどうかは不明である。
27反転されていない
28明らかにする隠されていない
29取り消し線なし
30~37前景色を設定
38前景色を設定次の引数は5;nまたは2;r;g;bです
39デフォルトの前景色実装定義(標準に準拠)
40~47背景色を設定
48背景色を設定次の引数は5;nまたは2;r;g;bです
49デフォルトの背景色実装定義(標準に準拠)
50プロポーショナルスペースを無効にするT.61およびT.416
51フレームminttyでは「絵文字バリエーションセレクター」として実装されています。 [33]
52囲まれた
53上線ターミナルアプリではサポートされていません
54枠線も丸も付いていない
55上線も引かれていない
58下線の色を設定する標準にはない。Kitty、VTE、mintty、iTerm2に実装されている。[28] [29]次の引数は5;nまたは2;r;g;bである
59デフォルトの下線の色標準にはないが、Kitty、VTE、mintty、iTerm2に実装されている。[28] [29]
60表意文字の下線または右側の線ほとんどサポートされていない
61表意文字の二重下線、または右側の二重線
62表意文字の上線または左側の線
63表意文字の二重上線、または左側の二重線
64表意文字の強勢標示
65表意文字の属性なしすべての効果をリセットします6064
73上付き文字minttyでのみ実装[33]
74下付き文字
75上付き文字も下付き文字もなし
90~97明るい前景色を設定する標準ではない。元々はaixterm [17]によって実装された。
100~107明るい背景色を設定する

3ビットと4ビット

元の仕様では8色しかなく、名前だけが付けられていました。SGRパラメータ30~37は前景色を選択し、40~47は背景色を選択しました。多くの端末では、「太字」(SGRコード1)を別のフォントではなく明るい色として実装し、8色の追加前景色を提供しました。通常、これらを背景色として使用することはできませんでしたが、反転表示(SGRコード7)ではそれが可能になる場合もありました。例:白い背景に黒い文字を表示するにはESC[30;47m、赤にするにはESC[31m、明るい赤にするには を使用しますESC[1;31m。色をデフォルトにリセットするにはESC[39;49m(一部の端末ではサポートされていません)を使用するか、 ですべての属性をリセットしますESC[0m。後の端末では、90~97と100~107を使用して「明るい」色を直接指定する機能が追加されました

以下の表は、従来の標準と最新の端末エミュレータが4 ビットのカラー コードを 24 ビットのカラー コードに変換する方法の例をいくつか示しています。

FGBG名前CGA/EGA/VGAWindowsコンソール[b]Windows
PowerShell&
1.0~6.0
[c]
ビジュアルスタジオコード[d]Windows 10
コンソール
[e]
ターミナルアプリPuTTYmIRCxtermウブントゥ[f]エクリプスターミナル
30400、0、012、12、120、0、01、1、10、0、0
3141170, 0, 0128, 0, 0205, 49, 49197, 15, 31153, 0, 0187, 0, 0127, 0, 0205, 0, 0222、56、43205, 0, 0
32420、170、00, 128, 013, 188, 12119, 161, 140, 166, 00, 187, 00, 147, 00, 205, 057, 181, 740, 205, 0
3343黄色170, 85, 0128, 128, 0238、237、240229、229、16193、156、0153、153、0187, 187, 0252, 127, 0205, 205, 0255, 199, 6205, 205, 0
34440、0、1700、0、12836、114、2000、55、2180、0、1780、0、1870、0、1270, 0, 238 [35]0、111、1840、0、238
3545マゼンタ170、0、170128、0、1281、36、86188、63、188136、23、152178, 0, 178187, 0, 187156, 0, 156205, 0, 205118、38、113205, 0, 205
3646シアン0、170、1700、128、12817、168、20558、150、2210、166、1780、187、1870、147、1470、205、20544、181、2330、205、205
3747170、170、170192、192、192229、229、229204、204、204191、191、191187、187、187210、210、210229、229、229204、204、204229、229、229
90100ブライトブラック(グレー)85、85、85128、128、128102、102、102118、118、118102、102、10285、85、85127、127、127127、127、127128、128、1280、0、0
91101明るい赤255、85、85255、0、0241、76、76231、72、86230, 0, 0255、85、85255、0、0
92102明るい緑85, 255, 850, 255, 035, 209, 13922, 198, 120, 217, 085, 255, 850、252、00, 255, 0
93103明るい黄色255、255、85255、255、0245、245、67249、241、165230、230、0255、255、85255、255、0
94104ブライトブルー85、85、2550、0、25559、142、23459、120、2550、0、25585、85、2550、0、25292, 92, 255 [36]0、0、25592、92、255
95105ブライトマゼンタ255、85、255255, 0, 255214, 112, 214180, 0, 158230, 0, 230255、85、255255, 0, 255
96106明るいシアン85, 255, 2550, 255, 25541、184、21997、214、2140、230、23085, 255, 2550, 255, 255
97107ブライトホワイト255、255、255229、229、229242、242、242230、230、230255、255、255

8ビット

グラフィックカードで256色のルックアップテーブルが一般的になるにつれ、256色の定義済みセットから選択するためのエスケープシーケンスが追加されました。[37]

ESC[38;5; ⟨n⟩ m 前景色を選択する。nは下の表の数字である。ESC[48;5; ⟨n⟩ m 背景色を選択 0~7: 標準色(ESC [ 30~37 m と同様) 8-15: 高輝度色(ESC [90–97 m] と同様) 16-231: 6 × 6 × 6 キューブ(216色): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)232-255: 暗い色から明るい色まで24段階のグレースケール

これらの値によって表示される色は、端末/エミュレータの実装によって異なります。これは、ECMA-48およびITU T.416仕様でこのルックアップテーブル用の特定のカラーパレットが定義されていないためです。カラーパレットには上記の式を使用するのが一般的ですが、特に16-231キューブ値のアルゴリズムと色の選択は実装によって異なります。XTermで使用されるカラーパレットとアルゴリズムは、以下にサンプルとして示されています。[16] [38]

ITUのT.416情報技術 - オープンドキュメントアーキテクチャ(ODA)と交換フォーマット:文字コンテンツアーキテクチャ[38]では区切り文字として「:」が使用されています。

ESC[38:5: ⟨n⟩ m 前景色を選択する。nは下の表の数字である。ESC[48:5: ⟨n⟩ m 背景色を選択

256色モード
前景色:ESC[38;5;#m — 背景色:ESC[48;5;#m
標準色高輝度カラー
 0  1  2  3  4  5  6  7  8  9 101112131415
216色
161718192021222324252627282930313233343536373839404142434445464748495051
525354555657585960616263646566676869707172737475767778798081828384858687
888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
グレースケールカラー
232233234235236237238239240241242243244245246247248249250251252253254255

上記の表の色のRGB値を計算するには、次のPythonスクリプトを使用できます

# xterm で使用される 256 色の赤/緑/青の値のリストを出力します。## 参考:# https://github.com/ThomasDickey/ncurses-snapshots/blob/master/test/xterm-16color.dat# https://github.com/ThomasDickey/xterm-snapshots/blob/master/XTerm-col.ad# https://github.com/ThomasDickey/xterm-snapshots/blob/master/256colres.plprint ( "色0~15はANSIおよびaixtermの命名規則に対応しています" ) 範囲0、16 内のコード 場合    コード >  8の場合: レベル =  255 ELIF コード ==  7 : レベル =  229 そうでない場合 レベル =  205  コード== 8 の場合、r =  127  レベルの場合、(コード& 1 ) != 0、そうでない場合、92、コード== 12の場合、そうでない場合、0                    g  =  127  if  code  ==  8  else  level  if  ( code  &  2 )  !=  0  else  92  if  code  ==  12  else  0 b  =  127  if  code  ==  8  else  238  if  code  ==  4  else  level  if  ( code  &  4 )  !=  0  else  0 印刷( f " {コード: 3d } : { r : 02X } { g : 02X } { b : 02X } " )  print ( "色16~231は6x6x6のカラーキューブです" ) 範囲0、6  場合    範囲0、6  場合    範囲0、6  場合   コード =  16  +  ( *  36 )  +  ( *  6 )  +  r  =  red  *  40  +  55 (  red != 0の場合、 そうでない場合は0)     g  =  *  40  +  55 != 0の場合、 それ以外は0     b  =  blue  *  40  +  55 (  blue != 0の場合、 そうでない場合は0)     印刷( f " {コード: 3d } : { r : 02X } { g : 02X } { b : 02X } " )  印刷( 「色 232 ~ 255 はグレースケール ランプであり、意図的に白黒は除外されています」)コード =  232 範囲0、24 グレー 場合   レベル = グレー *  10  +  8 コード =  232  + グレー print ( f " {コード: 3d } : {レベル: 02X } {レベル: 02X } {レベル: 02X } " )  

同様のエスケープシーケンスを使用した、互換性のない88色エンコードも存在し、およびに見られるrxvtxterm-88color[ 39] これは4×4×4のカラーキューブを使用する。

24ビット

16ビットから24ビットカラーの「トゥルーカラー」グラフィックカードが普及するにつれ、アプリケーションは24ビットカラーをサポートするようになりました。エスケープシーケンスを用いて24ビットの前景色と背景色を設定できる端末エミュレーターには、Xterm [17] 、 KDEのKonsole [ 40] [41]、iTerm、そしてGNOME Terminal [42]含むすべてのlibvteベースの端末などがあります

ESC[38;2; ⟨r⟩ ; ⟨g⟩ ; ⟨b⟩ m RGBの前景色を選択ESC[48;2; ⟨r⟩ ; ⟨g⟩ ; ⟨b⟩ m RGB背景色を選択

この構文は、当初XTermに実装されたもので、 ISO/IEC 8613-6仕様の解釈に基づいており、具体的にはSGR 38 / SGR 48にパラメータ「2」を続けて指定することで、RGB空間における「直接色」を指定できるというものです。 [44]。セミコロン区切りのRGB値指定によるこの構文は、広く普及した最初の実装として、24ビットカラーをサポートする端末エミュレータで広くサポートされています。[疑わしい議論する]

8ビットカラーコードと同様に、ITUのT.416オープンドキュメントアーキテクチャ(ODA)と交換フォーマット:文字コンテンツアーキテクチャには24ビットカラーの非常によく似た仕様があり、[38]これはISO / IEC 8613-6として採用されましたが、商業的には失敗に終わりました。[引用が必要] ODAバージョンはより複雑であるため、上記のセミコロンで区切られたバージョンとは互換性がありません。

  • 区切り文字として、セミコロンではなくコロンが使用されます。
  • 「2」の後のパラメータ (r、g、b) はオプションであり、空のままにすることができます。
  • 先頭に「カラースペースID」があります。[17]カラースペースIDの定義は仕様に含まれていないため、未指定のデフォルトを表すために空白になる場合があります。CMYKカラー仕様の場合、minttyはカラースペースIDパラメータを、チャンネル値が与えられる最大値(例:100または255)を指定するものとして解釈します。[33]
  • 48の後の「2」は赤・緑・青のフォーマットを指定する(上記の「5」は0~255のインデックスカラーを指定する)ほか、実装定義の「0」と透明の「1」という選択肢もある。どちらもそれ以上のパラメータはない。「3」はシアン・マゼンタ・イエローのスキームを使用する色を指定し、「4」はシアン・マゼンタ・イエロー・ブラックのスキームを使用する色を指定する。後者はブラックコンポーネントに「未使用」とマークされた位置を使用する。[38]
ESC[38:2: ⟨Color-Space-ID⟩ : ⟨r⟩ : ⟨g⟩ : ⟨b⟩ : ⟨未使用⟩ : ⟨CS許容値 : ⟨Color-Space⟩ m RGB前景色を選択ESC[48:2: ⟨Color-Space-ID⟩ : ⟨r⟩ : ⟨g⟩ : ⟨b⟩ : ⟨unused⟩ : ⟨CS tolerance⟩ : ⟨Color-Space⟩ m RGB背景色を選択

ここで、 はColor-Space、指定された許容値に関連付けられたカラー スペース ( 0CIELUV の場合、または1CIELAB の場合) を示します。

セミコロンベースのRGB仕様は最も広くサポートされていますが、この仕様とITU T.416のRGBバリアントの両方が多くの端末エミュレータでサポートされています。[45] [46]

色サポートに関連する Unix 環境変数

S-Langライブラリ(バージョン0.99-32、1996年6月)は、SVr3.2(1987年)で導入されたtermcapとterminfoのカラーサポートを使用する代わりに、[47]$COLORTERM別の環境変数を使用して、端末エミュレータがカラーを使用できるかどうかを示し、後に24ビットカラーをサポートしているかどうかを示す値を追加しました。[48] [49]このシステムは、ドキュメントが不十分であったものの、FedoraとRHELで、現在更新されているライブラリを照会するよりもシンプルで汎用的な検出メカニズムとして使用することを検討するほど普及しました。[50]

一部の端末エミュレータ(urxvt、Konsole)は、$COLORFGBG端末のカラースキーム(主に明るい背景と暗い背景)を報告するように設定されています。この動作はS-Lang [49]に由来し、vimで使用されています。Gnome-terminalでは、値の構文が統一されていないこと、実行時にパレットが変更されても値を変更できないこと、そしてより「適切な」xterm OSC 4/10/11シーケンスが既に存在することから、この動作を追加できません。[51]

オペレーティングシステムのコマンドシーケンス

オペレーティングシステムのコマンドシーケンスのほとんどはXtermで定義されていますが、他の端末エミュレータでもサポートされているものが多くあります。歴史的な理由から、XtermはBEL標準のST(0x9Cまたは0x1B 0x5C)に加えて、(0x07)でコマンドを終了させることができます。[17]例えば、Xtermではウィンドウタイトルを で設定できますESC ]0;this is the window title BEL

xterm以外の拡張機能としては、ESC ]8;;link ST2017年からVTE [52] [議論] iTerm2 [52] mintty [53]などで使用されているハイパーリンクがあります。[54]

LinuxコンソールはESC ] P n rr gg bbパレットを変更するために使用しますが、これをアプリケーションにハードコードすると、他の端末がハングする可能性があります。[55]ただし、追加はSTLinuxによって無視され、他の端末では適切な無視可能なシーケンスを形成します。[要出典]

Fs エスケープシーケンス

の後に0x60〜0x7EESCの範囲のバイトが続く場合、エスケープシーケンスは 型です。この型は、ISO-IRレジストリに個別に登録された制御関数に使用されます[56]これらの表はISO/IEC 2022に記載されています。Fs

Fp エスケープシーケンス

の後に0x30〜0x3FのESC範囲のバイトが続く場合、エスケープシーケンスは最大16個の私的使用制御機能用に設定されたタイプです。[15] :6.5.3 Fp

VT100で認識されるFp(私用)エスケープシーケンスの一部
略語名称効果
ESC 7DECSCDEC カーソル保存カーソル位置、エンコードシフト状態、書式設定属性を保存します。[57] [17]
ESC 8DECRCDEC カーソル復元カーソル位置、エンコードシフト状態、フォーマット属性を以前のDECSCから復元します(存在する場合)。そうでない場合は、すべてをデフォルトにリセットします。[57] [17]

nF エスケープシーケンス

の後に0x20〜0x2FのESC範囲のバイトが続く場合、エスケープシーケンスは型 となります。このバイトの後に、この範囲の任意の数の追加バイトが続き、その後に0x30〜0x7Eの範囲のバイトが続きます。これらのエスケープシーケンスは、最初のバイトの下位2ビット(例えば、最初のバイトが0x22のシーケンスの場合は「type」)によってさらにサブカテゴリ化されます。また、最後のバイトが0x30〜0x3Fの範囲にあるかどうか(私的使用を示す例「type 」)によってもサブカテゴリ化されます(例「type 」)。[15] : 13.2.1 nF2F2Fp2Ft

シーケンスのほとんどはnFt現在の文字セットを変更するためのもので、ISO/IEC 2022に記載されています。他にも以下のようなシーケンスがあります。

いくつかのタイプ0Ft(アナウンスメント)ANSIエスケープシーケンス[17] [15] :15.2 
略語名称効果
ESC SP F
  • ACS6
  • S7C1T
  • コード構造6をアナウンス
  • 7ビットのC1制御文字をホストに送信
ファンクションキーが 8 ビットの C1 コードではなく ESC + 文字を送信するようにします。
ESC SP G
  • ACS7
  • S8C1T
  • コード構造7をアナウンス
  • 8ビットのC1制御文字をホストに送信する
ファンクションキーが 8 ビットの C1 コードを送信するようにします。

最初のバイトが「#」の場合、公開シーケンスは追加のISO-IR登録個別制御機能のために予約されています。[15] : 6.5.2 現在、そのようなシーケンスは登録されていません。[56]タイプ3Fpシーケンス(「#」で始まるものを含む)は、私的使用の制御機能に使用できます。[15] : 6.5.3 

VT100で認識される一部のタイプ3Fp(私用)エスケープシーケンス
略語名称効果
ESC # 3DECDHLDEC 上半分を2倍高文字にする現在の行の文字数を2倍にします。このコードは上半分用です。[58]
ESC # 4DECDHLDEC 文字の高さを2倍にする(下半分)現在の行の文字数を2倍にします。このコードは下半分用です。[58]
ESC # 5DECSWLDEC 半角文字デフォルトの動作に従って、現在の行に半角文字を使用します。[59] [17]
ESC # 6DECDWLDEC 倍幅行現在の行を全角文字にして、行の後半の文字をすべて破棄します。[60] [17]

CSI 2 J— これにより画面がクリアされ、一部のデバイスではカーソルがy,x位置1,1(左上隅)に移動します

CSI 32 m— テキストを緑色にします。この緑色は暗く鈍い緑色になる可能性があるため、CSI 1 m明るい緑色にするシーケンスで太字を有効にするか、 と組み合わせることをお勧めしますCSI 32 ; 1 m。実装によっては、太字状態を使用して文字を明るくする場合もあります。

CSI 0 ; 6 8 ; "DIR" ; 13 p— これにより、F10キーはキーボードバッファに文字列「DIR」とEnterキーを送信するように再割り当てされます。DOSコマンドラインでは、これらの文字列は現在のディレクトリの内容を表示します。(MS-DOS ANSI.SYSのみ)これはANSI爆弾に使用されることがありました。これは私的使用コード(文字pで示される)であり、非標準の拡張機能を使用して文字列値のパラメータを含めます。標準の文字に続く場合、シーケンスは文字Dで終了すると見なされます。

CSI s— これはカーソル位置を保存します。シーケンスを使用すると、CSI u元の位置に復元されます。例えば、現在のカーソル位置が7(y)と10(x)だとします。シーケンスはCSI sこれらの2つの数値を保存します。これで、シーケンスCSI 20 ; 3 Hまたはを使用して、20(y)と3(x)などの別のカーソル位置に移動できますCSI 20 ; 3 f。ここでシーケンス CSI u を使用すると、カーソル位置は7(y)と10(x)に戻ります。一部の端末では、より広くサポートされているDECシーケンスESC 7/ が必要になりますESC 8

シェルスクリプトでは

ANSIエスケープコードは、 UNIXおよびUNIX系端末で構文の強調表示を行うためによく使用されます。たとえば、互換性のある端末では、次のリストコマンドはファイル名とディレクトリ名を種類ごとに色分けします

ls --color

ユーザーは、スクリプト内でエスケープコードを標準出力または標準エラー出力の一部として組み込むことで使用できます。例えば、以下のGNU sedコマンドは、 makeコマンドの出力を装飾し、「WARN」で始まる単語を含む行を反転表示し「ERR」で始まる単語を含む行を濃い赤色の背景に明るい黄色で表示します(大文字と小文字は区別されません)。コードの表示部分は強調表示されています。[61]

make 2>&1 | sed -e 's/.*\bWARN.*/ \x1b[7m & \x1b[0m /i' -e 's/.*\bERR.*/ \x1b[93;41m & \x1b[0m /i'

次のBash関数は、ユーザーがキーを押すまで、端末をフラッシュ表示します(反転と通常のビデオモードコードを交互に送信します)。[62]これは、長いコマンドが終了したときにプログラマーに警告するために使用できますmake ; flasher[63]

flasher () { while true; do printf '\e[?5h' '\e[?5l'; sleep 0.1; printf ; read -s -n1 -t1 && break; done; }

次のコマンドは、最新の Linux システムのコマンドと同様にコンソールをリセットしますresetが、古い Linux システムや他の (Linux 以外の) UNIX バリアントでも機能するはずです。

printf '\033c' 

C言語の場合

次のプログラムは、0 から 109 までの数字のテーブルを作成します。各数字は、その数字をグラフィック レンディション コードとして使用し、Select Graphic Rendition エスケープ シーケンスで指定された形式で表示されます。

Gnomeターミナルでのサンプルプログラムの出力
#include <stdio.h> int main ( void ) { int,, n ;    for (= 0 ;< 11 ;++ ) {         (= 0 ;< 10 ;++ ) {         n = 10 *+;       n > 109場合ブレークします     printf ( " \033 [%dm %3d \033 [m" , n , n );   } printf ( " \n " ); } 0を返します }

端末入力シーケンス

キーボードの特殊キーを押すと、多くのxterm CSI、DCS、またはOSCシーケンスを出力するだけでなく、ユーザーが入力したかのように端末からコンピュータに送信されるCSI、DCS、またはOSCシーケンスが生成されることがよくあります

端末に入力する際、通常の英数字キーボードのメイン領域外のキー入力は、ANSIシーケンスとしてホストに送信されることがあります。カーソルキーなど、同等の出力機能を持つキーの場合、多くの場合、出力シーケンスが反映されます。しかし、ほとんどのキー入力には、同等の出力シーケンスは存在しません。

複数のエンコード方式があり、残念ながらほとんどの端末は異なる方式のシーケンスを混在させているため、ホストソフトウェアはあらゆる方式の入力シーケンスに対応できる必要があります。さらに複雑なことに、VT端末自体には、通常モードアプリケーションモードという2つの入力方式があり、アプリケーションによって切り替えることができます。

(下書きセクション)

<char> -> char<esc> -> esc<esc> <esc> -> Alt-esc<esc> <char> -> Altキーまたはキーコードシーケンス<esc> '[' -> Alt-[<esc> '[' (<modifier>) <char> -> キーコードシーケンス、<modifier>は10進数 番号、デフォルトは1(xterm)<esc> '[' (<キーコード>) (';'<修飾子>) '~' -> キーコードシーケンス、<キーコード> および <修飾子> 10進数でデフォルトは1(vt)です。

終了文字が「~」の場合、最初の数字は必ず存在し、キーコード番号を表します。2番目の数字はオプションの修飾子値です。終了文字が文字の場合、文字はキーコード値、オプションの数字は修飾子値です。

修飾子の値はデフォルトで1に設定されており、1を引いた値は押された修飾子キーのビットマップ(Meta+ Ctrl+ Alt+ )となります⇧ Shift。つまり、例えば、<esc>[4;2~+ はファンクションキー+となります⇧ ShiftEnd<esc>[20~F9<esc>[5CCtrl

つまり、修飾子は次の数値の合計になります。

押されたキー番号コメント
1常に追加され、残りはオプションです
シフト1
(左)Alt2
コントロール4
メタ8
vtシーケンス:<esc>[1~ - ホーム <esc>[16~ - <esc>[31~ - F17<esc>[2~ - 挿入 <esc>[17~ - F6 <esc>[32~ - F18<esc>[3~ - 削除 <esc>[18~ - F7 <esc>[33~ - F19]<esc>[4~ - 終了 <esc>[19~ - F8 <esc>[34~ - F20]<esc>[5~ - ページアップ <esc>[20~ - F9 <esc>[35~ -<esc>[6~ - ページダウン <esc>[21~ - F10 <esc>[7~ - ホーム <esc>[22~ - <esc>[8~ - 終了 <esc>[23~ - F11 <esc>[9~ - <esc>[24~ - F12 <esc>[10~ - F0 <esc>[25~ - F13] <esc>[11~ - F1 <esc>[26~ - F14] <esc>[12~ - F2 <esc>[27~ - <esc>[13~ - F3 <esc>[28~ - F15] <esc>[14~ - F4 <esc>[29~ - F16 <esc>[15~ - F5 <esc>[30~ -xtermシーケンス:<esc>[A - 上へ <esc>[K - <esc>[U -<esc>[B - 下 <esc>[L - <esc>[V -<esc>[C - 右 <esc>[M - <esc>[W -<esc>[D - 左 <esc>[N - <esc>[X -<esc>[E - <esc>[O - <esc>[Y -<esc>[F - 終了 <esc>[1P - F1 <esc>[Z -<esc>[G - キーパッド 5 <esc>[1Q - F2 <esc>[H - ホーム <esc>[1R - F3 <esc>[I - <esc>[1S - F4 <esc>[J - <esc>[T -

<esc>[A<esc>[DANSI出力シーケンスと同じです。<modifier>修飾キーが押されていない場合は通常は省略されますが、ほとんどの実装では常に を出力します<modifier>ドラフトセクション)F1F4

Xtermには、DECのVT端末やエミュレートする他の様々な端末の様々なファンクションキーとマウス入力シーケンススキームに関する包括的なドキュメントページがあります。[17] Thomas Dickeyは、時間をかけて多くのサポートを追加してきました。 [64]また、比較のために他の端末エミュレータで使用されるデフォルトキーのリストも管理しています。[65]

  • Linuxコンソールでは、特定のファンクションキーを押すと という形式のシーケンスが生成されます。CSIシーケンスは で終了する必要がありますCSI [ char[
  • 古いバージョンのTerminatorでは、修飾キーを押しながら「-」キーを押すと、以下のエラーが発生します。この不具合はGNOMEターミナルからコピーされたものです。[要出典]SS3 1; modifiers charF1F4
  • xtermは、カーソル位置を尋ねられた場合、およびキーが押された場合に と応答しますが、 の場合、これらの修飾子は衝突します。これは、 として?プライベート修飾子を使用することで回避できます。これは、応答に として反映されますCSI row ; column RCSI 1 ; modifiers RF3row == 1CSI ? 6 nCSI ? row ; column R
  • 多くの端末では、Altキーを押しながら入力された文字の先頭に文字列が付加されます。これにより、C1コードを構成するESC大文字や記号が曖昧になります。 [説明が必要]@[\]^_
  • Konsole は、修飾キーとともに–が押されたときに生成します[説明が必要]SS3 modifiers charF1F4
  • iTerm2は拡張CSI uモードを介して追加のキーの報告をサポートしています。[66]

参照

  1. ^ 一部のnmはイタリック体で表記されています。これらは数値パラメータのプレースホルダであり、リテラル文字ではありません
  2. ^ Windows 3.x から Windows 8.1 の cmd.exe まで、DOS シェル ウィンドウ (非フルスクリーン) で実行されているのが見られます
  3. ^ PowerShellのデフォルトのショートカット.lnkは10年以上変更されておらず、黄色とマゼンタを再マッピングして、コマンドプロンプトと比較してPowerShellに独特の前景色と背景色を与えています。[34] PowerShell 7は影響を受けません。
  4. ^ デバッグコンソール、「Dark+」テーマ
  5. ^ Campbell テーマ、Windows 10 バージョン 1709 以降で使用されています。
  6. ^ 仮想端末の場合は、/etc/vtrgb から。

参考文献

  1. ^ ab 「標準ECMA-48:文字イメージングI/Oデバイスの制御関数」(PDF)(第2版)。Ecma International。1979年8月。略歴。
  2. ^ Williams, Paul (2006). 「Digitalのビデオ端末」. VT100.net . 2011年8月17日閲覧
  3. ^ Heathkit Company (1979). 「Heathkit Catalog 1979」. Heathkit Company. 2012年1月13日時点のオリジナルよりアーカイブ。 2011年11月4日閲覧
  4. ^ 「撤回されたFIPSリスト番号」(PDF) .米国国立標準技術研究所. 2016年12月15日. 2022年1月2日閲覧
  5. ^ 「ECMA-48 — コード化文字セットの制御関数」ECMA International
  6. ^ ISO/IEC 6429:1992 — 情報技術 — コード化文字セットの制御機能。ISO
  7. ^ 「Amigaプリンターコマンド定義」Commodore . 2013年7月10日閲覧
  8. ^ Hood, Jason (2005). 「Windowsコンソールプログラム用のANSIエスケープシーケンスを処理する」. Jason Hoodのホームページ. 2013年5月9日閲覧。
  9. ^ "colorama · PyPI". Pythonパッケージインデックス. 2022年2月27日閲覧。
  10. ^ bitcrazed. 「コンソール仮想ターミナルシーケンス - Windowsコンソール」. docs.microsoft.com . 2018年5月30日閲覧
  11. ^ 「PowerShellヘルプ:特殊文字について」。2023年1月12日。
  12. ^ 「Windows コンソールとターミナルのエコシステムのロードマップ」。Microsoft。2018年。 2021年3月13日閲覧これには、従来のコンソールホストユーザーインターフェイスをデフォルトの位置から廃止し、Windowsターミナル、ConPTY、仮想ターミナルシーケンスを導入することが含まれます。
  13. ^ 「Windows Terminal が Windows 11 のデフォルトになりました」。
  14. ^ 「Windows 11 用のコマンド プロンプトと Windows Powershell」。
  15. ^ abcdefghi 「標準ECMA-35:文字コード構造および拡張技術」(PDF)(第6版)。Ecma International。1994年。
  16. ^ abcdefghijklmnop 「標準ECMA-48:符号化文字セットの制御関数」(PDF)(第5版)。Ecma International。1991年6月。
  17. ^ abcdefghijklm Moy, Edward; Gildea, Stephen; Dickey, Thomas (2019). 「XTerm制御シーケンス(ctlseqs)」. Invisible Island .
  18. ^ Frank da Cruz、Christine Gianone (1997). C-Kermitの使い方. Digital Press. p. 278. ISBN 978-1-55558-164-0.
  19. ^ 「SCOSC—現在のカーソル位置の保存」。VT510ビデオ端末プログラマ情報12月
  20. ^ 「DECSLRM—左右の余白の設定」。VT510ビデオ端末プログラマ情報。DEC
  21. ^ 「SCORC—保存されたカーソル位置の復元」。VT510ビデオ端末プログラマ情報12月
  22. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. 「XTerm制御シーケンス」。CSIを使用する関数(最終文字順) 。 2022年2月4日閲覧
  23. ^ Conrad Irwin (2013年4月). 「bracketed paste mode」. cirw.in.
  24. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. 「XTerm 制御シーケンス」. 括弧付きペーストモード. 2022年2月4日閲覧
  25. ^ "console_codes(4) - Linuxマニュアルページ". man7.org . 2018年3月23日閲覧
  26. ^ ab "screen(HW)". SCO OpenServerリリース5.0.7マニュアル. 2003年2月11日.
  27. ^ 「バグ791596 – faint(SGR 2)についての考察」。bugzilla.gnome.org
  28. ^ abc 「カーリーと色付きの下線 (#6382) · Issues · George Nachman / iterm2」. GitLab . 2017年12月11日.
  29. ^ abc 「xtermプロトコルの拡張」。kittyドキュメント。 2020年7月1日閲覧
  30. ^ 「カーリーと色付きの下線」KDEバグトラッカー. 2022年8月27日.
  31. ^ 「console-termio-realizer」. jdebp.uk .
  32. ^ "console_codes(4)". Linuxプログラマーズマニュアル. 5.10. Linux man-pagesプロジェクト.
  33. ^ abc 「mintty/mintty: テキスト属性とレンダリング」。GitHub
  34. ^ "WindowsのデフォルトのショートカットがANSIカラー35,36に再マップされる · Issue #4266 · PowerShell/PowerShell". GitHub . 2022年12月21日閲覧
  35. ^ 2004年7月の0,0,205から変更「パッチ#192 – 2004/7/12 – XFree86 4.4.99.9」。
  36. ^ 2004年7月の 「パッチ#192 – 2004/7/12 – XFree86 4.4.99.9」の0, 0, 255から変更されました。
  37. ^ Dickey, Thomas E.「XTerm FAQ: 番号​​で色を設定できますか?」2025年3月28日閲覧
  38. ^ abcd 「T.416 情報技術 - オープン ドキュメント アーキテクチャ (ODA) および交換フォーマット: 文字コンテンツ アーキテクチャ」。
  39. ^ Dickey, Thomas E. 「Ncurses FAQ: 「xterm」を「xterm-256color」と同じにしないのはなぜですか?」2025年3月28日閲覧
  40. ^ "color-spaces.pl (1999年7月11日付のxtermの256colors2.plのコピー)". KDE. 2006年12月6日.[永久リンク切れ]
  41. ^ “README.moreColors”. KDE。 2010 年 4 月 22 日。
  42. ^ 「libvteのバグレポートとパッチ:1600万色のサポート」GNOME Bugzilla。2014年4月4日。 2016年6月5日閲覧
  43. ^ 「Gnome ターミナルで 24 ビット トゥルーカラーのサポートを有効にするにはどうすればいいですか?」
  44. ^ 「NCURSES FAQ: なぜ 16 色 (または 256 色) だけなのですか?」
  45. ^ Кочков, Антон (2015年8月21日). 「[slang-users] Fwd: True Color (24ビットカラー) エスケープシーケンスのサポート」. slang-users (メーリングリスト) . 2025年11月15日閲覧
  46. ^ Martin Kealey (編). 「termstandard/colors」. GitHub . 2025年11月16日閲覧
  47. ^ "履歴". curs_color(3X) - curses を使って端末の色を操作する。
  48. ^ “Midnight Commander: lib/tty/color-slang.c”. Fossies . 2022年2月13日時点のオリジナルよりアーカイブ2022年2月13日閲覧。
  49. ^ ab Dickey, Thomas E. (2017). 「NCURSES — S-Langに関するコメント」. invisible-island.net .
  50. ^ “Features/256 Color Terminals - Fedora Project Wiki”. Fedora Project . 2012年10月4日時点のオリジナルよりアーカイブ。
  51. ^ 「バグ733423 – 自動カラー検出のためにCOLORFGBG環境変数を設定してください」。bugzilla.gnome.org
  52. ^ ab Koblinger, Egmont. 「ターミナルエミュレータにおけるハイパーリンク(HTML風アンカー)」. GitHub Gists .
  53. ^ "mintty/mintty: 制御シーケンス". GitHub .
  54. ^ Koblinger, Egmont. 「端末エミュレータにおけるOSC 8の採用」. GitHub .
  55. ^ 「console_codes — Linuxコンソールのエスケープシーケンスと制御シーケンス」。Linuxプログラマーズマニュアル
  56. ^ ab ISO-IR: ISO/IEC エスケープシーケンスで使用されるコード化文字セットの国際登録簿(PDF) . ITSCJ/ IPSJ . 2023年5月12日時点のオリジナル(PDF)からアーカイブ。 2023年5月12日閲覧
  57. ^ ab Digital . 「DECSC—カーソル保存」. VT510ビデオ端末プログラマ情報.
  58. ^ ab ANSI Escape sequences - VT100 / VT52、2009年2月27日のオリジナルからアーカイブ、 2020年8月21日閲覧。
  59. ^ Digital . 「DECSWL—シングル幅、シングルハイトライン」VT510 ビデオ端末プログラマ情報.
  60. ^ Digital . 「DECDWL—ダブル幅、シングルハイトライン」VT510 ビデオ端末プログラマ情報.
  61. ^ 「第9章 システムのヒント」。debian.org
  62. ^ 「VT100.net: Digital VT100 User Guide」 . 2015年1月19日閲覧
  63. ^ 「bash – コマンドが完了したときに通知を受け取る方法 – Ask Different」 。 2015年1月19日閲覧
  64. ^ Dickey, Thomas. 「XTerm FAQ: コントロールをカウントしてバージョンを比較する」. Invisible Island . 2020年1月25日閲覧
  65. ^ Dickey, Thomas (2016). 「XTermおよびその他の端末エミュレータのファンクションキー一覧」. Invisible Island . 2020年1月25日閲覧
  66. ^ “CSI u - ドキュメント - iTerm2 - macOSターミナル代替”. iTerm2 . 2023年8月15日閲覧
  • 標準 ECMA-48、符号化文字セットの制御関数(第 5 版、1991 年 6 月)、欧州コンピュータ製造業者協会、ジュネーブ 1991(ISO および IEC によって標準 ISO/IEC 6429 としても発行)
  • vt100.net DECドキュメント
  • 「ANSI.SYS - ANSI端末エミュレーションエスケープシーケンス」。2006年2月6日時点のオリジナルよりアーカイブ2007年2月22日閲覧。
  • Xterm / エスケープシーケンス
  • AIXterm / エスケープシーケンス
  • ECMA-48 および関連規格にほぼ準拠した端末用のエスケープ シーケンスのコレクション。
  • 「ANSIエスケープシーケンス」。2011年5月25日時点のオリジナルよりアーカイブ。
  • ITU-T勧告T.416(03/93)情報技術 - オープンドキュメントアーキテクチャ(ODA)および交換フォーマット:文字コンテンツアーキテクチャ
「https://en.wikipedia.org/w/index.php?title=ANSI_escape_code&oldid=1324240645#Fe_Escape_sequences」より取得