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スペース文字から始まり、制御文字は含まれません)を送信することで、画面上のx, Yy位置にカーソルを配置できます。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では、ISO 6429 C0セットをISO 6429 C1セットなしで使用することも、その逆も可能です。ただし、0x1Bは常にESCです)。これは、転送されるデータ量を短縮するため、またはエスケープシーケンスでは利用できない機能を実行するために使用されます。

一般的な C0 制御コード(網羅的なリストではありません)
^C0略語Cエスケープシーケンス名前効果
^G0x07ベル\aベル聞こえる音を出します。
^H0x08学士\bバックスペースカーソルを左に移動します (ただし、カーソルが行の先頭にある場合は「後方に折り返す」場合があります)。
^私0x09HT\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 ^0x9E首相プライバシーメッセージ
ESC _0x9F装甲兵員輸送車アプリケーションプログラムコマンド

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

制御シーケンスイントロデューサ(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 A CUUカーソルアップ カーソルを指定された方向にn(デフォルト1)セル移動します。カーソルがすでに画面の端にある場合は、何も起こりません。
CSI n B CUDカーソルダウン
CSI n C CUFカーソル前進
CSID カブカーソルを戻す
CSI n E CNLカーソル次の行 カーソルをn行(デフォルト1) 下の行の先頭に移動します( ANSI.SYSではありません)
CSI n F CPLカーソル前の行 カーソルをn行(デフォルト1) 上の行の先頭に移動します( ANSI.SYSではありません)
CSI n G チャカーソル水平絶対カーソルを列nに移動します(デフォルト1)。( ANSI.SYSではありません)
CSI  n  ;  m  H カップカーソル位置 カーソルをn行目、m列目に移動します。値は1から始まり、1省略した場合は(左上隅)がデフォルトになります。 のようなシーケンスはCSI ;5Has の同義語でありCSI 1;5H、 asはandCSI 17;Hと同じです。CSI 17HCSI 17;1H
CSI n J EDディスプレイで消去 画面の一部をクリアします。n が (または省略)の場合カーソル0から画面の末尾までクリアします。n が の場合カーソル1から画面の先頭までクリアします。n が の場合画面全体をクリアします(DOS ANSI.SYS2ではカーソルを左上に移動します)。n が の場合画面全体をクリアし、スクロールバックバッファに保存されているすべての行を削除します(この機能はxterm用に追加されたもので、他の端末アプリケーションでもサポートされています)。 3
CSI n K エル線で消す 行の一部を消去します。n が (または省略)の場合カーソル0から行末までを消去します。n が の場合カーソル1から行頭までを消去します。n が の場合2全体を消去します。カーソル位置は変化しません。
CSI n S SU上へスクロール ページ全体をn行(デフォルト1)上へスクロールします。新しい行はページ下部に追加されます。(ANSI.SYSではありません)
CSI n T SD下にスクロール ページ全体をn行(デフォルト1)スクロールダウンします。新しい行は先頭に追加されます。(ANSI.SYSではありません)
CSI n  ; m f HVP水平位置 垂直位置CUPと同じですが、CUDやCNLのようなエディタ機能ではなく、CRLFのような書式制御機能としてカウントされます。これにより、特定の端末モードでは処理が異なる場合があります。 [ 16 ]:付録A
CSI n m SGRグラフィック表現を選択このコードに続く文字の色とスタイルを設定します
CSI 5i AUXポートオン 通常、ローカルシリアルプリンタ用の補助シリアルポートを有効にします
CSI 4i AUXポートオフ 通常、ローカルシリアルプリンタの補助シリアルポートを無効にします

CSI 6n DSRデバイスステータスレポート カーソル位置 (CPR) を送信して報告しますESC[n;mR。ここで、nは行、mは列です。
人気のプライベートシーケンス
コード略語名前効果
CSIの SCP、SCOSC現在のカーソル位置を保存 SCOコンソールモードでカーソルの位置/状態を保存します。[ 19 ]垂直分割画面モードでは、代わりに左右の余白を設定(として)またはリセットするために使用されます。[ 20 ]CSI n ; n s
CSI u RCP、SCORC保存したカーソル位置を復元SCOコンソールモードでカーソルの位置/状態を復元します。[ 21 ]
CSI ? 25時間 デクトセムVT220からのカーソルを表示します。
CSI ? 25リットル デクトセムカーソルを非表示にします。
CSI ? 1004時間 フォーカスの報告を有効にします。ターミナルエミュレータがフォーカスに入ったとき、またはフォーカスがなくなったときに、それぞれ および として報告しESC [IますESC [O
CSI ? 1004 l レポートフォーカスを無効にします。
CSI ? 1049時間 xtermから代替スクリーンバッファを有効にする
CSI ? 1049 l xtermから代替スクリーンバッファを無効にする
CSI ? 2004年 括弧付き貼り付けモードをオンにします。[ 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ビデオを反転または反転する 前景色と背景色を入れ替えます。
8隠す隠す か広くサポートされていません。
9取り消し線または線引き文字は判読可能ですが、削除対象としてマークされています。Terminal.appではサポートされていません。
10プライマリ(デフォルト)フォント
11~19代替フォント 代替フォントを選択n − 10
20フラクトゥール(ゴシック) ほとんどサポートされていない
21二重下線、または太字ではない ECMA-48 [ 16 ] :8.3.117 に従って二重下線が引かれますが、 Linuxカーネルのバージョン4.17より前のコンソールを含むいくつかの端末で太字の強度が無効になります。 [ 31 ]
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では「絵文字バリエーションセレクター」として実装されています。 [ 32 ]
52包囲された
53上線 Terminal.appではサポートされていません
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でのみ実装[ 32 ]
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 ]ターミナルアプリパテmIRCxtermウブントゥ[ f ]エクリプスターミナル
30400、0、0 12、12、12 0、0、0 1、1、1 0、0、0
3141196, 0, 0 196, 0, 0 205、49、49 197、15、31 153, 0, 0 187, 0, 0 127, 0, 0 205, 0, 0 222、56、43 205, 0, 0
32420, 196, 0 0, 128, 0 13、188、121 19、161、14 0, 166, 0 0, 187, 0 0, 147, 0 0, 205, 0 57、181、74 0, 205, 0
3343黄色 196, 126, 0 128, 128, 0 238、237、240 229, 229, 16 193, 156, 0 153, 153, 0 187, 187, 0 252, 127, 0 205, 205, 0 255, 199, 6 205, 205, 0
34440, 0, 196 0, 0, 128 36、114、200 0, 55, 218 0, 0, 178 0, 0, 187 0, 0, 127 0, 0, 238 [ 34 ]0、111、184 0, 0, 238
3545マゼンタ 196, 0, 196 128, 0, 128 1、36、86 188、63、188 136、23、152 178, 0, 178 187, 0, 187 156, 0, 156 205, 0, 205 118、38、113 205, 0, 205
3646シアン 0, 196, 196 0, 128, 128 17、168、205 58、150、221 0, 166, 178 0, 187, 187 0, 147, 147 0, 205, 205 44, 181, 233 0, 205, 205
3747196、196、196 192、192、192 229、229、229 204、204、204 191、191、191 187、187、187 210、210、210 229、229、229 204、204、204 229、229、229
90100ブライトブラック(グレー)78、78、78 128、128、128 102、102、102 118、118、118 102、102、102 85、85、85 127、127、127 127、127、127 128、128、128 0、0、0
91101明るい赤 220、78、78 255, 0, 0 241、76、76 231、72、86 230, 0, 0 255、85、85 255, 0, 0
92102明るい緑 78、220、78 0, 255, 0 35, 209, 139 22, 198, 12 0, 217, 0 85、255、85 0, 252, 0 0, 255, 0
93103明るい黄色 243、243、78 255, 255, 0 245、245、67 249、241、165 230, 230, 0 255、255、85 255, 255, 0
94104明るい青 78、78、220 0, 0, 255 59, 142, 234 59、120、255 0, 0, 255 85、85、255 0, 0, 252 92、92、255 [ 35 ]0, 0, 255 92、92、255
95105明るいマゼンタ 243、78、243 255, 0, 255 214、112、214 180, 0, 158 230, 0, 230 255、85、255 255, 0, 255
96106明るいシアン 78、243、243 0, 255, 255 41, 184, 219 97、214、214 0、230、230 85、255、255 0, 255, 255
97107明るい白 255、255、255 229、229、229242、242、242 230、230、230 255、255、255

8ビット

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

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 ] [ 37 ]

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

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  10 11 12 13 14 15
216色
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
グレースケールカラー
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

上記の表の色の 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の場合:レベル= 255ELIFコード== 7 :レベル= 229それ以外レベル= 205r = 127 if code == 8 else level if ( code & 1 ) != 0 else 92 if code == 12 else 0g = 127 if code == 8 else level if ( code & 2 ) != 0 else 92 if code == 12 else 0b = 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の場合、そうでない場合は0b = blue * 40 + 55 ( blue != 0の場合、そうでない場合は0)印刷( f " {コード: 3d } : { r : 02X } { g : 02X } { b : 02X } " )印刷( 「色 232 ~ 255 はグレースケール ランプであり、意図的に白黒は除外されます」)範囲0、24 グレー場合レベル=グレー* 10 + 8コード= 232 +グレーprint ( f " {コード: 3d } : {レベル: 02X } {レベル: 02X } {レベル: 02X } " )

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

24ビット

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

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空間における「直接色」を指定できるというものです。 [ 43 ]。セミコロン区切りのRGB値の指定は、広く普及した最初の実装として、24ビットカラーをサポートする端末エミュレータで広くサポートされています。

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

  • 区切り文字として、セミコロンではなくコロンが使用されます。
  • 「2」の後のパラメータ (r、g、b) はオプションであり、空のままにすることができます。
  • 先頭に「カラースペースID」があります。[ 17 ]カラースペースIDの定義は仕様に含まれていないため、未指定のデフォルトを表すために空白になる場合があります。CMYKカラー仕様の場合、minttyはカラースペースIDパラメータを、チャンネル値が与えられる最大値(例:100または255)を指定するものとして解釈します。[ 32 ]
  • 48の後の「2」は赤・緑・青のフォーマットを指定する(および上記の「5」は0~255のインデックスカラーを指定する)ほかに、「0」(実装定義)と「1」(透明)という選択肢がある。どちらもそれ以上のパラメータはない。「3」はシアン・マゼンタ・イエローのスキームを使用する色を指定し、「4」はシアン・マゼンタ・イエロー・ブラックのスキームを使用する色を指定する。後者はブラックコンポーネントに「未使用」とマークされた位置を使用する。[ 37 ]
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バリアントの両方が多くの端末エミュレータでサポートされています。[ 44 ] [ 45 ]

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

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

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

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

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

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

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

Fs エスケープシーケンス

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

Fp エスケープシーケンス

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

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

nF エスケープシーケンス

の後に0x20〜0x2FのESC範囲のバイトが続く場合、エスケープシーケンスは型 となります。このバイトの後に、この範囲の任意の数の追加バイトが続き、その後に0x30〜0x7Eの範囲のバイトが続きます。これらのエスケープシーケンスは、最初のバイトの下位2ビット(例えば、最初のバイトが0x22のシーケンスの場合は「type」)によってさらにサブカテゴリ化されます。また、最後のバイトが0x30〜0x3Fの範囲にあるかどうか(私的使用を示す場合「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 現在、そのようなシーケンスは登録されていません。[ 55 ]タイプ3Fpシーケンス(「#」で始まるものを含む)は、私的使用の制御機能に使用できます。[ 15 ]:6.5.3

VT100で認識される一部のタイプ3Fp(私用)エスケープシーケンス
略語名前効果
ESC # 312月DEC 倍角文字、上半分 現在の行の文字数を2倍にします。このコードは上半分用です。[ 57 ]
ESC # 412月DEC 倍角文字、下半分現在の行の文字数を2倍にします。このコードは下半分用です。[ 57 ]
ESC # 5デックスウルDEC シングル幅ライン デフォルトの動作に従って、現在の行に半角文字を使用します。[ 58 ] [ 17 ]
ESC # 6DECDWLDEC ダブル幅線現在の行を全角文字にして、行の後半の文字をすべて破棄します。[ 59 ] [ 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系端末で構文の強調表示によく使用されます。例えば、互換端末では、次のlistコマンドはファイル名とディレクトリ名を種類ごとに色分けします。

ls --color 

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

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

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

flasher(){whiletrue;doprintf'\e[?5h' '\e[?5l';sleep0.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 ){intn ;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つの入力方式があり、アプリケーションによって切り替えることができます。

(草稿部分)

<文字> -> 文字 <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
(左)Alt 2
コントロール 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は時間をかけてこれに多くのサポートを追加してきました。 [ 63 ]彼はまた、比較のために他の端末エミュレータで使用されるデフォルトキーのリストを管理しています。[ 64 ]

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

参照

注記

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

参考文献

  1. ^ a b「規格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 年。20213 月 13 日閲覧これには、従来のコンソール ホスト ユーザー インターフェイスを既定の位置から廃止し、Windows ターミナル、ConPTY、および仮想ターミナル シーケンスを導入することが含まれます。
  13. ^ 「Windows Terminal が Windows 11 のデフォルトになりました」
  14. ^ 「Windows 11 用のコマンド プロンプトと Windows Powershell」
  15. ^ a b c d e f g h i「標準ECMA-35:文字コード構造および拡張技術」(PDF)(第6版)。Ecma International。1994年。
  16. ^ a b c d e f g h i j k l m n o p「標準ECMA-48:符号化文字セットの制御関数」(PDF)(第5版)。Ecma International。1991年6月。
  17. ^ a b c d e f g h i j k l m 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ビデオ端末プログラマ情報。DEC
  20. ^ 「DECSLRM—左右の余白を設定する」。VT510ビデオ端末プログラマ情報。DEC
  21. ^ 「SCORC—保存されたカーソル位置の復元」。VT510ビデオ端末プログラマ情報。DEC
  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. ^ a b "screen(HW)" . SCO OpenServerリリース5.0.7マニュアル. 2003年2月11日.
  27. ^ 「バグ 791596 – faint (SGR 2) についての考察。bugzilla.gnome.org
  28. ^ a b c「カーリーと色付きの下線 (#6382) · Issues · George Nachman / iterm2」 . GitLab . 2017年12月11日.
  29. ^ a b c「xtermプロトコルの拡張」 . kittyドキュメント. 2020年7月1日閲覧
  30. ^ 「カールした色付きの下線」 KDEバグトラッカー2022年8月27日。
  31. ^ "console_codes(4)" . Linuxプログラマーズマニュアル. 5.10. Linux man-pagesプロジェクト.
  32. ^ a b c「mintty/mintty: テキスト属性とレンダリング。GitHub
  33. ^ "WindowsのデフォルトのショートカットがANSIカラー35,36に再マップされる · Issue #4266 · PowerShell/PowerShell" . GitHub . 2022年12月21日閲覧
  34. ^ 2004年7月の0,0,205から変更「パッチ#192 – 2004/7/12 – XFree86 4.4.99.9」
  35. ^ 2004年7月の「パッチ#192 – 2004/7/12 – XFree86 4.4.99.9」の0,0,255から変更されました
  36. ^ Dickey, Thomas E. 「XTerm FAQ: 番号​​で色を設定できますか?」2025年3月28日閲覧
  37. ^ a b c d「T.416 情報技術 - オープン ドキュメント アーキテクチャ (ODA) および交換フォーマット: 文字コンテンツ アーキテクチャ」
  38. ^ Dickey, Thomas E. 「Ncurses FAQ: 「xterm」を「xterm-256color」と同じにしないのはなぜですか?」2025年3月28日閲覧
  39. ^ "color-spaces.pl (1999年7月11日付のxtermの256colors2.plのコピー)" KDE. 2006年12月6日.
  40. ^ "README.moreColors" . KDE。 2010 年 4 月 22 日。
  41. ^ 「libvteのバグレポートとパッチ:1600万色のサポート」 GNOME Bugzilla。2014年4月4日。 2016年6月5日閲覧
  42. ^ 「Gnome ターミナルで 24 ビット トゥルーカラーのサポートを有効にするにはどうすればいいですか?」
  43. ^ 「NCURSES FAQ: なぜ 16 色 (または 256 色) だけなのでしょうか?」 .
  44. ^ Кочков, Антон (2015年8月21日). 「[slang-users] Fwd: True Color (24ビットカラー) エスケープシーケンスのサポート」 . slang-users (メーリングリスト) . 2025年11月15日閲覧
  45. ^ Martin Kealey (編). 「termstandard/colors」 . GitHub . 2025年11月16日閲覧
  46. ^「履歴」。curs_color (3X) - curses を使って端末の色を操作する
  47. ^ “Midnight Commander: lib/tty/color-slang.c” . Fossies . 2022年2月13日時点のオリジナルよりアーカイブ2022年2月13日閲覧。
  48. ^ a b Dickey, Thomas E. (2017). 「NCURSES — S-Langに関するコメント」 . invisible-island.net .
  49. ^ 「Features/256 Color Terminals - Fedora Project Wiki」 . Fedora Project . 2012年10月4日時点のオリジナルよりアーカイブ。
  50. ^ 「バグ 733423 – 自動カラー検出のために COLORFGBG 環境変数を設定してください。bugzilla.gnome.org
  51. ^ a b Koblinger, Egmont. 「ターミナルエミュレーターのハイパーリンク(HTMLのようなアンカー)」GitHub Gists
  52. ^ "mintty/mintty: 制御シーケンス" . GitHub .
  53. ^ Koblinger, Egmont. 「端末エミュレータにおけるOSC 8の採用」 . GitHub .
  54. ^ 「console_codes — Linuxコンソールのエスケープシーケンスと制御シーケンス」。Linuxプログラマーズマニュアル
  55. ^ a b ISO-IR: ISO/IEC エスケープシーケンスで使用されるコード化文字セットの国際登録簿(PDF) . ITSCJ/ IPSJ . 2023年5月12日時点のオリジナル(PDF)からアーカイブ。 2023年5月12日閲覧
  56. ^ a b Digital . 「DECSC—カーソル保存」 . VT510 ビデオ端末プログラマ情報.
  57. ^ a b ANSI Escape sequences - VT100 / VT52 、 2009年2月27日のオリジナルからアーカイブ、 2020年8月21日閲覧。
  58. ^ Digital . 「DECSWL—シングル幅、シングル高のライン」 . VT510 ビデオ端末プログラマ情報.
  59. ^ Digital . 「DECDWL—ダブル幅、シングルハイトライン」 . VT510 ビデオ端末プログラマ情報.
  60. ^ 「第9章 システムのヒント」 . debian.org .
  61. ^ 「VT100.net: Digital VT100 User Guide」 . 2015年1月19日閲覧
  62. ^ 「bash – コマンドが完了したときに通知を受け取る方法 – Ask Different」 。 2015年1月19日閲覧
  63. ^ Dickey, Thomas. 「XTerm FAQ: コントロールをカウントしてバージョンを比較する」 Invisible Island . 2020年1月25日閲覧
  64. ^ Dickey, Thomas (2016). 「XTermおよびその他の端末エミュレータのファンクションキー一覧」 . Invisible Island . 2020年1月25日閲覧
  65. ^ 「CSI u - ドキュメント - iTerm2 - macOSターミナル代替」iTerm2 . 2023年8月15日閲覧