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に似た文書保存形式として、オープンドキュメントアーキテクチャ[要出典]もありました。

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ベル聞こえる音を出します。
^H0x08BS\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 ACUUカーソルアップカーソルを指定された方向にn(デフォルト1)セル移動します。カーソルがすでに画面の端にある場合は、何も起こりません。
CSI n BCUDカーソルダウン
CSI n CCUFカーソル前進
CSIDカブカーソルを戻す
CSI n ECNLカーソル次の行カーソルをn行(デフォルト1) 下の行の先頭に移動します( ANSI.SYSではありません)
CSI n FCPLカーソル前の行カーソルを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 JEDディスプレイで消去画面の一部をクリアします。n が (または省略)の場合カーソル0から画面の末尾までクリアします。n が の場合カーソル1から画面の先頭までクリアします。n が の場合画面全体をクリアします(DOS ANSI.SYS2ではカーソルを左上に移動します)。n が の場合画面全体をクリアし、スクロールバックバッファに保存されているすべての行を削除します(この機能はxterm用に追加されたもので、他の端末アプリケーションでもサポートされています)。3
CSI n Kエル線で消す行の一部を消去します。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のようなエディタ機能ではなく、CRLFのような書式制御機能としてカウントされます。これにより、特定の端末モードでは処理が異なる場合があります。 [ 16 ]:付録A 
CSI n mSGRグラフィック表現を選択このコードに続く文字の色とスタイルを設定します
CSI 5iAUXポートオン通常、ローカルシリアルプリンタ用の補助シリアルポートを有効にします
CSI 4iAUXポートオフ通常、ローカルシリアルプリンタの補助シリアルポートを無効にします

CSI 6nDSRデバイスステータスレポートカーソル位置 (CPR) を送信して報告しますESC[n;mR。ここで、nは行、mは列です。
人気のプライベートシーケンス
コード略語名前効果
CSIのSCP、SCOSC現在のカーソル位置を保存SCOコンソールモードでカーソルの位置/状態を保存します。[ 19 ]垂直分割画面モードでは、代わりに左右の余白を設定(として)またはリセットするために使用されます。[ 20 ]CSI n ; n s
CSI uRCP、SCORC保存したカーソル位置を復元SCOコンソールモードでカーソルの位置/状態を復元します。[ 21 ]
CSI ? 25時間デクトセムVT220からのカーソルを表示します
CSI ? 25リットルデクトセムカーソルを非表示にします。
CSI ? 1004時間フォーカスの報告を有効にします。ターミナルエミュレータがフォーカスに入ったとき、またはフォーカスがなくなったときに、それぞれ および として報告しESC [IますESC [O
CSI ? 1004 lレポートフォーカスを無効にします。
CSI ? 1049時間xtermから代替スクリーンバッファを有効にする
CSI ? 1049 lxtermから代替スクリーンバッファを無効にする
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ビデオを反転 または反転する前景色と背景色の入れ替え。一貫性のないエミュレーション[ 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上線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でのみ実装[ 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 ]
ターミナルアプリパテmIRCxtermウブントゥ[ 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 r  =  127  if  code  ==  8  else  level  if  ( code  &  1 )  !=  0  else  92  if  code  ==  12  else  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ターミナルを含むすべてのlibvteベースの端末[ 42 ]などがあります。[ 43 ]

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

構文はITUのT.416オープンドキュメントアーキテクチャ(ODA)と交換フォーマット:文字コンテンツアーキテクチャに基づいていると思われます。 [ 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 の場合) を示します。

ITU-RGBのバリエーションはxtermでサポートされていますが、カラースペースIDと許容値パラメータは無視されます。セミコロンを使用したよりシンプルなスキームは、Konsoleで最初に見つかりました。[ 17 ]

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

[編集]

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

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

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

[編集]

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

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

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

Fs エスケープシーケンス

[編集]

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

Fp エスケープシーケンス

[編集]

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

VT100で認識されるFp(私用)エスケープシーケンスの一部
略語名前効果
ESC 712進数DEC カーソル保存カーソル位置、エンコードシフト状態、書式設定属性を保存します。[ 54 ] [ 17 ]
ESC 8環境保護委員会DEC カーソルの復元カーソル位置、エンコードシフト状態、フォーマット属性を以前のDECSCから復元します(存在する場合)。そうでない場合は、すべてをデフォルトにリセットします。[ 54 ] [ 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 現在、そのようなシーケンスは登録されていません。[ 53 ]タイプ3Fpシーケンス(「#」で始まるものを含む)は、私的使用の制御機能に使用できます。[ 15 ]:6.5.3 

VT100で認識される一部のタイプ3Fp(私用)エスケープシーケンス
略語名前効果
ESC # 312月DEC 倍角文字、上半分現在の行の文字数を2倍にします。このコードは上半分用です。[ 55 ]
ESC # 412月DEC 倍角文字、下半分現在の行の文字数を2倍にします。このコードは下半分用です。[ 55 ]
ESC # 5デックスウルDEC シングル幅ラインデフォルトの動作に従って、現在の行に半角文字を使用します。[ 56 ] [ 17 ]
ESC # 6DECDWLDEC ダブル幅線現在の行を全角文字にして、行の後半の文字をすべて破棄します。[ 57 ] [ 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」で始まる単語を含む行を濃い赤色の背景に明るい黄色で表示します(大文字と小文字は区別されません)。コードの表示部分は強調表示されています。[ 58 ]

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

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

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

  • 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モードを介して追加のキーの報告をサポートしています。[ 63 ]

参照

[編集]

注記

[編集]
  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. ^ 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 n 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-termio-realizer" . jdebp.uk .
  32. ^ "console_codes(4)" . Linuxプログラマーズマニュアル. 5.10. Linux man-pagesプロジェクト.
  33. ^ a b c 「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. ^ a b c d 「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. ^ 「履歴」。curs_color (3X) - curses を使って端末の色を操作する
  45. ^ “Midnight Commander: lib/tty/color-slang.c” . Fossies . 2022年2月13日時点のオリジナルよりアーカイブ2022年2月13日閲覧。
  46. ^ a b Dickey, Thomas E. (2017). 「NCURSES — S-Langに関するコメント」 . invisible-island.net .
  47. ^ 「Features/256 Color Terminals - Fedora Project Wiki」 . Fedora Project . 2012年10月4日時点のオリジナルよりアーカイブ。
  48. ^ 「バグ 733423 – 自動カラー検出のために COLORFGBG 環境変数を設定してください。bugzilla.gnome.org
  49. ^ a b Koblinger, Egmont. 「ターミナルエミュレーターのハイパーリンク(HTMLのようなアンカー)」GitHub Gists
  50. ^ "mintty/mintty: 制御シーケンス" . GitHub .
  51. ^ Koblinger, Egmont. 「端末エミュレータにおけるOSC 8の採用」 . GitHub .
  52. ^ 「console_codes — Linuxコンソールのエスケープシーケンスと制御シーケンス」。Linuxプログラマーズマニュアル
  53. ^ a b ISO-IR: ISO/IEC エスケープシーケンスで使用されるコード化文字セットの国際登録簿(PDF) . ITSCJ/ IPSJ . 2023年5月12日時点のオリジナル(PDF)からアーカイブ。 2023年5月12日閲覧
  54. ^ a b Digital . 「DECSC—カーソル保存」 . VT510 ビデオ端末プログラマ情報.
  55. ^ a b ANSI Escape sequences - VT100 / VT52 、 2009年2月27日のオリジナルからアーカイブ、 2020年8月21日閲覧。
  56. ^ Digital . 「DECSWL—シングル幅、シングル高のライン」 . VT510 ビデオ端末プログラマ情報.
  57. ^ Digital . 「DECDWL—ダブル幅、シングルハイトライン」 . VT510 ビデオ端末プログラマ情報.
  58. ^ 「第9章 システムのヒント」 . debian.org .
  59. ^ 「VT100.net: Digital VT100 User Guide」 . 2015年1月19日閲覧
  60. ^ 「bash – コマンドが完了したときに通知を受け取る方法 – Ask Different」 。 2015年1月19日閲覧
  61. ^ Dickey, Thomas. 「XTerm FAQ: コントロールをカウントしてバージョンを比較する」 Invisible Island . 2020年1月25日閲覧
  62. ^ Dickey, Thomas (2016). 「XTermおよびその他の端末エミュレータのファンクションキー一覧」 . Invisible Island . 2020年1月25日閲覧
  63. ^ 「CSI u - ドキュメント - iTerm2 - macOSターミナル代替」iTerm2 . 2023年8月15日閲覧
[編集]