制御機能 (control functions) とは端末などでの文字列の交換(やりとり)に於いて、 通常の文字列の中に埋め込まれる特定のバイト列 (シーケンス) によって指定・実行される端末などの機能のことである。 一つ一つの制御機能には名称 (name) と略号 (acronym) が与えられ、それぞれ例えば以下の様な目的で使われる。
シーケンスが使われる場所は二つに分けることができる。 アプリケーションからの出力 (アプリケーションから端末に対して送られるバイト列) では端末制御の為に使われる。 アプリケーションへの入力 (端末からアプリケーションに対して送られるバイト列) の中では端末の応答やユーザの入力を伝達する為に使われる。 シーケンスは、これらの2つの場所でそれぞれ独立な体系を持っている。 つまり、片方で或る意味を持つバイト列は他方では全く異なる意味を持つ。 この文書では便宜のため、 アプリケーションからの出力に使われる物を制御の用途のシーケンスとし、 入力に使われる物を応答 (response) の用途のシーケンスと呼ぶ事にする。 この文書では特に制御の用途のシーケンスを中心に扱い、特に断りがなければこれを指す。
※注意: この文書に於いて小文字またはアンダースコアから始まる略号はこの文書内だけで通じる便宜上の略号である事に注意する。 各種規格で定義される制御機能及び後述のモード・モード設定の名称と略号は、 一般の単語と区別する為に全て大文字で与えられる。 様々な端末の持つ独自の制御機能の名称は必ずしも大文字ではないが、 略号については全て大文字でつけられるのが普通である。 更に一部の制御機能には名称・略号が割り当てられていない。 独自モードについては名称・略号が割り当てられていない物が多くある。 独自モード設定については名称・略号が割り当てられている事は稀である。 この文書では名前の割り当てられていない制御機能・モードに対して独自の略号を与える。
複数ある主要な標準規格の名称と関係について簡潔に述べる。 詳細な情報については文献に記述する。
以降ではバイトを column/row の組み合わせで表現する。 column と row は 0-15 の十進整数であり、それぞれ上位 4 bit と下位 4 bit を表す。 例えば 02/00 は 0x20 を表し ASCII コードにおいて空白文字に対応する。
制御機能を表現するバイト列を符号化表現 (coded representation) という。 符号化表現の形式によって制御機能は以下の様に分類される。
名称 | 符号化表現 | 説明 | 関連規格 | |
---|---|---|---|---|
制御文字 | C0 制御文字 | C0 | 制御機能の基本集合 | ISO/IEC 646 |
C1 制御文字 | C1 | 制御機能の補助集合 | ISO/IEC 6429 (ECMA-48) | |
Unicode 制御文字 | Cf | Unicode 制御機能 | ISO/IEC 10646, Unicode UAXs | |
DLE シーケンス | DLE I* F DLE I* C0 | 伝送の制御 | ISO/IEC 1745 (ECMA-16, ECMA-37) | |
情報メッセージ 情報ブロック |
(SOH ...)? STX ... ETX (SOH ...)? STX ... ETB SOH ... ETB | 伝送 | ||
エスケープシーケンス | ESC I* Ft | 文字コードの制御 | ISO/IEC 2022 (ECMA-35) | |
ESC I* Fp | 私用の文字コード・制御 | |||
制御シーケンス | CSI P* I* Ft | ANSI 制御機能 | ISO/IEC 6429 (ECMA-48) | |
制御列 | コマンド列 | DCS ... ST | 装置制御 | |
OSC ... ST | OSの機能 | |||
PM ... ST | 私用の機能 | |||
APC ... ST | アプリケーションの機能 | |||
文字列 | SOS ... ST | 文字列 |
但し、DLE, ESC, DCS, SOS, CSI, ST, OSC, PM, APC は C0 または C1 に含まれる制御文字である (後述)。
[ECMA-48/5.4, ECMA-35/13.2.1] また、Name の表記で示したバイトは、Name に応じて特定の集合に含まれる。
Name | 範囲 | ||
---|---|---|---|
C0 | 00/00 - 01/15 | ||
I | 02/00 - 02/15 | ||
F | Fp, P | 03/00 - 03/15 | |
Ft | Fe | 04/00 - 05/15 | |
Fs | 06/00 - 07/14 | ||
C1 | 08/00 - 09/15 | ||
Cf | Unicode General Category Cf , Zl , Zp の文字(特定の文字符号化方式でバイト列を Unicode 文字の列に変換した後) |
C0 (ISO/IEC 646) | C1 (ISO/IEC 6429) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
略号 | C/R | 16進 | 8進 | ES | CN | 略号 | C/R | 16進 | 8進 | ES | CN | 略号 | C/R | 16進 | 8進 | 略号 | C/R | 16進 | 8進 | ||||
NUL | 00/00 | \x00 | \000 | ^@ | DLE | 01/00 | \x10 | \020 | ^P | (PAD) | 08/00 | \x80 | \200 | DCS | 09/00 | \x90 | \220 | ||||||
SOH | 00/01 | \x01 | \001 | ^A | DC1 (XON) | 01/01 | \x11 | \021 | ^Q | (HOP) | 08/01 | \x81 | \201 | PU1 | 09/01 | \x91 | \221 | ||||||
STX | 00/02 | \x02 | \002 | ^B | DC2 | 01/02 | \x12 | \022 | ^R | BPH | 08/02 | \x82 | \202 | PU2 | 09/02 | \x92 | \222 | ||||||
ETX | 00/03 | \x03 | \003 | ^C | DC3 (XOFF) | 01/03 | \x13 | \023 | ^S | NBH | 08/03 | \x83 | \203 | STS | 09/03 | \x93 | \223 | ||||||
EOT | 00/04 | \x04 | \004 | ^D | DC4 | 01/04 | \x14 | \024 | ^T | IND廃 | 08/04 | \x84 | \204 | CCH | 09/04 | \x94 | \224 | ||||||
ENQ | 00/05 | \x05 | \005 | ^E | NAK | 01/05 | \x15 | \025 | ^U | NEL | 08/05 | \x85 | \205 | MW | 09/05 | \x95 | \225 | ||||||
ACK | 00/06 | \x06 | \006 | ^F | SYN | 01/06 | \x16 | \026 | ^V | SSA | 08/06 | \x86 | \206 | SPA | 09/06 | \x96 | \226 | ||||||
BEL | 00/07 | \x07 | \007 | \a | ^G | ETB | 01/07 | \x17 | \027 | ^W | ESA | 08/07 | \x87 | \207 | EPA | 09/07 | \x97 | \227 | |||||
BS | 00/08 | \x08 | \010 | \b | ^H | CAN | 01/08 | \x18 | \030 | ^X | HTS | 08/08 | \x88 | \210 | SOS | 09/08 | \x98 | \230 | |||||
HT | 00/09 | \x09 | \011 | \t | ^I | EM | 01/09 | \x19 | \031 | ^Y | HTJ | 08/09 | \x89 | \211 | (SGCI) | 09/09 | \x99 | \231 | |||||
LF | 00/10 | \x0A | \012 | \n | ^J | SUB | 01/10 | \x1A | \032 | \z | ^Z | VTS | 08/10 | \x8A | \212 | SCI (DECID) | 09/10 | \x9A | \232 | ||||
VT | 00/11 | \x0B | \013 | \v | ^K | ESC | 01/11 | \x1B | \033 | \e | ^[ | PLD | 08/11 | \x8B | \213 | CSI | 09/11 | \x9B | \233 | ||||
FF | 00/12 | \x0C | \014 | \f | ^L | FS, IS4 | 01/12 | \x1C | \034 | ^\ | PLU | 08/12 | \x8C | \214 | ST | 09/12 | \x9C | \234 | |||||
CR | 00/13 | \x0D | \015 | \r | ^M | GS, IS3 | 01/13 | \x1D | \035 | ^] | RI | 08/13 | \x8D | \215 | OSC | 09/13 | \x9D | \235 | |||||
SO LS1 | 00/14 | \x0E | \016 | ^N | RS, IS2 | 01/14 | \x1E | \036 | ^^ | SS2 | 08/14 | \x8E | \216 | PM | 09/14 | \x9E | \236 | ||||||
SI LS0 | 00/15 | \x0F | \017 | ^O | US, IS1 | 01/15 | \x1F | \037 | ^_ | SS3 | 08/15 | \x8F | \217 | APC | 09/15 | \x9F | \237 | ||||||
GL | |||||||||||||||||||||||
SP | 02/00 | \x20 | \040 | ␣ | DEL | 07/15 | \x7F | \177 | ^? |
0x1F & 'A'
の様に計算されたバイトが送信される。
それを以て ^A の様に表記する。
同様にして端末のキーボードで Meta と一緒に文字を入力すると、
bit 7 (最上位ビット) が立てられるので、C1 の文字は例えば Control+Meta+A の様にして送信できる。
Meta に対応する一般的な caret notation はないのでここでは省略した。
[Note: 敢えて C1 に対する caret notation を割り当てるならば、
macOS のショートカットキーを表現する caret notation で
Alt/Option を表現するのに ⌥ が用いられるのに倣って、
Control+Meta+A を ⌥^A と表現しても良いかもしれない。]
[ECMA-48/8.3.88 NUL, ECMA-35/6.2.1 DEL] これらのバイトは単に無視され、(CCデータ要素に) 任意に挿入・削除しても情報の意味は変わらない。 media-fill または time-fill に用いることができる。
[ECMA-35/6.2.1] DEL は元々パンチカードで、誤りまたは不要の文字を塗り潰し無視させるために使われた。
[ECMA-48/F.8.1] DEL は厳密には制御機能といいがたいので ECMA-48 からは削除されたそうだ。 それでも別の規格 (ECMA-35) に記述が残っているので、まだ効力はあるものと思われる。
Note: 制御機能の符号化表現の途中に含まれていても無視されるべきと読める。
以下は実際の実装で CSI の途中に NUL, DEL を挟んで試した
(printf '\e\x00[34mhello\e[m\n\e\x7F[34mhello\e[m\n'
) 結果である。
エスケープシーケンスや制御シーケンス・制御列では、 ISO 2022 の図形文字に相当するバイト値を構成要素として含む。 これらのバイト値は文字コードに依らずに一定のバイト値で表現される。 しかし毎回数値で表現すると不便なので、 この文書ではそれらのバイト値を ASCII コードに従って便宜上図形文字に割り当てて表現する。 例えば、制御シーケンス内に含まれる "06/13" はどの文字コード・文字符号化状態であっても "06/13" というバイト値で表されるが、この文書では便宜上 ASCII コードで対応する文字 "m" を用いる。 しかし、実際の実装では文字コードに依らずに 06/13 として取り扱われるべきである。 以下にバイト値と図形文字の対応を載せる。
[ECMA-48/5.4.2(b)] また数字に対応するバイト値には ZERO, ONE, ..., NINE などの名前が与えられている。 [ECMA-35/4.2] 但し、バイトを構成するビットの状態を ZERO, ONE で表すこともある。
略号 | C/R 16進 8進 10進 |
略号 | C/R 16進 8進 10進 |
略号 | C/R 16進 8進 10進 |
略号 | C/R 16進 8進 10進 |
略号 | C/R 16進 8進 10進 |
略号 | C/R 16進 8進 10進 |
---|---|---|---|---|---|---|---|---|---|---|---|
SP | 02/00 \x20 \040 32 | 0 | 03/00 \x30 \060 48 | @ | 04/00 \x40 \100 64 |
P | 05/00 \x50 \120 80 | ` | 06/00 \x60 \140 96 | p | 07/00 \x70 \160 112 |
! | 02/01 \x21 \041 33 | 1 | 03/01 \x31 \061 49 | A | 04/01 \x41 \101 65 |
Q | 05/01 \x51 \121 81 | a | 06/01 \x61 \141 97 | q | 07/01 \x71 \161 113 |
" | 02/02 \x22 \042 34 | 2 | 03/02 \x32 \062 50 | B | 04/02 \x42 \102 66 |
R | 05/02 \x52 \122 82 | b | 06/02 \x62 \142 98 | r | 07/02 \x72 \162 114 |
# | 02/03 \x23 \043 35 | 3 | 03/03 \x33 \063 51 | C | 04/03 \x43 \103 67 |
S | 05/03 \x53 \123 83 | c | 06/03 \x63 \143 99 | s | 07/03 \x73 \163 115 |
$ | 02/04 \x24 \044 36 | 4 | 03/04 \x34 \064 52 | D | 04/04 \x44 \104 68 |
T | 05/04 \x54 \124 84 | d | 06/04 \x64 \144 100 | t | 07/04 \x74 \164 116 |
% | 02/05 \x25 \045 37 | 5 | 03/05 \x35 \065 53 | E | 04/05 \x45 \105 69 |
U | 05/05 \x55 \125 85 | e | 06/05 \x65 \145 101 | u | 07/05 \x75 \165 117 |
& | 02/06 \x26 \046 38 | 6 | 03/06 \x36 \066 54 | F | 04/06 \x46 \106 70 |
V | 05/06 \x56 \126 86 | f | 06/06 \x66 \146 102 | v | 07/06 \x76 \166 118 |
' | 02/07 \x27 \047 39 | 7 | 03/07 \x37 \067 55 | G | 04/07 \x47 \107 71 |
W | 05/07 \x57 \127 87 | g | 06/07 \x67 \147 103 | w | 07/07 \x77 \167 119 |
( | 02/08 \x28 \050 40 | 8 | 03/08 \x38 \070 56 | H | 04/08 \x48 \110 72 |
X | 05/08 \x58 \130 88 | h | 06/08 \x68 \150 104 | x | 07/08 \x78 \170 120 |
) | 02/09 \x29 \051 41 | 9 | 03/09 \x39 \071 57 | I | 04/09 \x49 \111 73 |
Y | 05/09 \x59 \131 89 | i | 06/09 \x69 \151 105 | y | 07/09 \x79 \171 121 |
* | 02/10 \x2A \052 42 | : | 03/10 \x3A \072 58 | J | 04/10 \x4A \112 74 |
Z | 05/10 \x5A \132 90 | j | 06/10 \x6A \152 106 | z | 07/10 \x7A \172 122 |
+ | 02/11 \x2B \053 43 | ; | 03/11 \x3B \073 59 | K | 04/11 \x4B \113 75 |
[ | 05/11 \x5B \133 91 | k | 06/11 \x6B \153 107 | { | 07/11 \x7B \173 123 |
, | 02/12 \x2C \054 44 | < | 03/12 \x3C \074 60 | L | 04/12 \x4C \114 76 |
\ | 05/12 \x5C \134 92 | l | 06/12 \x6C \154 108 | | | 07/12 \x7C \174 124 |
- | 02/13 \x2D \055 45 | = | 03/13 \x3D \075 61 | M | 04/13 \x4D \115 77 |
] | 05/13 \x5D \135 93 | m | 06/13 \x6D \155 109 | } | 07/13 \x7D \175 125 |
. | 02/14 \x2E \056 46 | > | 03/14 \x3E \076 62 | N | 04/14 \x4E \116 78 |
^ | 05/14 \x5E \136 94 | n | 06/14 \x6E \156 110 | ~ | 07/14 \x7E \176 126 |
/ | 02/15 \x2F \057 47 | ? | 03/15 \x3F \077 63 | O | 04/15 \x4F \117 79 |
_ | 05/15 \x5F \137 95 | o | 06/15 \x6F \157 111 | DEL | 07/15 \x7F \177 127 |
[ECMA-48/8.3.48, ECMA-35/6.2.2] 符号拡張の目的で使用される。後続の CC データ要素のバイトの意味を変える。 結果として ESC と後続のバイトでエスケープシーケンス (escape sequence) を成す。 エスケープシーケンスは符号識別機能 (code-identification function) およびある種の制御機能の符号化表現となる。
[ECMA-35/13.1] エスケープシーケンスは ESC で始まり終端バイト 03/00-07/15 で終わる。 間に 0 個以上の中間バイト I を含む。 その形式によって以下の様な型 (types) に分類される。
種類 | 型 | 符号化表現 | 名称 | 規格 |
---|---|---|---|---|
制御機能 | Fe | ESC Fe | 制御機能の補助集合 (Supplementary sets of coded control functions) | ECMA-35/6.4.3 |
Fs | ESC Fs | 標準単独制御機能 (Standardized single control functions) | ECMA-35/6.5.1 | |
3Ft | ESC # I* Fs | 登録単独制御機能 (Registered single control functions) | ECMA-35/6.5.2 | |
符号識別機能 | 0Ft | ESC SP Ft | ACS | ECMA-35/15.2 |
1Ft | ESC ! I* Ft | CZD | ECMA-35/14.2 | |
2Ft | ESC " I* Ft | C1D | ||
4Ft | ESC $ I* Ft | GnDMm | ECMA-35/13.2.3, 14.3 | |
5Ft | ESC % I? Ft | DOCS | ECMA-35/15.4 | |
6Ft | ESC & Ft | IRR | ECMA-35/14.5 | |
8Ft | ESC ( I* Ft | GZD4 | ECMA-35/14.3 | |
9Ft | ESC ) I* Ft | G1D4 | ||
10Ft | ESC * I* Ft | G2D4 | ||
11Ft | ESC + I* Ft | G3D4 | ||
13Ft | ESC - I* Ft | G1D6 | ||
14Ft | ESC . I* Ft | G2D6 | ||
15Ft | ESC / I* Ft | G3D6 | ||
私用の機能 | Fp | ESC Fp | 私用制御機能 (Private control functions) | ECMA-35/6.5.3 |
3Fp | ESC # I* Fp | |||
nFp | ESC I+ Fp | 私用の機能その他 (Reserved for Private use) | ECMA-35/13.2.2 | |
(予約) | 7Ft | ESC ' I* Ft | -R- (予約) | - |
12Ft | ESC , I* Ft |
以下に 2バイト目 (ESC の次のバイト) で分類した表を載せる。 例によって赤色で示したのが、続きのバイト列を持つシーケンスである。
nFt型: 符号識別機能 (第2バイト I) |
Fp型: 私用制御機能 (第2バイト Fp) |
Fe型: 補助集合 C1 (第2バイト Fe) |
Fs型: 標準単独制御機能 (第2バイト Fs) | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
略号 | 符号化表現 | 略号 | 符号化表現 | 略号 | 符号化表現 | 略号 | 符号化表現 | 略号 | 符号化表現 | 略号 | 符号化表現 |
ACS WYID違反 | ESC SP Ft ESC SP |
_CITSCAM | ESC 0 | (PAD) | ESC @ | DCS | ESC P | DMI | ESC ` | PCD | ESC p |
CZD WYSTR違反 | ESC ! I* Ft ESC ! p |
DECHTS DECGON _CITSACM | ESC 1 | (HOP) | ESC A | PU1 _SCOSFK (SCODFK) | ESC Q | INT | ESC a | -R- | ESC q |
C1D | ESC " I* Ft | DECCAHT DECGOFF _CITEACM | ESC 2 | BPH | ESC B | PU2 | ESC R | EMI | ESC b | -R- | ESC r |
"RSCF" | ESC # I* Ft | DECVTS | ESC 3 | NBH | ESC C | STS _RESTRTB | ESC S | RIS | ESC c | -R- | ESC s |
"GnDMm" | ESC $ I Ft | DECAVT | ESC 4 | IND廃 | ESC D | CCH | ESC T | CMD | ESC d | -R- | ESC t |
DOCS | ESC % I* Ft | DECXMIT WYXCH zTFC _RESTMITB _TVTSS | ESC 5 | NEL | ESC E | MW | ESC U | -R- | ESC e | -R- | ESC u |
IRR | ESC & I* Ft | DECBI zTI _RESTMITT | ESC 6 | SSA | ESC F | SPA | ESC V | -R- | ESC f | -R- | ESC v |
-R- | ESC ' | DECSC | ESC 7 | ESA | ESC G | EPA | ESC W | -R- | ESC g | -R- | ESC w |
GZD4 | ESC ( I* Ft | DECRC | ESC 8 | HTS | ESC H | SOS | ESC X | -R- | ESC h | -R- | ESC x |
G1D4 | ESC ) I* Ft | DECFI zCGR _RESBRK | ESC 9 | HTJ _SCOCBPL違反 | ESC I | (SGCI) | ESC Y | -R- | ESC i | -R- | ESC y |
G2D4 | ESC * I* Ft | zGUA | ESC : | VTS | ESC J | SCI DECID | ESC Z | -R- | ESC j | -R- | ESC z |
G3D4 | ESC + I* Ft | --- | ESC ; | PLD | ESC K | CSI | ESC [ | _SCRAKA | ESC k | -R- | ESC { |
-R- WYDELAY違反 | ESC , | V5EX | ESC < | PLU | ESC L | ST | ESC \ | _SCOLMA | ESC l | LS3R | ESC | |
G1D6 | ESC - I* Ft | DECKPAM | ESC = | RI | ESC M | OSC | ESC ] | _SCOUSR | ESC m | LS2R | ESC } |
G2D6 | ESC . I* Ft | DECKPNM | ESC > | SS2 | ESC N | PM | ESC ^ | LS2 | ESC n | LS1R | ESC ~ |
G3D6 | ESC / I* Ft | --- | ESC ? | SS3 | ESC O | APC | ESC _ | LS3 | ESC o | --- | - |
略号 | 符号化表現 |
---|---|
hpLowerLeft | ESC F |
hpMemoryLock | ESC l |
hpMemoryUnlock | ESC m |
[ECMA-35/6.5.2] ISO-IR (ISO International Register of Coded Character Sets) に後から登録される制御機能。
Note: 現在 (2016-10-13) この型の制御機能は一つも登録されていない様だ。
略号 | 符号化表現 | 説明 |
---|---|---|
GZDM4(@) | ESC $ @ | 旧JIS (1978) を G0 に指示 |
GZDM4(A) | ESC $ A | GB 2312 を G0 に指示 |
GZDM4(B) | ESC $ B | 新JIS (1983) を G0 に指示 |
GZDM4(SP ...) | ESC $ SP I* F | DRCS を G0 に指示 [T.61/E.3.1.2] |
GZDM4 | ESC $ ( I* Ft | 94n 図形文字集合を G0 に指示 |
G1DM4 | ESC $ ) I* Ft | 94n 図形文字集合を G1 に指示 |
G2DM4 | ESC $ * I* Ft | 94n 図形文字集合を G2 に指示 |
G3DM4 | ESC $ + I* Ft | 94n 図形文字集合を G3 に指示 |
-R- | ESC $ , I* Ft | (予約) |
G1DM6 | ESC $ - I* Ft | 96n 図形文字集合を G1 に指示 |
G2DM6 | ESC $ . I* Ft | 96n 図形文字集合を G2 に指示 |
G3DM6 | ESC $ / I* Ft | 96n 図形文字集合を G3 に指示 |
1Fp, 2Fp, 4Fp, 6Fp, 7Fp, 10-15Fp の使用例は現在見つかっていない。 0Fp型は ACS の私用パラメータで、 5Fp型は DOCS の私用パラメータで、 8Fp, 9Fp型は GZD4, G1D4 の私用パラメータとして使われている。
3Fp型 私用制御機能 | |
---|---|
符号化表現 | 略号 |
ESC # 0 | _CITSAAM |
ESC # 1 | _CITEAM, _RESLF80 |
ESC # 2 | _CITOCLA, _RESLF132, _TVDHL |
ESC # 3 | DECDHL |
ESC # 4 | DECDHL |
ESC # 5 | DECSWL |
ESC # 6 | DECDWL |
ESC # 7 | DECHCP |
ESC # 8 | DECALN |
ESC # 9 | DECFPP, _CITFSC |
ESC # : | WYDHL |
ESC # ; | WYDHL |
ESC # < | _CITSOLA |
ESC # = | _CITROLA |
ESC # > | _CITKCLK |
ESC # ? | --- |
ESC # ! 0 | _TEKRSM |
ESC # I 0 | _X11CT0*ae |
ESC # I 1 | _X11CT1*ae |
先頭 | 符号化表現 | 名前 |
---|---|---|
CSI | CSI P* I* Ft | 制御シーケンス (control sequence) |
[ECMA-48/8.3.16] CSI (constrol sequence introducer) で始まるシーケンスを特に CSI シーケンス (CSI sequence) または (本来の) 制御シーケンス (constrol sequence) と呼ぶ。 プログラムに端末の特別な操作・状態・情報を送ったり (入力)、 プログラムから端末の状態を制御する命令を送ったり (出力) するのに用いられる。
CSI は 01/11 05/11 (ESC [)、または 09/11 で表現される。 [ECMA-48/5.4] I* Ft の組合せによって、その制御シーケンスが特にどの様な機能を持った物かを指定する。 それぞれの組合せに対応する制御シーケンスの機能は、端末に依存する所が大きい。 特に Ft = 07/00 - 07/14 のシーケンスは私用・実験用のシーケンスとして使って良い。 P は 03/00 - 03/15 の範囲の文字を表す。 P* の部分は、 引数列 (parameter bytes, parameter string) と呼ばれ、 I* Ft で指定された機能に対する引数として働く。 引数列が1文字以上あるとき、 [ECMA-48/5.4.1a] 一番初めの文字が 03/12 - 03/15 ("<", "=", ">", "?") のものは 私用・実験用の引数列であり形式は規定されない。 [ECMA-48/5.4.1a] 一番初めの文字が 03/12 - 03/11 ("0" - "9", ":", ";") の場合は、 [ECMA-48/5.4.2] 引数列は先ず 03/11 (";") で複数の引数に分割され、 更に引数は 03/10 (":") で複数の十進整数に分割される。 整数を省略した場合 (つまり空文字列の場合) は制御機能ごとに決まっている既定値が使用される。 整数の先頭についている余分な 03/00 ("0") の連続は無視される。 もし制御機能が一定の数の引数を要求するときに最後の引数を省略した場合、 その制御機能の既定値が使用される。
CSI は 7 bit 表現 01/11 05/11 (ESC [) と 8 bit 表現 09/11 を持つが、 8 bit のデータを許容しない処理系などのために 09/11 が用いられる事は少なく、 専ら 01/11 05/11 が用いられることの方が多い。 また、UTF-8 を初めとして 09/11 を通常の文字を構成するバイトとして使う文字コードがあり、 その様な文字コードの処理系における混乱を避けるために 09/11 の使用を控えているという面もあると思われる。 今や 09/11 は既定では CSI として解釈しない端末も多い。 この事情は他の全ての C1 制御文字で同様である。
[ECMA-48/5.4]
以降では説明の為に以下の記号を用いる
この文書ではエスケープシーケンスに倣って、制御シーケンスについても I* Ft の部分により型を定めることにする。
標準の制御機能 (Ft型 CSI ... Ft 及び 0Ft型 CSI ... SP Ft) を表にする。
Ft型: 標準端末制御機能 CSI ... Ft |
0Ft型: 標準端末制御機能 CSI ... SP Ft |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Ft | 略号 | Ft | 略号 | Ft | 略号 | Ft | 略号 | Ft | 略号 | Ft | 略号 |
@ | ICH | P | DCH | ` | HPA | @ | SL | P | PPA | ` | TATE |
A | CUU | Q | SEE | a | HPR | A | SR | Q | PPR | a | TALE |
B | CUD | R | CPR, _SCODL | b | REP, _SCOHPR*km | B | GSM | R | PPB | b | TAC |
C | CUF | S | SU | c | DA, _SNIRIS*km | C | GSS | S | SPD | c | TCC |
D | CUB | T | SD, XTHIMOUSE | d | VPA | D | FNT | T | DTA | d | TSR |
E | CNL | U | NP, _SCORIS | e | VPR | E | TSS | U | SLH | e | SCO |
F | CPL | V | PP, _SCOER | f | HVP | F | JFY | V | SLL | f | SRCS |
G | CHA | W | CTC | g | TBC, _SCODGC | G | SPL | W | FNK | g | SCS |
H | CUP | X | ECH | h | SM | H | QUAD | X | SPQR | h | SLS |
I | CHT | Y | CVT | i | MC, _TVMC | I | SSU | Y | SEF | i | SPH |
J | ED | Z | CBT | j | HPB | J | PFS | Z | PEC | j | SPL |
K | EL | [ | SRS | k | VPB, _SCOEDK | K | SHS | [ | SSW | k | SCP |
L | IL | \ | PTX | l | RM | L | SVS | \ | SACS | l | --- |
M | DL | ] | SDS, _LNXCLR*km | m | SGR | M | IGS | ] | SAPV | m | --- |
N | EF | ^ | SIMD | n | DSR, _SCOTCP | N | HTSA廃 | ^ | STAB | n | --- |
O | EA | _ | --- | o | DAQ, _SCOTMP | O | IDCS | _ | GCC | o | --- |
xterm が標準領域に幾つか制御機能を定義している。
I Ft | 略号 |
---|---|
CSI # P | XTPUSHCOLORS |
CSI # Q | XTPOPCOLORS |
CSI # R | XTREPORTCOLORS |
以下は Ft型の私用制御機能 (CSI ... Ft)。重複が著しいが元々避ける意図はなかったのだろう。
Ft型: 私用制御機能 | |
---|---|
Ft | 略号 |
p | DECSSL, SUNBOW, WYFDAT, _AIXKSI, _DGBAR, _DOSSKR, _ZDSPXMT, RLBFAT, _SNIMODEP*km, zSDP, BEESSKM, _RESDCWTB |
q | DECLL (HPLF), SUNWOB, _AIXPFK, DGCA, _DOSEKR, _ZDSPX25, _SNIMODEQ*km, _RESPKI, _TVDPM |
r | DECSTBM, DECPCTERM, _SCOCSR, SUNSCRL, _ZDSPMBR |
s | DECSLRM, SCOSC, WYSC, _DGRRC, SUNRESET, _SNIMODES*km, zPSH, BEEAP, _TVCUP |
t | XTWINOPS (_SUNWINM), DECSLPP, WYNNAT, DGROSC, _CITSTIME, _SNIMODET*km, zPOP, BEESAP, _RESTDPF, _TVCCR |
u | DECSHTS, SCORC, WYRC, _DGSPOS, _CITSSR, _SNIMODEU*km, zSTP, BEESKL, _RESLPDPF, _TVCDAQ |
v | DECSVTS, RLSCD (_CITSCUR), _DGSPARM, _SNIMODEV*km, zSRC, BEEMAP, _TVSVAL |
w | DECSHORP, _AIXVTR, DGMARG, _CITSCURB, _SNIMODEW*km, zSPF, _WYCLR*km, BEEBEL, _TVVSTR |
x | DECREQTPARM, DECREPTPARM, _AIXVTD, DGRTC, C25SGR, _TVTPORT |
y | DECTST, _AIXVTL, _SNIMODEY*km, _VIPRQ*km, _TVRIS |
z | DECVERP, WYSCRATE, _SCOSSW, C25VTSW, _CITPCTL, _ZDSPRAM, _SNISLRM*km, zSTE, BEEBDS, _RESETDPF |
{ | BEECM, _RESSSTIC |
| | DECTTC, BEESND, _RESSETIC, _TVEFK |
} | DECPRO, _TVSET |
~ | DECFNK, _CITTST, _RESICTB |
nFt型の私用制御機能 (CSI ... I Ft) を以下にまとめる。
nFt型: 私用制御機能 (0Ft..7Ft) | ||||||||
---|---|---|---|---|---|---|---|---|
0Ft SP | 1Ft ! | 2Ft " | 3Ft # | 4Ft $ | 5Ft % | 6Ft & | 7Ft ' | |
p | DECSSCLS, _RESSPAGE _TVOTLG |
DECSTR | DECSCL | XTPUSHSGR | DECRQM | --- | --- | --- |
q | DECSCUSR, _RESSCC _TVCAPVA |
PrintPartialImageVK100 | DECSCA | XTPOPSGR | DECSDDT | --- | DECSNC | DECSBCA |
r | DECSKCV, _RESSRBCRM | --- | --- | --- | DECCARA | --- | --- | --- |
s | DECNS, _RESSSBL | DECFIL | DECPWA | --- | DECSPRTT | --- | --- | DECTLTC |
t | DECSWBV, _RESDMS | --- | DECSRFR | --- | DECRARA | --- | --- | --- |
u | DECSMBV, _RESUSCF | --- | DECSTRL | --- | DECRQTSR | --- | DECRQUPSS | --- |
v | DECSLCK, _RESLSCF | DECASFC | DECRQDE | --- | DECCRA | --- | --- | --- |
w | DECSITF, _RESESM | DECUND | DECRPDE | --- | DECRQPSR | --- | DECLRP | DECEFR |
x | DECSDPM, _RESCDFM | DECPTS | DECFCR | --- | DECFRA | --- | DECES | --- |
y | _RESRDC | DECSS | --- | XTCHECKSUM | DECRPM | --- | --- | --- |
z | DECVPFS, _RESDREND | --- | DECDEN | --- | DECERA | --- | --- | DECELR |
{ | DECSSS | --- | DECRFS*ae | XTPUSHSGR | DECSERA | --- | --- | DECSLE |
| | DECRVEC | DECVEC | --- | XTREPORTSGR | DECSCPP | --- | --- | DECRQLP |
} | DECKBD | DECFIN | --- | XTPOPSGR | DECSASD | --- | --- | DECIC |
~ | DECTME | --- | --- | --- | DECSSDT | --- | --- | DECDC |
nFt型: 私用制御機能 (8Ft..15Ft) | ||||||||
8Ft ( | 9Ft ) | 10Ft * | 11Ft + | 12Ft , | 13Ft - | 14Ft . | 15Ft / | |
p | --- | DECSDPT | DECSPPCS | DECSR | DECLTOD | DECARR | --- | --- |
q | --- | --- | DECSRC | DECELF | DECTID | DECCRTST | --- | --- |
r | --- | --- | DECSCS | DECSMKR | --- | DECSEST | --- | --- |
s | --- | --- | DECSFC | --- | --- | --- | --- | --- |
t | --- | --- | --- | --- | --- | --- | --- | --- |
u | --- | --- | DECSCP | --- | DECRQKT | --- | --- | --- |
v | --- | --- | --- | DECMM | DECRPKT | --- | --- | --- |
w | --- | --- | --- | DECSPP | DECRQKD | --- | --- | --- |
x | --- | --- | DECSACE | DECRQPKFM | DECSPMA | --- | --- | --- |
y | --- | --- | DECRQCRA | DECPKFMR | DECUS | --- | --- | _SGICMD |
z | --- | --- | DECINVM | DECPKA | DECDLDA | --- | --- | --- |
{ | --- | DECSTGLT | DECMSR DSR-MSR |
--- | DECSZS | --- | --- | --- |
| | --- | --- | DECSNLS | --- | DECAC | --- | --- | --- |
} | --- | --- | DECLFKC | --- | DECATC | --- | --- | --- |
~ | --- | --- | --- | --- | DECPS | --- | --- | --- |
パラメータの先頭に <, =, >, ? を含む私用制御機能。 応答では WYFKEX が CSI < F (F = a-o, A-O) を専有している。
Ft | < | = | > | ? |
---|---|---|---|---|
A | - | _SCOSBC (C25BORD) _BA80DKM*km |
- | - |
B | - | _SCOSBP (C25BLPD) _BA80CUR*km |
- | - |
C | - | _SCOSCS (C25GCS) _BA80CVM*km |
- | - |
D | - | _SCOSBI | - | - |
E | - | _SCOSBB _BA80WSR*km |
- | _AIXXES |
F | - | _SCOSNF (C25DFG) _BA80FVW*km |
- | _AIXXRS |
G | - | _SCOSNB (C25DBG) | - | - |
H | - | _SCOSRF | - | _AIXXHS |
I | - | _SCOSRB _BA80INP*km |
- | - |
J | - | _SCOSGF | _CITERECT+ | DECSED+ _RESED+ _TVED+ |
K | - | _SCOSGB _BA80BFL*km |
_CITECOLS+ | DECSEL+ _TVEL+ |
L | - | _SCOSEF | - | - |
M | - | _SCORAS _BA80GSL*km |
- | - |
O | - | _BA80OVW*km | - | - |
Ft | < | = | > | ? |
S | - | C25LCT _BA80RSL*km |
- | XTSMGRAPHICS (XTCOLREG*ml) _AIXXSS |
T | - | C25MODE | XTRMTITLE (XTRMTT*ml) | _AIXXGS |
W | - | - | - | DECST8C+ |
Z | - | _ANSIRIS*km | - | - |
Ft | < | = | > | ? |
c | - | DA3+ _SCOHSC |
DA2+ | DEC EB DS+*ae RequestFontConfiguration+LA100 RequestDPSConfiguration+*ae,LA _LNXCUR*km |
g | - | _SCOPRC _ANSIDGC*km |
_CITST8C+ | _TVTBC |
h | _DGSM+ | _SGISM+ _DOSSM+ |
_DOSSM+, _CITSM+ _PC98SM+, _ZDSSM+ _SUNSM+, _zSM+ |
DECSET+ |
i | - | - | - | DECMC+ |
j | - | - | - | _VCKDEF |
k | - | - | _SUNRQM | _VCSLA |
l | _DGRM+ | _SCOCHC _SGIRM+ _DOSRM+ |
_DOSRM+, _CITRM+ _PC98RM+, _ZDSRM+ _SUNRM+, _zRM+ |
DECRST+ |
m | _TEKSGRFC | _SCOSSM _TEKSGRBC |
XTMODKEYS (XTMDKEY*ml) _TEKSGREC |
_DECSGR*ae _VCTDP |
n | - | - | _XTUNMODKEYS (XTMDKEYD*ml) | DECDSR+ |
o | - | - | _zDAQ+ | _RESDAQ+ |
Ft | < | = | > | ? |
p | - | - | XTSMPOINTER (XTHDPT*ml) | - |
q | - | - | XTVERSION (TerminalIdentificationTWG) | - |
r | TTIMERS | _SCORSM | - | XTRESTORE (XTREST*ml, _AIXRM) |
s | TTIMESV | - | HPHD, HPHU | XTSAVE (_AIXSM) |
t | TTIMEST | - | XTSMTITLE (XTSMTT*ml) | _TVCCRD |
u | _KittyKeyboardPop | - | _KittyKeyboardPush | _KittyKeyboardQuery |
w | - | - | - | _RESDWORD |
z | - | _SCOCAT | - | - |
} | - | - | - | _VCPSGR |
~ | _KERMMACR*km | - | - | - |
I Ft | < | = | > | ? |
SP D | - | - | - | ReportFontConfigurationLA100 |
SP J | - | - | - | PFS+LN03 |
$ R | - | _BA80RVW*km | - | - |
$ p | - | - | - | DECRQM+ |
$ y | - | - | - | DECRPM+ |
! i | RLIMGCP | - | - | - |
! q | RLCURCOL | - | - | - |
その他の私用制御機能
符号化表現 | 略号 |
---|---|
CSI $ R | _SCODL*km |
CSI = ? I | _AESSF*ae,*km |
CSI ? = J | _AESSN*ae,*km |
CSI = ? l | _AEILU*ae,*km |
CSI ? = m | _AEDLD*ae,*km |
以下は ECMA-48 の規則に抵触している物。
符号化表現 | 略号 |
---|---|
CSI ! | TeleGraphix Determining RIP support*ae |
CSI > Cq ... Cq | WYTLOAD |
CSI + | _DOSXON |
CSI - | _DOSXOFF |
CSI Pn ? p | _RESSLPLL |
CSI Pn ? q | _RESSLLLC |
CSI Pn ; Pn ; Pn ? r | _RESRTIME |
CSI Pn ; Pn ; Pn ? s | _RESSTIME |
CSI Pn ; Pn ? t | _RESSTT |
CSI Pn ? u | _RESRLDL |
CSI Pn ? v | _RESRLDW |
CSI Pn ; Pn ? y | _RESSEOLRC |
CSI Pn ; Pn ? { | _RESSGFIC |
CSI Pn ; Pn ? | | _RESSELTC |
CSI Pn ; Pn ? } | _RESSBAUD |
CSI Pn ; Pn ? ~ | _RESSPRTY |
ESC & k 1 < | _HPANSI |
ESC & k 0 \ | _HPHP |
略号 | 符号化表現 |
---|---|
DECSED | CSI ? Ps J |
DECSEL | CSI ? Ps K |
DECMC (MC) | CSI ? Pm i |
DECDSR (DSR) | CSI ? Ps n |
TTIMEST | CSI < Ps t |
TTIMESV | CSI < Ps s |
TTIMERS | CSI < Ps r |
RLIMGCP | CSI < Ps ! i |
RLCURCOL | CSI < Ps ! q |
# 各端末の対応制御機能 2020-03-01 Poderosa4 2022-12-11 Windows Terminal (src/terminal/parser/OutputStateMachineEngine.hpp) 2022-12-11 mintty (src/termout.c 2022-12-11 RLogin (RLogin/TextRamProc.cpp) 2022-12-11 dnkl/foot ccfb953b (csi.ccsi_distach
) 2022-12-11 tmux (input.cinput_csi_table
) 2022-12-11 screen4+1ec8838 (ansi.c), screen 4.99+c3e84d2 (ansi.c) 2024-06-17 xterm#392 738a2d7 (VTPrsTbl.ccsi_table
, etc.) # Ft型 CSI シーケンス (ANSI/Private) 4=(xterm によると ECMA-48:1991(5th)のtypo(2003年修正)らしい) | |@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno|pqrstuvwxyz{|}~| |----------|------------------------------------------------|---------------| | ECMA-48 |************************************************| | |----------|------------------------------------------------|---------------| | RLogin |***************** ******** ****************|******* ** | | screen |************** * ** * * E ** **** *** |* **** * | | tmux |********* **** * ** * * * *** *** *** | **** | | contra |********* **** * ** * * ** ** **** * ***** | ** * | | mintty |************** * ** * * ********** *** | ***** * | | xterm |************** * ** * * E ********** *** | ***** * | | Poderosa |************** * **X * * * ** *** *** | * | | wt |************** * ** * * ******** ** | *!!* * | !=解析されるが未実装 | foot |************** * ** * * ********* *** | **** | # 0Ft型 CSI シーケンス (ANSI/Private) tmux=screen Poderosa=none | |◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦◦|◦◦◦◦◦| ◦=SP | |@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk|pqtu~| |---------|--------------------------------------------|-----| | ECMA-48 |********************************************| | |---------|--------------------------------------------|-----| | RLogin |** * *** | * *| | screen | | * | | contra |** * ** * ***| * | | mintty |** * * *| *** | | xterm |** | *** | | wt | | * | | foot | | * | # nFt型標準 CSI シーケンス (標準違反) Note: # で始まるものは xterm, + で始まるものはkitty による導入 | |###|+| | |PQR|T| |----------|---|-| | xterm |***| | | RLogin |***| | | mintty |***|*| # nFt型私用 CSI シーケンス screen=none tmux=none | |!!!!!!!!|""""""""|#######|$$$$$$$$$$$$$$$|%|&&&|'''''''|))|***********|+++++++|,,,,,,,,,,,|---| | |psvwxy|}|pqstuvwz|pqty{|}|pqrstuvwxyz{|}~|q|qux|qwz{|}~|p{|pqrsuxyz{|}|pqrvwxz|pqvwxyz{|}~|pqr| |----------|--------|--------|-------|---------------|-|---|-------|--|-----------|-------|-----------|---| | RLogin |* |** * |** ***|* * ***** *****| | * | ******| *| *** |* * | * ***| | | contra | |** | |* * | | | | | | | | | | mintty |* |** |*** * *|* * *** *****|*|* | ******| | ** * | | *|* | | xterm |* |** * |** ****|* * * *** *****| | | ******| | ** * | | * ** | | | Poderosa |* | | | | | | | | | | | | | wt |* |** | * *|* ** * * *** | | | | | * * | | * *| | | foot |* | | | * | | | | | | | | | # 私用パラメータ CSI シーケンス | |<<<<<<|==========|>>>>>>>>>>|??????????????| | | !!| | | $| | |rstuiq|ABCFGHIScu|STcmnpqstu|JKSWchilmnrsup| |----------|------|----------|----------|--------------| | RLogin |*** **| ** ** | ****** * |**** *** *** *| | screen | | | * | * * | | tmux | | | *** * | * * | | contra | | | *** | * * *| | mintty |*** | | ****** |** ******** | | xterm | | * | ******** |** * *** *** *| | Poderosa | | | * | * * ** | | foot | * | **| *** * *| * * * ****| | wt | | * | * |** * * * *|
開始 | 種類 | 符号化表現 | 名前 |
---|---|---|---|
OSC | コマンド列 | OSC Ps ; GL'* ST OSC Ps ; GL'* BEL OSC Ft GL'* ST |
Operating System Command |
DCS | コマンド列 | DCS Pm I* Ft GL'* ST | Device Control String |
SOS | キャラクタ列 | SOS U* ST | Start of String |
PM | コマンド列 | PM GL'* ST | Privacy Message |
APC | コマンド列 | APC GL'* ST | Application Program Command |
_SCRAKA | キャラクタ列? | ESC k U* ST | Title Definition String (GNU Screen) |
_SNIPU1*km | コマンド列 | PU1 GL'* ST | 97801-5XX PU1 sequence |
_SNIPU2*km | コマンド列 | PU2 Ft GL'* ST | 97801-5XX PU2 sequence |
_BEETCMK5 | コマンド列 | SS3 P ... ST | Beehive PF key report |
_BEEAPC | コマンド列 | ESC APC Ft ... ESC ST | Beehive ESC APC sequence |
[ECMA-48/5.6] 或る文字で始まって ST で終わるシーケンスを総称して制御列 (control strings)と呼ぶ。 その形式によって指令列と文字列に分類される。
コマンド列 (command strings, 指令列) は ST (01/11 05/12 または 09/12) で終わり、 間には 00/08-00/13 (BS, HT, LF, VT, FF, CR), 02/00-07/14 (7 bit 図形文字) の文字を任意の数含む。 特に DCS, OSC, PM, APC で始まるコマンド列が規格で定められている。
キャラクタ列 (character strings, 文字列) は ST で終わり、 間には SOS および ST を表すバイト列以外の任意のバイト列を含む。 特に SOS で始まるシーケンスが規格で定められている。
[ECMA-48/8.3.143] APC, DCS, OSC, PM, SOS で始まった制御列の終端として用いられる。
[ECMA-48/8.3.89] OSC (operating system command) で始まるシーケンスは、 OSC シーケンス (OSC sequence) または OS コマンド (operating system command) と呼ばれる。 用途は使用している OS に依存して定められる。 主に端末のウィンドウの制御 (出力)・状態報告 (入力) などに用いられる。
OSC シーケンスはコマンド列の形式に従う。 OSC は 01/11 05/13 (ESC ]) または 09/13 で表現される。 ECMA-48 ではそれ以上は定められていないが、実際の実装では一番最初に数字の引数を取ることが多い。 一方で、 XTerm 等に於いて Ft を最初に取る場合も確認できる。 どうやら、XTerm ctlseqs.pdf 及び [PDF] X Window System User's Guide (OPEN LOOK Edition) によると、 OSC Ps ; ... BEL の形式は、 最初に xterm が OSC Ps ND ... NP (ND は最初の非数字、NP は最初の non-printing character) として導入した様である。 それを CDE dtterm が OSC Ps ; ... BEL の形で継承した。
本来 ST で終端するはずだが BEL で終端することもある。 aixterm の OSC(0-2) は ST では終端せず、 中に DCS シーケンスを埋め込む事ができる。
Ft | 略号 |
---|---|
l | _SUNSetWindowTitle _CDEReportWindowTitle (_SUNWINM(21) への応答) |
I | _SUNSetIconFile |
L | _SUNSetIconLabel _CDEReportIconLabel (_SUNWINM(20) への応答) |
P | _BEETCMK2 |
Ps | 略号 |
0 | _XtermChangeIconNameAndWindowTitle |
1 | _XtermChangeIconName |
2 | _XtermChangeWindowTitle |
3 | _CDESetCurrentWorkingDirectory XTSetXProperty |
4 | ChangeColor |
5 | ChangeSpecialColor |
6 | EnableSpecialColor (VTE) CurrentFile*tg |
7 | (iTerm2) SetWorkingDirectory |
8 | (iTerm2, VTE) Hyperlink |
9 | (iTerm2, espterm) UserNotification |
10 | ChangeVT100TextForegroundColor |
11 | ChangeVT100TextBackgroundColor |
12 | ChangeTextCursorColor |
13 | ChangeMouseForegroundColor |
14 | ChangeMouseBackgroundColor |
15 | ChangeTektronixForegroundColor |
16 | ChangeTektronixBackgroundColor |
17 | ChangeHighlightBackgroundColor |
18 | ChangeTektronixCursorColor |
19 | ChangeHighlightForegroundColor |
27 | (espterm) SetBackgroundImage,SetButtonNumber*tg |
28 | (espterm) SetButtonLabel*tg |
29 | (espterm) SetButtonMessage*tg |
30 | (konsole) SetSessionName*tg |
31 | (konsole comment) OpenUrl*tg |
32 | (konsole) SetSessionIcon*tg |
39 | (rxvt) RestoreFG (ChangeVT100TextForegroundColor と同じ) |
46 | _XtermChangeLogFile |
49 | (rxvt) RestoreBG (ChangeVT100TextBackgroundColor と同じ) |
50 | SetFont (iTerm2Extension)deprecated (konsole) ProfileChange |
51 | (Reserved for Emacs shell) |
52 | ManipulateSelectionData |
55 | (rxvt) DumpScreen |
104 | ResetColor |
105 | ResetSpecialColor |
106 | EnableSpecialColorNumber |
110 | ResetVT100TextForegroundColor. |
111 | ResetVT100TextBackgroundColor. |
112 | ResetTextCursorColor. |
113 | ResetMouseForegroundColor. |
114 | ResetMouseBackgroundColor. |
115 | ResetTektronixForegroundColor. |
116 | ResetTektronixBackgroundColor. |
117 | ResetHighlightColor. |
118 | ResetTektronixCursorColor. |
119 | ResetHighlightForegroundColor. |
133 | (FinalTerm) Extension |
701 | (urxvt) Override Terminal Locale*tg |
702 | (urxvt) Report Terminal Version*tg |
704 | (urxvt) Set Replacement Color For Italic Text*tg |
706 | (urxvt) Set Replacement Color For Bold Text*tg |
707 | (urxvt) Set Replacement Color For Underlined Text*tg |
708 | (urxvt) Set Terminal Border Color*tg |
710 | (urxvt) Set Base Font*tg |
711 | (urxvt) Set Bold Font*tg |
712 | (urxvt) Set Italic Font*tg |
713 | (urxvt) Set Bold Italic Font*tg |
720 | (urxvt) MoveToScrollBackTop*tg |
721 | (urxvt) MoveToCurrentActiveBuffer*tg |
777 | (urxvt) *tg |
800 | (RLogin) OriginalKanjiCodeSet |
801 | (RLogin) SpeakString |
1337 | (iTerm2) Extension |
8900 | GWREPTyaft |
[ECMA-48/8.3.27] DCS で始まるシーケンスは DCS シーケンス (DCS sequence) または Device Control String と呼ばれる。 受信装置へのコマンド、送信装置からの返答に用いることを意図している。 規格では IDCS の返答に用いる形式が定められている。 その他の形式は受信装置・送信装置の間で取り決めて利用する。 DCS シーケンスはコマンド列の形式に従う。 DCS は 01/11 05/00 (ESC P) または 09/00 で表現される。
実際の実装では殆どの場合 CSI シーケンスと同様の形式の接頭辞とそれに続くデータからなる。
略号 | 符号化表現 |
---|---|
_DGDC _RESRAMT | DCS A ... ST |
_DGSPAT _BEERQCPR | DCS C ... ST |
DGSW | DCS D ... ST |
_BEERQTCME | DCS H ... ST |
_BEERPTCM _RESRIDT | DCS I ... ST |
_RESRMKKOT | DCS K ... ST |
_RESRMKLOT | DCS L ... ST |
_RESRDTSLM | DCS M ... ST |
_BEERQTCMR | DCS N ... ST |
_BEESOSL | DCS O ... ST |
_BEELDTCMR _BEETCMK4 | DCS P ... ST |
_BEERPTSTAT _RESTRDSR | DCS R ... ST |
_BEERQTSTAT _RESRMKTT | DCS T ... ST |
_BEESSL | DCS U ... ST |
_BEELDTCME | DCS W ... ST |
_zPSTE | DCS ` ... ST |
decREGIS _zPPOS | DCS p ... ST |
decSIXEL HardCopyDataVK100 | DCS q ... ST |
decVKSET DECLBAN | DCS r ... ST |
decVKPK | DCS Ps s ... ST |
decVT105G | DCS t ... ST |
DECLANS | DCS Pn v ... ST |
DECLFF | DCS y ... ST |
DECDLD | DCS { ... ST |
DECUDK | DCS | ... ST |
DECATFF | DCS } ... ST |
DECDTFF | DCS ~ ... ST |
decGIDIS | DCS ! q ... ST |
DECAUPSS | DCS ! u ... ST |
DECDMAC | DCS ! z ... ST |
DECSTUI | DCS ! { ... ST |
DECRPTUI | DCS ! | ... ST |
DECCKSR | DCS ! ~ ... ST |
RLMML | DCS Pn # m ... ST |
DECPFK | DCS " x ... ST |
DECPAC | DCS " y ... ST |
DECCKD | DCS " z ... ST |
DECFSR | DCS " { ... ST |
DECRPFK | DCS " } ... ST |
DECRPAK | DCS " ~ ... ST |
DECRSTS | DCS $ p ... ST |
DECRQSS | DCS $ q ... ST |
DECRPSS | DCS $ r ... ST |
DECTSR DECCTR | DCS $ s ... ST |
DECRSPS | DCS $ t ... ST |
DECCIR DECTABSR | DCS $ u ... ST |
DECLBD | DCS $ w ... ST |
XTGETXRES | DCS + Q ... ST |
XTSETTCAP | DCS + p ... ST |
XTGETTCAP | DCS + q ... ST |
_SGIDCS | DCS . y ... ST |
略号 | 符号化表現 |
_RESETPF | DCS Ps ... ST |
[ECMA-48/8.3.128] SOS で始まるシーケンスは SOS シーケンス (SOS sequence) と呼ばれる。 解釈はアプリケーションに依存する。
SOS シーケンスはキャラクタ列の形式に従う。 SOS は 01/11 05/08 (ESC X) または 09/08 で表現される。
[ECMA-48/8.3.94] PM で始まるシーケンスは PM シーケンス (PM sequence) または 私用メッセージ (privacy message) と呼ばれる。 用途は私的な取り決めに従う。 PM シーケンスはコマンド列の形式に従う。 PM は 01/11 05/14 (ESC ^) または 09/14 で表現される。
[jexer/ECMA48.java (pmPut)] jexer は私用目的で PM h i d e M o u s e P o i n t e r ST PM s h o w M o u s e P o i n t e r ST というシーケンスを用いている。
[DEC STD 070] PM I* Ft ... ST の形式が定められているが DEC は使っていない。
略号 | 符号化表現 |
---|---|
_BEETCMK3 | PM P ... ST |
[ECMA-48/8.3.2] APC で始まるシーケンスは APC シーケンス (APC sequence) または アプリケーションプログラムコマンド (application program command) と呼ばれる。 用途は関連するアプリケーションプログラムの間で取り決める。 APC シーケンスはコマンド列の形式に従う。 APC は 01/11 05/15 (ESC _) または 09/15 で表現される。
[DEC STD 070] APC I* Ft ... ST の形式が定められているが DEC は使っていない。
略号 | 符号化表現 |
---|---|
_BEELDBOOT | APC B ... ST |
KittyImage | APC G ... ST |
_BEETCMK1 | APC P ... ST |
GNU screen でバッファのタイトルを設定するのに使われるキャラクタ列。 ST で終端する (BEL では終端しない)。
[Kermit ckoco3.c (dopu2)] SNI 97801-5xx では以下のシーケンスを認識したらしい。詳細は不明。
符号化表現 | 説明 |
---|---|
PU2 A ... ST | Load key assignment table |
PU2 B ... ST | Load one or more character generator addresses with a new symbol |
PU2 C ... ST | Query load process for string key table / Load string key table |
PU2 D ... ST | Load compose key table / Delete compose key table |
PU2 E ... ST | Load dead key table |
PU2 F ... ST | Load key assignment table |
Beehive ATL-008 で一部のシーケンスがこの形をしている。APC との関係はよく分からない。 "ESC を含むバイナリデータを送信できる様にする為" かとも思ったが、 バイナリデータを送る時には & でエスケープするらしい。 C0 は & @-& _ で表し、 & は & & で表す。
符号化表現 | 略号 | 説明 |
---|---|---|
ESC APC E ... ESC ST | _BEEXKEY | Execute a key |
ESC APC H ... ESC ST | _BEEUKEY | Upload key |
ESC APC K ... ESC ST | _BEEDEFK | Add/delete a key |
ESC APC L ... ESC ST | _BEESAVK | Saving a user key in EEPROM |
ESC APC M ... ESC ST | _BEESAVM | Saving a menu in EEPROM |
ESC APC N ... ESC ST | _BEEDEL | Delete a key or menu from EEPROM |
ESC APC O ... ESC ST | _BEESAVP | Saving a new power-up menu number |
ESC APC R ... ESC ST | _BEEDEFM | Add/delete a menu |
ESC APC U ... ESC ST | _BEEUREP | Upload reply |
TeleVideo が ECMA-48 に反する様な幾つかのシーケンスを定義している。
符号化表現 | 略号 | 説明 |
---|---|---|
PM ... CR | _TVLUML | Load user's message line |
ESC | P1 ; P2 ; ... CR | _TVPFK | Program function keys |
ESC ^ (※ESC ^は本来 APC) | _TVDLM | Download font or data to memory |
ST Ps ... CR | _TVNKFV | New/ key/function value |
モードは端末の動作方法を指定する2値の変数である。 モードを操作する制御機能には以下のものがある。
略号 | 符号化表現 | 備考 |
---|---|---|
SM | CSI Pm h | |
DECSET | CSI ? Pm h | |
RM | CSI Pm l | |
DECRST | CSI ? Pm l | |
DECRQM | CSI Ps $ p CSI ? Ps $ p | |
DECRPM | CSI Ps ; Ps $ y CSI ? Ps ; Ps $ y | (応答) |
番号で指定されたモードを有効にする。
番号で指定されたモードを無効にする。
DECRQM で現在の状態を問い合わせる。 一度に一つのモードについてのみ尋ねる事が可能である。 端末から DECRPM によって現在の状態を応答する。 第一引数にはモードの番号を返し、第二引数に状態を返す。
第2引数 | 意味 |
---|---|
0 | 認識できないモード |
1 | SM |
2 | RM |
3 | SM (固定) |
4 | RM (固定) |
略号 | Mode | 略号 | Mode | 略号 | Mode | 略号 | Mode | 略号 | Mode |
---|---|---|---|---|---|---|---|---|---|
GATM | 1 | PUM非推奨 | 11 | GRCM | 21 | WYSTLINM | 31 | WYSL44 | 41 |
KAM | 2 | SRM | 12 | ZDM非推奨 | 22 | WYCRTSAVM | 32 | WYASCII, WY60 | 42 |
CRM | 3 | FEAM | 13 | - | 23 | WYSTCURM | 33 | WY75 | 43 |
IRM | 4 | FETM | 14 | - | 24 | WYULCURM | 34 | _WYVT100 | 44 |
SRTM | 5 | MATM | 15 | - | 25 | WYCLRM | 35 | - | 45 |
ERM | 6 | TTM | 16 | - | 26 | WYDELKM | 36 | - | 46 |
VEM | 7 | SATM | 17 | - | 27 | WYGATM | 37 | - | 47 |
BDSM | 8 | TSM | 18 | - | 28 | WYTEXM, _HPTEKM | 38 | - | 48 |
DCSM | 9 | EBM廃 | 19 | - | 29 | - | 39 | - | 49 |
HEM | 10 | LF/NL廃 (LNM) | 20 | WYDSCM, QUMES2L | 30 | WYEXTDM, WYSEDL | 40 | - | - |
その他の ANSI モード
Mode | 略号 |
---|---|
?1 | DECCKM (TEKCKM, HPCKM) |
?2 | DECANM (TEKANM, HPANM) _ZDSZMD |
?3 |
DECCOLM (TEKCOLM, HPCM) _RESJSM[Manual typo?] - (Research) Jump Scroll |
?4 | DECSCLM (HPSCLM) |
?5 | DECSCNM (TEKSCNM) |
?6 | DECOM (TEKOM, HPOM) |
?7 | DECAWM (TEKAWM, HPAWM) |
?8 |
DECARM (TEKARM) _TVCLSPM - (TeleVideo) Recognize CLEAR SPACE |
?9 |
DECINLM XTERM_X10_MOUSE _TVCCM - (TeleVideo) Control code mode |
?10 |
RXVT_menuBar _RESEM - (Research) Edit Mode _TVBCM - (TeleVideo) Block/Conversational mode _VCBLKM - (Volker-Craig) block edit mode / conversational mode |
?11 |
_RESTLPM - (Research) Transmit Line/Page _TVTLDM - (TeleVideo) Transfer line/display _VCTSL - (Volker-Craig) transmit single line/page |
?12 |
ATT610_BLINK _RESLOLM - (Research) Local Mode / On-Line Mode _TVHFDUPM - (TeleVideo) Half/Full duplex |
?13 |
DECSCFDM*ae XTERM_CURSOR_BLINK_OPS _RESSPSSM - (Research) Serial Port Space Suppression _TVDPM - (TeleVideo) Display/Page mode |
?14 |
DECTEM*ae XTERM_XOR_CURSOR_BLINKS _TVTNLM - (TeleVideo) Transmit now/later _VCITM - (Volker-Craig) immediate transmission mode / deferred transmission mode |
?15 |
_RESPPSM - (Research) Peripheral Port Suppression _TVMSPPM - (TeleVideo) Multi/single page protect mode |
?16 |
DECEKEM*ae _TVBRKM - (TeleVideo) Recognize BREAK key |
?17 |
_BEEATM _TVFBM - (TeleVideo) Forms build mode |
?18 |
DECPFF _TVVAAM - (TeleVideo) Visual attribute action mode _VCINSM - (Volker-Craig) INS/EDIT BLK mode |
?19 |
DECPEX _TVPSPRM - (TeleVideo) print scrolling page/region _VCPROTM - (Volker-Craig) PROTected mode |
?20 |
_RESWM - (Research) Wide Mode _TVMSAM - (TeleVideo) Multi/single autopage mode |
?21 |
_RESKRRM - (Research) Keyboard Repeat Rate 15 cps / 30 cps _TVNTVM - (TeleVideo) Native/VT100 mode |
?22 |
_RESSSRM - (Research) Smooth Scroll Rate 12 lps / 6 lps _TVNKCLKM - (TeleVideo) Disable keyclick |
?23 | _RESNIDFLM - (Research) No Interpretation During Function Loading |
?24 |
laPrintDensity*ae _BEEFFCRM _RESPM - (Research) Protect Mode On |
?25 |
DECTCEM _BEEFFNPM _RESBCM - (Research) Block Mode / Character Mode |
?26 |
_BEEDROL _RESCNM - (Research) Calculator Mode / Normal Mode _TVBIDIXM - (TeleVideo) Bidirectional extension/transparent print |
?27 |
DECPSP*ae _BEEVASM _RESDTSM - (Research) Display Terminal Status / Status Display Off |
?28 |
_BEEHASM _RESKCLKM - (Research) Keyclick On |
?29 |
DECPSM*ae _RESLMWM - (Research) Left Margin Wrap |
?30 |
RXVT_scrollBar _BEEVTCRM _RESSCRM - (Research) Scrolling On / Scrolling Off |
?31 |
_BEEILCRM _RESAPAM - (Research) Auto Page Advance / Page Advance Stop |
?32 | _RESSSM - (Research) Screen Saver On |
?33 | _RESCCBM - (Research) Cursor Character Blink / Steady |
?34 |
DECRLM _RESRRM - (Research) 50 / 60 Hz Referesh Rate |
?35 |
DECHEBM RXVT_ShiftKeys _RESSPBRM - (Research) Serial Port Busy-Ready |
?36 |
DECHEM _RESSPHM - (Research) Serial Port Half / Full Duplex |
?37 | _RESSPNPCM - (Research) Serial Port No Parity Check |
?38 |
DECTEK*rl _RESSPSRM - (Research) Serial Port Suspend Resume |
?39 | _RESSTASM - (Research) Serial Transmit Auto Suspend On EOL / No Auto Suspend |
?40 |
DECCRNLM*ae XTERM_132COLS _RESSSFSM - (Research) Space Substitution for Fields, Serial / No Space Substitution |
?41 |
laPrintDirection*ae XTERM_CURSES_HACK _RESPBRDM - (Research) Peripheral Busy-Ready Detect / Busy-Ready Not Sensed |
?42 |
DECNRCM _RESBRLHM - (Research) Busy-Ready Level Hight / Low |
?43 | DECGEPM*ae |
?44 |
DECGPCM*ae XTERM_MARGIN_BELL _RESPPHM - (Research) Peripheral Port Half / Full Duplex |
?45 |
DECGPCS*ae XTERM_REVERSEWRAP _RESPPNPCM - (Research) Peripheral Port No Parity Check |
?46 |
DECGPBM*ae XTERM_ALLOWLOGGING _RESESRPPM - (Research) Enable Suspend Resume Peripheral Port |
?47 |
DECGRPM*ae XTERM_ALTBUF _RESPTASM - (Research) Peripheral Transmit Auto Suspend on EOL |
?48 | _RESSSPPM - (Research) Space Substitution Peripheral Port |
?49 | _RESEPSM - (Research) Erase to Protected Spaces / Erase to Non-Protected Spaces |
?50 | _RESSMPM - (Research) Selection Menu Page / Line |
Mode | 略号 | Mode | 略号 | Mode | 略号 |
---|---|---|---|---|---|
?51 | DECBWRM*ae | ?61 | DECVCCM | ?71 | - |
?52 | DECOPM*ae | ?62 | - | ?72 | - |
?53 | DEC131TM*km | ?63 | - | ?73 | DECXRLMM |
?54 | - | ?64 | DECPCCM | ?74 | - |
?55 | DECBPM*ae | ?65 | - | ?75 | - |
?56 | - | ?66 | DECNKM | ?76 | - |
?57 | DECNAKB | ?67 | DECBKM | ?77 | - |
?58 | - | ?68 | DECKBUM | ?78 | - |
?59 | DECKDM*ae | ?69 | DECLRMM (DECVSSM) | ?79 | - |
?60 | DECHCCM | ?70 | - | ?80 | DECSDM*rl WY161*km |
Mode | 略号 | Mode | 略号 | Mode | 略号 | Mode | 略号 |
---|---|---|---|---|---|---|---|
?81 | DECKPM | ?91 | - | ?101 | DECCANSM | ?111 | DECFWM |
?82 | - | ?92 | - | ?102 | DECNULM | ?112 | DECRPL |
?83 | WY52*km | ?93 | - | ?103 | DECHDPXM | ?113 | DECHWUM |
?84 | WYENAT*km | ?94 | - | ?104 | DECESKM | ?114 | DECATCUM |
?85 | WYREPL*km | ?95 | DECNCSM | ?105 | - | ?115 | DECATCBM |
?86 | - | ?96 | DECRLCM | ?106 | DECOSCNM | ?116 | DECBBSM |
?87 | - | ?97 | DECCRTSM | ?107 | - | ?117 | DECECM |
?88 | - | ?98 | DECARSM | ?108 | DECNUMLK | ?118 | - |
?89 | - | ?99 | DECMCM | ?109 | DECCAPSLK | ?119 | - |
?90 | - | ?100 | DECAAM | ?110 | DECKLHIM | ?120 | - |
略号 | 番号 | 略号 | 番号 |
---|---|---|---|
XTERM_VT200_MOUSE | ?1000 | XTERM_KEEP_CLIPBOARD | ?1044 |
XTERM_VT200_HIGHLIGHT_MOUSE | ?1001 | XTERM_ALLOW_ALTBUF | ?1046 |
XTERM_BTN_EVENT_MOUSE | ?1002 | XTERM_OPT_ALTBUF | ?1047 |
XTERM_ANY_EVENT_MOUSE | ?1003 | XTERM_SAVE_CURSOR | ?1048 |
XTERM_FOCUS_EVENT_MOUSE | ?1004 | XTERM_OPT_ALTBUF_CURSOR | ?1049 |
XTERM_EXT_MODE_MOUSE | ?1005 | XTERM_TCAP_FKEYS | ?1050 |
XTERM_SGR_EXT_MODE_MOUSE | ?1006 | XTERM_SUN_FKEYS | ?1051 |
XTERM_ALTERNATE_SCROLL | ?1007 | XTERM_HP_FKEYS | ?1052 |
RXVT_TtyOutputInh | ?1010 | XTERM_SCO_FKEYS | ?1053 |
RXVT_Keypress | ?1011 | XTERM_LEGACY_FKEYS | ?1060 |
URXVT_ExtMouseRight | ?1015 | XTERM_VT220_FKEYS | ?1061 |
XTERM_EIGHT_BIT_META | ?1034 | XTERM_PRIVATE_COLOR_REGISTERS | ?1070 |
XTERM_REAL_NUMLOCK | ?1035 | XTERM_BUTTON1_MOVE_POINT | ?2001 |
XTERM_META_SENDS_ESC | ?1036 | XTERM_BUTTON2_MOVE_POINT | ?2002 |
XTERM_DELETE_IS_DEL | ?1037 | XTERM_DBUTTON3_DELETE | ?2003 |
XTERM_ALT_SENDS_ESC | ?1039 | XTERM_PASTE_IN_BRACKET | ?2004 |
XTERM_KEEP_SELECTION | ?1040 | XTERM_PASTE_QUOTE | ?2005 |
XTERM_SELECT_TO_CLIPBOARD | ?1041 | XTERM_PASTE_LITERAL_NL | ?2006 |
XTERM_BELL_IS_URGENT | ?1042 | ||
XTERM_POP_ON_BELL | ?1043 | URXVT_intensityStyles | ?1021 |
recent changes
XTERM_PIXEL_POSITION_MOUSE | ?1016 | xterm-358c |
---|---|---|
DECGEPM | ?43 | xterm-359c |
DECGPBM | ?46 | xterm-359c |
DECGRPM | ?47 | xterm-359c |
XTERM_FAST_SCROLL | ?1014 | xterm-384e |
XTREVWRAP2 | ?1045 | xterm-382c |
略号 | 番号 | 略号 | 番号 | 略号 | 番号 |
---|---|---|---|---|---|
RLGCWA | ?8400 | RLNORESZ | ?8435 | RLMODKEY | ?8450 |
RLGNDW | ?8401 | RLKANAUTO | ?8437 | RLDRWLINE | ?8451 |
RLGAWL | ?8402 | RLMOSWHL | ?8438 | RLSIXPOS | ?8452 |
RLBOLD | ?8403 | RLMSWAPP | ?8439 | DRCSMMv1 | ?8453 (?8800) |
RLFONT | ?8404 | RLPNAM | ?8440 | RLC1DIS | ?8454 |
RLBPLUS | ?8405 | IMECTRL | ?8441 | RLCLSBACK | ?8455 |
RLALTBDIS | ?8406 | RLCKMESC | ?8442 (?7727) | RLBRKMBCS | ?8456 |
RLADBELL | ?8416 | RLMSWAPE | ?8443 (?7786) | TTCTH | ?8457 (?8200) |
RLVSBELL | ?8417 | RLTEKINWND | ?8446 | RLBOLDHC | ?8458 |
RLUNIAWH*1 | ?8428 | RLUNINOM | ?8448 | - | - |
RLSPCTAB | ?8429 | RLUNIAHF | ?8449 | - | - |
略号 | Mode |
---|---|
minttyAmbiguousWidthReport | ?7700 |
minttyScrollMarker | ?7711 |
minttyAppEsc | ?7727 |
minttyEscFs | ?7728 |
minttySixelScrollEndPos | ?7730 |
minttyScrollbar | ?7766 |
minttyFontChangeReport | ?7767 |
minttyShortcutOverride | ?7783 |
minttyEnableMouseWheel | ?7786 |
minttyApplicationMouseWheel | ?7787 |
minttyDisableBidiLine | ?7796 |
minttyDisableBidi | ?77096 |
minttyModifyKey | ?77000-77031 |
VTE_BIDI_BOX_MIRROR | ?2500 (tmp) |
VTE_BIDI_AUTO | ?2501 (tmp) |
VTE_BIDI_SWAP_ARROW_KEYS | ?1243 (tmp) |
TTCTH (Tera Term) | ?8200 |
DRCSMMv1 (drcsterm) | ?8800 |
TNAMB (tanasinn) | ?8840 |
W32IM (Windows Terminal) | ?9001 |
KITTY_STYLED_UNDERLINES | ?2016 |
KITTY_EXTENDED_KEYBOARD | ?2017 |
TWGSUM | ?2026 |
?foot? modify_escape_key | ?27127 |
?foot? ime_enable | ?737769 |
Mode | Name |
---|---|
<0 | _DGROLM |
<1 | _DGBLKM TEKORM |
<2 | _DGHSCM |
<3 | _DGANSM |
<4 | _DGFRMM |
<5 | _DGMGNM |
Mode | Name |
=0 |
_DOST40C1M _TVTCM - (TeleVideo 965) Transmission control mode |
=1 |
_DOST40C3M _TV8DBM - (TeleVideo 965) 8 data bits / 7 data bits |
=2 |
_DOST80C1M _TVABPM - (TeleVideo 965) Attribute base: page |
=3 |
_DOST80C3M _TVCOLM - (TeleVideo 965) 132 column mode |
=4 |
_DOSG32C2M _TVMBELLM - (TeleVideo 965) Margin bell on |
=5 |
_DOSG32C1M _TVINTENM - (TeleVideo 965) Full/half intensity |
=6 |
_DOSG62C1M _SGILKDM _TVNLM - (TeleVideo 965) New line mode |
=7 |
_DOSAWM _TVLWM - (TeleVideo 965) Line wrap |
=8 | _TVKRM - (TeleVideo 965) Key repeat on |
=9 |
_SGIEVBM _TVDNLFM - (TeleVideo 965) DOWN = C-j/C-v |
=10 | _TVFKSM - (TeleVideo 965) Function key save on |
=11 | _TVESETUPM - (TeleVideo 965) SETUP enabled |
=12 |
_SGIOVLM _TVEEWSCM - (TeleVideo 965) EWSC enabled |
=13 |
_DOSG32C3 _TVECLRM - (TeleVideo 965) CLR SPC enabled |
=14 |
_DOSG62C4 _TVEBRKM - (TeleVideo 965) BREAK enabled |
=15 |
_DOSG63C1 _TVPPFM - (TeleVideo 965) Page print flip on |
=16 | _DOSG63C4 |
=17 |
_DOSG64C1 _TVSBSTM - (TeleVideo 965) Send block boundaries from screen/page top |
=18 |
_DOSG64C4 _TVSBEDM - (TeleVideo 965) Send block boundaries end of display/cursor |
=19 |
_DOSG32C8 _TVASCRM - (TeleVideo 965) Autoscroll mode |
=20 | _TVENHANM - (TeleVideo 965) Enhanced mode |
=21 | _TVWSTARM - (TeleVideo 965) WordStar mode |
=22 | _TVAUXHM - (TeleVideo 965) Set aux./main as host |
=23 | _TVAPPM - (TeleVideo 965) Application mode |
=24 | --- |
=25 | _TVRCAPSM - (TeleVideo 965) Reverse CAPS LOCK |
=26 | _TVCAPSM - (TeleVideo 965) CAPS LOCK on |
=27 | _TVREC2M - (TeleVideo 965) Secondary rec. on |
=28 | _TVACKM - (TeleVideo 965) ACK mode |
=29 | _TVAFLM - (TeleVideo 965) Auto font load |
=114 | _DOSG64C4JM |
=115 | _DOST80C3JM |
Mode | Name |
>1 |
HPMPM - (HP) Multipage mode _ZDSL25 _CITDSSSM _SUNPGM |
>2 |
HPMLM - (HP) Memory Lock mode _ZDSKCL _CITVTSSKM |
>3 | _ZDSHSM _PC98L20 _CITHKNM |
>4 | _ZDSCBL _CITFFCDM |
>5 | _ZDSCDE _CITCTRVM |
>6 | _ZDSKSH _CITDIXM |
>7 | _ZDSKAM |
>8 | _ZDSALF |
>9 | _ZDSACR _CITSWCEM |
>10 | _CITDWEM |
>11 | _CITEPEM |
>12 | _CITTSPM |
>13 | _CITCRTSM |
>14 | _CITHFDUPM |
Mode | Name |
>25 | zMDM |
>26 | zKCM |
>27 | zKPCM |
>28 | zKRM |
>29 | zRLM |
>30 | zDBM |
>31 | zBKCM |
>32 | zBNCM |
>33 | zWFM |
>34 | zWBM |
>35 | zDDM |
>36 | zSPM |
>37 | zAXM |
>38 | zAPM |
>39 | zSSM |
>40 | zHDM |
>41 | zTPDM |
>42 | zLTM |
>43 | zCSTM |
>44 | zFSTM |
>45 | zGRTM |
>46 | zAKDM |
>47 | zFRM |
>48 | zHAM |
>49 | zGAPM |
>50 | zFIM |
>51 | zACM |
>52 | zMKM |
>53 | zCLIM |
>54 | zINM |
>55 | zCNM |
>56 | zICM |
>57 | zMMM |
>58 | --- |
>59 | zIVM*km |
>60 | --- |
>61 | Z8RCM*km |
他
「NetTermのマウスプロトコルの初期化シーケンスがわからなかったので、 ttymouse=xterm2とttymouse=nettermでの出力の違いを比べて見たら、 xtermの初期化シーケンスが無くなっただけだった。もしかして初期化シーケンスは無いの? #TeraTerm」
TextRam.cpp:6072:int CTextRam::OptionToIndex(int value, BOOL bAnsi)
に内部番号との対応がある。
RLogin が 84xx を採用しているのは内部に 8x32 = 512bit のビットベクタがあって、
その 400 番台を内部用に確保していて其処に切りの良い 8000 を足したからだろうか。# ANSI Modes | ANSI | 1111111111222|333333333 4 4| | Modes |1234567890123456789012|012345678 0 2| |-----------|----------------------|-------------| | ECMA-48 |******************DD**|RRRRRRRRR-R-R| D=deprecated R=reserved | vt100 | * | | | vt102 | * * * | | | vt220 | * * * * | | | vt320 | *** * * * | | | vt420 | *** * * | | vt510,vt520 は同じ。 |-----------|----------------------|-------------| | foot | * | - - | | rxvt | * | - - | | urxvt | * * | - - | | Kitty | * * | - - | | iTerm2 | * * | - - | | Poderosa | * * | - - | | tmux | * | * - - | | screen | * * | * - - | | xterm | * * * * | - - | | RLogin | * * * * * * | - - | | Tera Term | * * * * | ** - - | | mlterm | * * * * | ** - - | | mintty | * * * * * | ** - - | |-----------|----------------------|-------------| | contra |** * ***** * ***| ** - - | # DEC Modes | DEC | | | | | | | | | 11111 1 11111111111| | ? Modes | 1 111 1 11|22 2 23|333 3 44444444|55|5 5 566|6 6666|7|88|9999900000 0 00011111111| | |1234567890 234 6 89|45 7 90|456 8 01234567|12|5 7 901|4 6789|3|01|5678901234 6 78901234567| |-----------|-------------------|-------|--------------|--|-------|------|-|--|------------------------| | vt100 |********* - - - | - - | - - - | | - - | - | | | - - | | vt102 |******** - - -**| - - | - - - | | - - | - | | | - - | | vt220 |******** - - -**| *- - | - - *- | | - - | - | | | - - | | vt320 |******** - - -**| *- - | - - *- | | - - | -* * | | | - - | | vt420 |******** - - -**| *- - | - - *- | | - - **|*-****|*| *| - - | | vt510 |******** - - -**| *- - |***- - *- | | -*- * |*-****|*| *|**********-*- | | vt520 |******** - - -**| *- - |***- - *- | | -*- * |*-****|*| |**********-*- *******| |-----------|-------------------|-------|--------------|--|-------|------|-|--|------------------------| | Poderosa |* *** - - - | *- - | - - - x| | - - | - | | | - - | | tmux |* * ** -* - - | *- - | - - - x| | - - | - | | | - - | | wt |*** *** -* - - | *- - | - -* - | | - - | - | | | - - | | screen |*** *** x -* - - | *- - | - - - x| | - - | - | | | - - | | foot |* ***** -* - - | *- - | - - - x x| | - - | - | |* | - - | | Kitty |* ******x -* - - | *- - | - - *- | | - - | - | | | - - | | VTE |* * *** x - - - | *- - | - -x - x| | - - | -* | | | - - | | rxvt |******* x*- - - | *- - *| r - -x - x| | - - | -** | | | - - | | urxvt |******* x -* - - | *- - *| r - -x - x| | - - | -** | | | - - | | iTerm2 |******** - - - | *- - | - -xx - x x| | - - | - *| | | - - | | mintty |*** ****x -* - - | *- - *| - -x *- x x| | - - | -** *| |* |* - - | | Tera Term |* * ****x -* - - *| *- - | -*- - x| | - -* | -** *| | |* - - | | RLogin |********x -* - - *| *- - | -*-xx - x x| | - - | -** *| |* |* - - *| | xterm |********x*-*xx- -**| *- - *| r -*-xx**xxxx| | - - | -** *| |* |* - - | |-----------|-------------------|-------|--------------|--|-------|------|-|--|------------------------| | contra |* ******x -*xx- - | *- - | - -x - x x| | - - | -** *| | |* - - | # Private Modes | Origin |xterm |rxvt |xterm | | |vte| |mintty |T|RLogin |#1 |w| T=Tera Term, #1=drcsterm |-----------|--------|--------|---------------------------|-|-|---|-|-------------|-|-------------------------------|-----|-| w=Windows Terminal | Modes? | | | | | | | | | | | | | 77| | | | | | |11111111|11|111|1|1111 111111111111111|11|1|2|2|2|122|1|7777777777777|8|8888888888888888888888888888888|88888|9| | |00000000|00|000|0|0000 000000000000000|00|0|0|0|0|255|3|7777777777700|2|4444444444444444444444444444444|88888|0| | |00000000|11|111|2|3333 344444444445555|66|7|0|1|2|400|3|01223668889X9|0|0000000112233334444444555555555|00000|0| | |01234567|01|456|1|4567 901234567890123|01|0|4|7|6|301|7|01780673676X6|0|0123456678957890123689012345678|01234|1| |-----------|--------|--|---|-|--------------------|--|-|-|-|-|---|-|-------------|-|-------------------------- ----|-----|-| | xterm |********|**|***| |****-***************|**| |*| | | | | * * |*| | | | | rxvt |* |**| | | - ** | | | | | | | | | | | | | | urxvt |* **** |**| * |*| - *** | | |*| | | | | | | | | | | VTE |***** **| | | | * - *** | | |*| | |***| | | | | | | | mintty |* ***** | | * | | *- ** **** | *| |*| | | **| |*************| | * | | | | Tera Term |******* | | * | | - *** | | |*| | | | | * * |*| | | | | RLogin |****** | | * | | - *** | | |*| | | | | * * |*|*******************************|* | | |-----------|--------|--|---|-|--------------------|--|-|-|-|-|---|-|-------------|-|-------------------------------|-----|-| | tmux |* ***** | | * | | - * * | | |*| | | | | | | | | | | Poderosa |******* | | * | | - *** | | |*| | | | | | | | | | | screen |**** * | | | | - *** | | |*| | | | | | | | | | | Kitty |* ***** | | * | | - * | | |*|*| | | | | | | | | | iTerm2 |* ***** | | * | | - * | | |*| | | |*| | | | | | | wt |* ** ***| | | | - * | | | | | | | | | | | |*| | foot |***** **| | * | |*** - * *** | |*|*| |*| | | | | * | |*| |-----------|--------|--|---|-|--------------------|--|-|-|-|-|---|-|-------------|-|-------------------------------|-----|-| | contra |******* | | * | | - *** ***|**| |*| | | | | | | | | |
[ECMA-48/6.1] 装置 (device) (ディスプレイやプリンターを想定) は3つの部分で構成される。 入力部 (input component)・表示部 (presentation component)・データ部 (data component) である。 特にデータ部は双方向の文字列表示 (bidi) に対応する為に用意するが、単方向しか対応しなければ表示部と等価なので省略可能である。 表示部・データ部は共にそれぞれ行の集まりであり、行は文字位置 (character position) の集まりである。 表示部・データ部の行の並びには方向性があり行進行 (line progression) という。 表示部・データ部の各行にはそれぞれ自然な方向があり、 それぞれ文字進路 (character path)・文字進行 (character progression) という。 行及び文字位置は、1 から始まる整数によって、行進行および文字進路・文字進行の順序で番号付けられる。 表示部は実際に表示されるときの固有の座標(行・列)を持ち、 データ部は内部的な取り扱いで使用する固有の座標を持ち、一対一に対応がある。 表示部・データ部はそれぞれカーソルを持ち、現在表示位置 (active presentation position)・現在データ位置 (active data position) という。 文字の挿入によるカーソルの移動は、現在データ位置を行内の次の文字位置に移動するものである。これを暗黙的移動 (implicit movement) という。 制御機能によるカーソルの移動は現在データ位置もしくは現在表示位置に作用する。これを明示的移動 (explicit movement) という。 現在表示位置と現在データ位置は連動する。つまり一方の位置に対する移動操作によって、他方が間接的移動 (indirect movement) する。 何れの移動も、存在しない場所に移動しようとしたときの動作は処理系依存である (例えば行折り返しをしたり、動作を停止したりする)。
明示されてはいないが、ECMA-48 および ECMA-TR/53 の記述を総合するに、 以下の様なことが言えると考えられる。
略号 | 符号化表現 |
---|---|
SPD | CSI Ps1 ; Ps2 SP S |
SCP | CSI Ps1 ; Ps2 SP k |
SIMD | CSI Ps1 ^ |
[ECMA-48/7.2.1] 双方向機能に対応するかどうかを指定する。
[ECMA-48/7.2.3] 制御機能 CPR, CR, DCH, DL, EA, ECH, ED, EF, EL, ICH, IL, LF, NEL, RI, SLH, SLL, SPH, SPL が作用する対象が表示部かデータ部かを設定する。
[VT510: DECOM] DECSTBM, DECLRMM, DECSLRM でページの範囲が制限されている時の座標原点を指定する。
互換性: RLogin では CHA, CUP, VPA, HPA, HVP の座標原点が影響を受ける。 RLogin では設定されている時に VPR, HPR の移動可能範囲が制限されるが FS, GS, RS, US (ADM-3) や HOP, BPH (VT52) は制限を受けない。 contra でもそれに準じて VPR, VPB, HPR, HPB の移動可能範囲を制限する。
[VT510: DECAWM] カーソルが画面の右端に丁度達した時に自動的に次の行頭に移動するかどうかを設定する。
互換性: RLogin では RM の時、最後の文字位置にカーソルを移動する。 最後の文字位置にカーソルがある時に、全角文字が現れた時には次の行に文字を挿入する。 xterm では RM の時、最後の文字位置にカーソルを移動するのは同じだが、 その時に全角文字を受信すると全角文字を挿入するのを諦める。 また、RM の状態で行末に移動して其処で SM にすると最後の文字位置に戻る様だ。
[ECMA-48/8.3.130] 一つ目の引数 Ps1 は 表示部の行の向き、行の追加方向、文字進路を設定する。既定値は 0 である。
Ps1 | 行の向き | 行の追加 | 文字進路 |
---|---|---|---|
0 | 横書き | 下へ | 右へ |
1 | 縦書き | 左へ | 下へ |
2 | 縦書き | 右へ | 下へ |
3 | 横書き | 下へ | 左へ |
4 | 縦書き | 右へ | 上へ |
5 | 横書き | 上へ | 左へ |
6 | 横書き | 上へ | 右へ |
7 | 縦書き | 左へ | 上へ |
Ps2 は表示部・データ部に含まれている既存の内容をどう更新するかを指定する。 1 を指定するとデータ部を保持して表示部を更新する。現在データ位置を最初の行の最初の文字に移動する。 2 を指定すると表示部を保持してデータ部を更新する。現在表示位置を最初の行の最初の文字に移動する。 0 を指定した場合は処理系依存である。 例えば次に CR, FF などの現在位置を明示的に移動する制御機能が呼び出される時まで更新が遅延されるという実装も考えうる。 既定値は 0 である。
contra では、第2引数に 0 を指定した時の動作は 1 と同じである。
[ECMA-48/8.3.111] 現在表示行および以降の表示行の文字進路を変更する。
Ps1 は文字進路を指定する。 横書きの場合は 1 が左から右で 2 が右から左を意味する。 縦書きの場合は 1 が上から下で 2 が下から上を意味する。 既定値はない (no default value)。
Ps2 は、現在行に既に含まれている内容を、 文字進路の変更に伴ってどう更新するか指定する。 1 を指定すると新しい文字進路に合わせて表示内容を更新し、現在データ位置を先頭に移動する。 2 を指定すると表示内容を更新せず、対応するデータ部を辻褄があう様に更新する。現在表示位置を先頭に移動する。 0 を指定した場合は処理系依存である。例えば次に CR, NEL などの現在位置を明示的に移動する制御機能が呼び出される時まで更新が遅延されるという実装も考えうる。
両パラメータの既定値はない。
Note: ECMA-48 では効果の範囲は the active line and subsequent lines in presentation component としているが、subsequent lines が具体的に何を指すのかは曖昧である (位置関係で現在行よりも下にある行なのか、今後新しく確立される行のことなのか)。 因みに規格中で subsequent line という語が出るのはこの一箇所のみである。 ただ、現在行 (the active line) の更新方法だけ記述されていることから、 subsequent lines は新しく確立される空の行を指すのが自然と思われる。
contra では、 第1引数の既定値は 0 とし、character path を解除して SPD で設定した値に戻す。 第2引数の既定値は 0 とし、1 と同じ意味とする。 引数に範囲外の値を指定した場合は、何も実行しない。
[ECMA-48/8.3.120] 暗黙的移動の向きを設定する。この設定は次の SIMD まで有効である。 0 を指定すると暗黙的移動は右向き(つまり文字進行方向)である。 1 を指定すると暗黙的移動は左向き(つまり文字進行と逆方向)である。 引数の既定値は 0 である。
略号 | 符号化表現 |
---|---|
SLH | CSI Ps SP U |
SLL | CSI Ps SP V |
SPH | CSI Pn SP i |
SPL | CSI Pn SP j |
DECSTBM | CSI Pn1 ; Pn2 r |
DECSLRM | CSI Pn1 ; Pn2 s |
[ECMA-48/8.3.122] 現在行と以降の行で、文章を表示する先頭列を指定する。 この値は CR, DL, IL, NEL において、現在表示位置 (DCSM(PRESENTATION) のとき) または現在データ位置 (DCSM(DATA) のとき) が移動する先の列になる。 DCSM(DATA) もしくは表示部とデータ部に区別のない装置の場合、 設定された列は現在データ位置が暗黙的移動によって移動できる一番左の位置となる。 引数 Pn は列番号を指定し、既定値はない。
Note: どの瞬間の DCSM が効くのか規格には明記されていないが、 CR の説明によると、DCSM は CR, DL, IL, NEL が呼び出された時の値が単に使用される。 つまり、SLH, SLL で記録される状態は DCSM の影響を受けず、 単に CR, DL, IL, NEL の動作が DCSM の値によって変わるという事である。
Note: 行毎に SLH, SLL の値を保持するのかどうか規格には明記されていない。 これは "以降の行" (lines of subsequent text) をどう解釈するかに依存する。 因みに SCP の "以降の行" (subsequent lines) とは表現が異なる。
[ECMA-48/8.3.123] 現在行と以降の行で、文章を表示する最終列を指定する。 この値は、DCSM(PRESENTATION), SIMD(1) の時、 CR, NEL による移動先の列になる。 また、DCSM(DATA) もしくは表示部とデータ部に区別のない装置の場合、 設定された列は現在データ位置が暗黙的移動によって移動できる一番右の位置になる。 引数 Pn は列番号を指定し、既定値はない。
[ECMA-48/8.3.131] 頁初期位置 (page home position) を設定する。 現在頁と以降の頁に FF によって移動した後に、 現在表示位置または現在データ位置 (DCSM による) をおく行を Pn で指定する。 DCSM(DATA) またはデータ部と表示部に区別のない装置の場合、 暗黙的移動によってこの行より前に移動できない。 この値は次に SPH が呼び出されるまで持続する。 パラメータの既定値はない。
[ECMA-48/8.3.133] 頁限界位置 (page limit position) を設定する。 現在頁と以降の頁において 現在表示位置または現在データ位置 (DCSM による) がそれより下に移動できない行を Pn で指定する。 DCSM(DATA) またはデータ部と表示部に区別のない装置の場合、 暗黙的移動によってこの行より下に移動することはない。 この値は次に SPL が呼び出されるまで持続する。 パラメータの既定値はない。
[VT510/DECSTBM] ページのスクロール範囲を設定する。 第1引数に範囲の開始行の番号を指定し、第2引数に範囲の最終行の番号を指定する。 第1引数の既定値は1であり、第2引数の既定値は行数である。 スクロール範囲は2行以上なければならない。 スクロール範囲の設定の後に1行目1列目に移動する。
[VT510/DECSLRM] DECLRMM が設定されている時に、ページのスクロール範囲を設定する。 第1引数に範囲の開始列の番号を指定し、第2引数に範囲の最終列の番号を指定する。 第1引数の既定値は1であり、第2引数の既定値は画面の幅(列数)である。 スクロール範囲は2行以上なければならない。 スクロール範囲の設定の後に1行目1列目に移動する。
[VT510/DECLRMM] DECSLRM で設定した範囲が有効かどうかを設定する。 どうも vt400 では DECVSSM という名前だった様である。
[ECMA-48/6.2.1, 8.3.114, 8.3.127] データ部にある文章は複数の文字を含む文字列 (string) によって構成されているとして処理される。 各文字列は、制御機能もしくは上位の手続きに従って決まる方向 (direction) を持つ。 既定の方向は現在の文字進路と同じ方向である。
例えば、方向付き文字列 (directed string), 反転文字列 (reversed string)はデータ部の中の領域で、 それぞれ SDS, SRS によって始まりと終わりを指定される。 これらはデータ部での文字進行には影響を与えず、 文字列の内容はそのままそれまでの文章の続きとして記録される。 文字列は、SDS, SRS の区別なく任意の階層で入れ子にする事ができる。 ECMA-48 では入れ子文字列内部における現在データ位置を指定しない。 入れ子文字列を閉じる度に、一つ外側の入れ子文字列の方向が復元される。 SDS, SRS 文字列内部で CVT, HT, SCP, SPD, VT を呼び出した時の動作は規定されない。 SDS, SRS 文字列内部で領域定義の制御機能 DAQ, EPA, ESA, SPA, SSA を呼び出してはならない。
[ECMA-TR/35] 文章による定義はないが、Annex A に動作例が載っている。 動作例から以下のような規則が読み取れるが、疑問が多々残る。
以下に関連する制御機能を挙げる。
略号 | 符号化表現 | 名称 |
---|---|---|
SDS | CSI Ps1 ] | Start Directed String |
SRS | CSI Ps1 [ | Start Reversed String |
ALM | U+061C | Arabic letter mark |
LRM | U+200E | Left-to-right mark |
RLM | U+200F | Right-to-left mark |
LRE | U+202A | Left-to-right embedding |
RLE | U+202B | Right-to-left embedding |
U+202C | Pop directional formatting | |
LRO | U+202D | Left-to-right override |
RLO | U+202E | Right-to-left override |
LRI | U+2066 | Left-to-right isolate |
RLI | U+2067 | Right-to-left isolate |
FSI | U+2068 | First strong isolate |
PDI | U+2069 | Pop directional isolate |
[ECMA-48/8.3.114] 方向付き文字列 (directed string) の開始と終了を指定する。 Ps = 1, 2 の SDS は方向付き文字列の開始を指定する。 1 を指定すると方向は左から右で、2 を指定すると方向は右から左になる。 Ps = 0 の SDS は方向付き文字列の終了を指定する。 現在データ位置は文字列の最後の位置の次に移動する。 Ps の既定値は 0 である。
[ECMA-48/8.3.137] 反転文字列 (reversed string) の開始と終了を指定する。 Ps = 1 は反転文字列の開始を示し、 方向はそれまでの方向と逆の方向になる。 Ps = 0 は反転文字列の終了を示し、 現在データ位置は文字列の最後の位置の次に移動する。 Ps の既定値は 0 である。
略号 | 符号化表現 | 対象 | 意味 |
---|---|---|---|
SP | SP | データ部 | 空白を挿入し、一文字進む |
BS | BS | データ部 | 一文字戻る |
LF | LF | DCSM | 一行下 |
IND | IND | DCSM? | |
RI | RI | DCSM | 一行上 |
FF | FF | 表示部 | 次の頁 |
CR | CR | DCSM | 行頭 |
NEL | NEL | DCSM | 次行の行頭 |
[ECMA-48 4th/E.1.3] LF, FF, VT を実行した際に行頭に移動するかどうかを設定する。 ECMA-48 3rd に初めて記述された時から非推奨だった。
[ECMA-35/6.2.3] SP は図形文字で、何も図形がないという見た目を持つ。 現在位置を暗黙的移動によって一つ進める役割を持つと考えて良い。
Note: 実際の端末の実装では現在位置にある文字を上書きしてスペースを書き込む。
[ECMA-48/8.3.5] 現在データ位置を現在の暗黙的移動とは逆の方向に1文字動かす。暗黙的移動の方向は SIMD で変更できる。
Note: プリンタなど一つの文字位置に複数の文字を重ね書きできる装置では SP と BS は完全に対称な役割を持つ。 しかし、ディスプレイ端末など1つの文字位置に1つの文字しか表示できない場合、両者は対称でない。 SP は現在位置の文字を空白に置き換えてから移動するが、BS は単に現在位置を移動するのみである。
[xterm, RLogin] 設定されている時、行頭の BS で前の行に移動する。
[ECMA-48/8.1.74 LF] 現在表示位置または現在データ位置 (DCSM に応じて変わる) を次の行に移動する。列はそのまま。
Note: IND は ECMA-48 3rd edition までは存在した[ECMA-48 3rd/8.2.46]が、 4th edition で削除予定とされ[ECMA-48 4th/E.2.3]、 5th edition で削除された[ECMA-48/F.8.2]。 5th edition で導入された DCSM との関係は定義されていないが、 削除されるまでは LF と等価であったので、 対応するとすれば LF と全く同じに実装するべきだろう。
[ECMA-48/8.3.104] DCSM に応じて現在表示位置または現在データ位置を前の行の対応する文字位置に移動する。
printf '\e[2H\e[L\e[M\n\e[H\eM'
を実行すると無限にウィンドウを開いて死ぬ。
[ECMA-48/8.1.51] 現在表示位置を次のページの SPH の行に移動する。列はそのまま。
[ECMA-48/8.3.15] 行頭に移動する。 CR の動作は DCSM と SIMD によって変化する。 現在表示位置または現在データ位置 (DCSM によって変わる) を、 行内で SLH (SIMD(0) のとき) または SLL (SIMD(1) のとき) に移動する。
[ECMA-48/8.3.86] 次の行の行頭に移動する。 実質、次の行に移ってから CR を実行するのに等価である。
Note: もし行毎に SLH, SLL の値を保持するのだとしたら、 規格の文面を見るに移った先の行の SLH, SLL を用いることになるだろう。
ここに、方向と移動量または絶対値を具体的に指定して移動する制御機能をまとめる。 表示部は SPD に応じて縦書きだったりアラビア語の様に右から左に成長する行を持ったりすることに注意する。 従って、見た目の上下左右で移動する制御機能 CUU, CUD, CUF, CUB と、 論理的な行・文字で移動する制御機能 CPL, CNL, CUP, CHA を区別する必要がある。 更に、データ部で (方向付き文字列に影響されずに) 移動する一連の制御機能 HPB, HPR, VPB, VPR, HVP, HPA, VPAも区別する。
データ部で移動 | 表示部で移動 (方向: 行・文字指向) |
表示部で移動 (方向: 見た目の上下左右) |
現在位置の移動先 | |||
---|---|---|---|---|---|---|
略号 | 符号化表現 | 略号 | 符号化表現 | 略号 | 符号化表現 | |
VPB | CSI Pn k | CPL | CSI Pn F | CUU | CSI Pn A | Pn 行上 (CPL は更に行頭) |
VPR | CSI Pn e | CNL | CSI Pn E | CUD | CSI Pn B | Pn 行下 (CNL は更に行頭) |
HPB | CSI Pn j | - | CUB | CSI Pn D | Pn 文字左 | |
HPR | CSI Pn a | - | CUF | CSI Pn C | Pn 文字右 | |
HVP | CSI Pn1 ; Pn2 f | CUP | CSI Pn1 ; Pn2 H | - | Pn1 行目の Pn2 文字目 | |
VPA | CSI Pn d | - | - | Pn 行目 | ||
HPA | CSI Pn ` | CHA | CSI Pn G | - | Pn 文字目 |
[ECMA-48/7.2.20, F.4.2 (非推奨)] 制御機能 CBT, CHA, CHT, CNL, CPL, CPR, CUB, CUD, CUF, CUP, CUU, CVT, DCH, DL, ECH, GSM, HPA, HPB, HPR, HVP, ICH, IL, NP, PP, PPA, PPB, PPR, REP, SD, SL, SR, SU, TCC, VPA, VPB, VPR に 0 を指定した時の解釈を切り替える。
Note: ECMA-48 1st Edition では空引数と 0 は共に既定値を意味していた。 然し、現在の版では引数の既定値の取り扱いが変わった。 0 を特別扱いしないことによって、引数 0 を指定できるようになった。 例えば、SSU 単位の引数で 0 を指定できる。 また、繰り返し回数を指定する引数では 0 は何もしないことを意味する。 既定値を使いたい時は空引数を用いる。 ZDM(DEFALT) は初版の動作を期待する場合に使用する。
[ECMA-48/8.3.22 CUU, 8.3.19 CUD, 8.3.18 CUB, 8.3.20 CUF] CUU, CUD, CUB, CUF は、現在表示位置を Pn 行または Pn 字だけ、 それぞれ上・下・左・右に移動する。既定値は 1 である。 ZDM(DEFAULT) の場合は 0 を指定すると 1 と解釈する。
Note: 横書きの場合は CUU, CUD が行の移動で CUB, CUF が列の移動になる。 縦書きの場合は CUB, CUF が行の移動で CUU, CUD が列の移動になる。
[ECMA-48/8.3.21] 現在表示位置を Pn1 行目、Pn2 文字目に移動する。 両引数の既定値は共に 1 である。ZDM(DEFAULT) の場合は 0 を指定すると既定値 1 が使用される。
[ECMA-48/8.3.12 CNL, 8.3.13 CPL] 現在表示位置を Pn 行だけ次 (CNL の場合) または前 (CPL の場合) の行頭に移動する。 引数の既定値は 1 である。ZDM(DEFAULT) の場合は 0 を指定すると既定値 1 が使用される。
[ECMA-48/8.3.9] 現在表示位置を現在行の Pn 文字目に移動する。引数の既定値は 1 であり、ZDM(DEFAULT) の場合は 0 は既定値 1 を意味する。
[ECMA-48/8.3.57 HPA, 8.3.158 VPA] 現在データ位置を Pn 文字目 (の場合) またはPn 行目 (VPA の場合) に移動する。 ZDM(DEFAULT) のとき引数 0 は既定値 1 を意味する。
[ECMA-48/8.3.58 HPB, 8.3.59 HPR, 8.3.159 VPB, 8.3.160 VPR] HPB, HPR, VPB, VPR はそれぞれ現在データ位置を左・右・上・下に Pn 行または Pn 文字だけ移動する。 ZDM(DEFAULT) のとき引数 0 は既定値 1 を意味する。
[ECMA-48/8.3.63] 現在データ位置を Pn1 行目 Pn2 文字目に移動する。 Pn1 と Pn2 の既定値は共に 1 である。 ZDM(DEFAULT) のとき値 0 は既定値 1 を意味する。
現在のカーソル位置を記録する。
SCOSC で記録した位置にカーソル位置を戻す。
現在のカーソル状態を記録する。 記録される物にはカーソル位置・描画属性・文字デコード状態・DECAWM・DECOM・DECSCA状態などを含む。
DECSC で記録したカーソル状態を復元する。
略号 | 用途 | 符号化表現 | 意味 |
---|---|---|---|
MW | 制御 | MW | メッセージ待ち表示の設定 |
DSR(5) | 制御 | CSI 5 n | 装置の状態を確認 |
DSR | 応答 | CSI Ps n | |
DSR(6) | 制御 | CSI 6 n | カーソル位置を取得 |
CPR | 応答 | CSI Pn1 ; Pn2 R |
[ECMA-48/8.3.35] メッセージ待ち表示 (message waiting indicator) を受信装置に設定する。 受信装置は例えば MW を受信したことに対応する応答として DSR を返すなどする。
[ECMA-48/8.3.35] 現在の装置の状態を応答するのに使われる。 DSR(5) や MW に対する応答として送られる事もあれば、それとは独立に送られる事もある。
種類 | 符号化表現 | 意味 |
---|---|---|
要求 | CSI 5 n | 現在の装置の状態を問い合わせ。 |
応答 | CSI Ps n | 現在の装置の状態を応答。 |
Ps は以下の状態を示す。
Ps | 意味 |
---|---|
0 (既定値) | 準備完了・機能不全なし |
1 | ビジー状態・応答は再送されない |
2 | ビジー状態・後で応答を再送する |
3 | 機能不全あり・応答を再送しない |
4 | 機能不全あり・後で応答を再送する |
[ECMA-48/8.3.35] 表示位置またはデータ位置を問い合わせる。 DCSM(PRESENTATION) の時表示位置を返し、DCSM(DATA)の時データ位置を返す。 既定値は Pl = 1, Pc = 1 で、 ZDM(DEFAULT) のとき 0 は既定値を意味する。
種類 | 符号化表現 | 意味 |
---|---|---|
要求 | CSI 6 n | 現在位置問い合わせ。 |
応答 | CSI Pl ; Pc R | 現在位置が Pl 行 Pc 列にある事を示す。 |
[VT510] 現在頁番号も含めて現在位置を問い合わせる。
種類 | 符号化表現 | 意味 |
---|---|---|
要求 | CSI ? 6 n | 現在位置問い合わせ。 |
応答 | CSI ? Pl ; Pc ; Pp R | 現在位置が Pp 頁目の Pl 行 Pc 列にある事を示す。 |
[VT510] プリンタの状態を問い合わせる。
種類 | 符号化表現 | 状態 | 意味 |
---|---|---|---|
要求 | CSI ? 1 5 n | 問い合わせ | |
応答 | CSI ? 1 3 n | プリンタ未接続 | 再起動またはリセットの後 DTR信号がプリンタポートに確認されていない。 |
応答 | CSI ? 1 0 n | プリンタ準備完了 | DTR信号がプリンタポートで確認されている。 |
応答 | CSI ? 1 1 n | プリンタ準備中 | DTR信号がプリンタポートで確認できていない。 |
応答 | CSI ? 1 8 n | プリンタ使用中 | DTR信号は確認できるが他のセッションが使っている。 |
応答 | CSI ? 1 9 n | プリンタ利用不可 | DTR信号は確認できるが他のセッションに割り当てられている。 |
[VT510] UDK (ユーザー定義キー) がロックされているかどうかを問い合わせる。VT Level 4 のみ。
種類 | 符号化表現 | 意味 |
---|---|---|
要求 | CSI ? 2 5 n | 問い合わせ。 |
応答 | CSI ? 2 0 n | UDK はアンロックされている。 |
応答 | CSI ? 2 1 n | UDK はロックされている。 |
[VT510] キーボードの言語・状態・タイプを問い合わせる。
種類 | 符号化表現 | 意味 |
---|---|---|
要求 | CSI ? 2 6 n | 問い合わせ。 |
応答 | CSI ? 2 7 ; Pn ; Pst ; Ptyp n | キーボードの言語・状態・タイプの通知。 |
Pn は以下の表にあるようにキーボード言語を指定する。 Pst は VT Level 4 以降で利用可能で、キーボード状態を表す。 0 がキーボード準備完了、1 がキーボード未接続、8 がキーボードは他のセッションが使用中である事を表す。 Ptyp はキーボードのタイプを表す。4 が LK450 で 5 が PCXAL である。
Pn | 言語 | Pn | 言語 | Pn | 言語 |
---|---|---|---|---|---|
0 | 不明 | 10 | Swiss French | 29 | Turkish-Q/Turkish |
1 | North American | 11 | Swiss German | 30 | Turkish-F/Turkish |
2 | British | 12 | Swedish | 31 | Hungarian |
3 | Belgian (Flemish) | 13 | Norwegian | 33 | Slovak |
4 | French Canadian | 14 | French | 35 | Polish |
5 | Danish | 15 | Spanish | 36 | Romanian |
6 | Finnish | 16 | Portuguese | 38 | SCS |
7 | German | 19 | Hebrew | 39 | Russian |
8 | Dutch | 22 | Greek | 40 | Latin American |
9 | Italian | 28 | Canadian (English) | - | - |
[VT510] マクロ定義に使うことのできるメモリ量を問い合わせる。 Pn は使えるバイト数を16で割ったもの (切り捨て)。
種類 | 符号化表現 | 意味 |
---|---|---|
要求 | CSI ? 6 2 n | 問い合わせ。 |
応答 | CSI Pn * { | 16 * Pn バイト使うことができる。 |
[VT510] マクロデータのチェックサムを計算する。 これは保存したマクロが他のアプリケーションによって書き換えられていないか 確認する為に使うことができる。
種類 | 符号化表現 | 意味 |
---|---|---|
要求 | CSI ? 6 3 ; Pid n | 問い合わせ。Pid は対応する応答を識別する為の番号 |
応答 | DCS Pid ! ~ D..D ST | D..D は16進4桁のチェックサム |
[VT510] データ完全性のチェックに用いる。前回の応答以降に通信エラーがあったかどうかをチェックする。
種類 | 符号化表現 | 意味 |
---|---|---|
要求 | CSI ? 7 5 n | 問い合わせ。データ完全性フラグのクリア。 |
応答 | CSI ? 7 0 n | 異常なし。前回の応答以降、通信エラーも再起動もなかった。 |
応答 | CSI ? 7 1 n | 異常あり。前回の応答以降、通信エラーがあった。 |
応答 | CSI ? 7 3 n | チェック開始。前回の再起動またはリセット (RIS) 以降で初めての応答。 |
略号 | 符号化表現 | 意味 |
---|---|---|
SU | CSI Pn S | 上にスクロール |
SD | CSI Pn T | 下にスクロール |
SL | CSI Pn SP @ | 左にスクロール |
SR | CSI Pn SP A | 右にスクロール |
[ECMA-48/8.3.147 SU, 8.3.113 SD, 8.3.121 SL, 8.3.135 SR] 表示部に於いてそれぞれ上下左右に表示内容をスクロールする。 引数は行数または文字位置の数を指定する。表示位置は変化しない。
[VT510/DECSCLM] 設定されている時、なめらかなスクロールを実行する。 解除されている時、ジャンプスクロールを実行する。
[ECMA-48/6.7] タブ (tabulation) は文字列を縦横に綺麗に並べる為の仕組みである。 そのために表示部で指定される文字位置はまたは行をタブ位置 (tabulation stop) という。 文字タブ位置 (character tabulation stop) は CTC, HTS, TAC, TALE, TATE, TCC によって設置され、 行タブ位置 (line tabulation stop) は VTS によって設置される。 フィールド (field) はある文字タブ位置から次の文字タブ位置の直前までの文字列を指す。 フィールド内の文字位置の順序、乃至、行内の文字タブ位置の順序はその行の文字進路に従う。
各文字タブ位置には文字列の揃え方を指定する属性がある。 この文書では各属性値に対応する制御機能名 TATE, TALE, TAC, TCC を以てその属性値を表す事にする (T.416/9.1.13 ではそれぞれの属性値に明示的に名前が割り当てられている)。 既定値は TATE である。
属性値 | T.416 alignment | 意味 |
---|---|---|
TATE (終端揃えタブ) | start-aligned | 以降の文字列の最初の文字がタブ位置に来る様に揃える。 |
TALE (始端揃えタブ) | end-aligned | 以降の文字列の最後の文字がタブ位置に来る様に揃える。 |
TAC (中央揃えタブ) | centred | 文字列の最初の文字と最後の文字がタブ位置からできるだけ等距離になる様に揃える。 |
TCC (文字中央タブ) | aligned-around | TCC で指定した揃え文字がタブ位置に来る様に揃える。 揃え文字が文字列中に複数現れるときは最初のものを使う。 揃え文字が文字列中に現れない時は TATE と同様に振る舞う。 |
Note: ECMA-48 4th 以前では水平タブ位置 (horizontal tabulation stop)・垂直タブ位置 (vertical tabulation stop) と呼称していたが、 5th edition での SPD による縦書きなどの対応に従って、 文字タブ位置 (character tabulation stop)・行タブ位置 (line tabulation stop) に改められた。
略号 | 符号化表現 | 意味 |
---|---|---|
HTS | HTS | 現在表示位置に文字タブ位置を設置 |
VTS | VTS | 現在表示行に行タブ位置を設置 |
HTSA廃 | CSI Pn... SP N | 現在表示行の文字タブ位置を設定 |
TATE | CSI Pn1 SP ` | 現在表示行 Pn1 文字目に各属性のタブを設置 |
TALE | CSI Pn1 SP a | |
TAC | CSI Pn1 SP b | |
TCC | CSI Pn1 ; Pn2 SP c | |
TSR | CSI Pn SP d | 現在表示行 Pn 文字目の文字タブ位置を解除 |
CTC | CSI Ps W | タブ位置の操作 |
TBC | CSI Ps g | タブ位置の解除 |
[ECMA-48/7.2.17] CTC, DL, HTS, HTSA, IL, TBC における文字タブ位置の扱いを設定する。
Note: TSM(MULTIPLE) のとき "of the preceding lines and of the following lines" とあるので他のページの行には同時に適用されないのだと思われる。 実際、RLogin の実装ではページ毎に文字タブ位置の設定が記録され、或るページでの設定は別のページに影響を与えない様だ。
[ECMA-48/8.3.62] 現在表示位置に文字タブ位置を設定する。対象の行は TSM によって決まる。
[ECMA-48/8.3.162] 現在表示行に行タブ位置を設定する。
[ECMA-48 3rd/8.2.40] 対象の行の文字タブ位置を全て削除し、引数で指定した位置に文字タブ位置を設定する。 対象の行は TSM で決まる。引数の単位は PUM で決まる。
Note: [ECMA-48/F.8.3] ECMA-48 3rd で導入され 4th で非推奨となり 5th で廃止された。以下に 3rd edition における原文を載せる。
Representation : Table 3 - variable number of numeric parameters; no defualt value.
HTSA is a format effector which causes a horizontal tabulation stop to be set at each position corresponding to a parameter value. All other horizontal tabulation stops in the affected line or lines are cleared. The active position is not affected.
The unit in which the parameters are expressed depends on the setting of the POSITION UNIT MODE (PUM).
The number of lines affected depends on the setting of the TABULATION STOP MODE (TSM).
[ECMA-48/8.3.153 TATE, 8.3.152 TALE, 8.3.151 TAC, 8.3.155 TCC] 現在行と以降の行の Pn1 個目の文字位置に、 それぞれの制御機能に対応した alignment を持つタブ位置を設置する。 TCC の場合は Pn2 に揃える文字の文字コードを指定する。 文字コードの指定は、現在 GL, GR に呼び出されている文字について、その番号 32-127, 160-255 で行う。 指定した文字位置に既にタブ位置が設定されている場合はそれを置き換える。 引数の既定値は指定されない。
[ECMA-48/8.3.156] 現在行と以降の行の Pn 文字目にある文字タブ位置を削除する。引数の既定値は指定されない。
[ECMA-48/8.3.17] 引数に応じて表示部にある複数のタブ位置を設定または解除する。
Ps | 意味 |
---|---|
0 (既定値) | 現在位置に文字タブ位置を設定する |
1 | 現在行に行タブ位置を設定する |
2 | 現在位置の文字タブ位置を解除する |
3 | 現在行の行タブ位置を解除する |
4 | 現在行の全ての文字タブ位置を解除する |
5 | 全ての文字タブ位置を解除する |
6 | 全ての行タブ位置を解除する |
引数 0, 2 または 4 を指定したときに影響を受ける行は TSM による。
[ECMA-48/8.3.154] 引数に応じて表示部にある複数のタブ位置を解除する。
Ps | 意味 |
---|---|
0 (既定値) | 現在位置の文字タブ位置を解除する |
1 | 現在行の行タブ位置を解除する |
2 | 現在行の全ての文字タブ位置を解除する |
3 | 全ての文字タブ位置を解除する |
4 | 全ての行タブ位置を解除する |
5 | 全てのタブ位置を解除する |
引数 0 または 2 を指定したとき影響のある行は TSM による。
略号 | 符号化表現 | 意味 |
---|---|---|
HT | HT | 次の文字タブ位置 |
HTJ | HTJ | フィールド右寄せ・次の文字タブ位置 |
VT | VT | 次の行タブ位置 |
CHT | CSI Pn I | |
CBT | CSI Pn Z | |
CVT | CSI Pn Y | |
STAB | CSI Pn SP ^ |
[ECMA-48/8.3.60] 現在表示位置を次の文字タブ位置に移動する。 更に、その文字タブ位置が TATE, TALE, TAC, TCC によって設置された物の場合、 HT は TATE, TALE, TAC, TCC による位置揃えの対象となる文字列の開始を示す。 文字列は次の HT, CR, NEL によって終わる。
[ECMA-48/8.3.61] 現在フィールドの内容を右寄せし、 現在表示位置を次の文字タブ位置に移動する。 つまり、現在フィールドの内容をシフトし、フィールド先頭の余った文字位置は消去する。
[ECMA-48/8.1.161] 現在表示位置を次の行タブ位置のある行に移動する。列はそのまま。
[ECMA-48/8.3.23] 現在表示位置を Pn 個次の行タブ位置のある行の同じ列に移動する。 Pn の既定値は 1 で、ZDM(DEFAULT) のとき 0 は既定値を意味する。
[ECMA-48/8.3.10] 現在表示位置を文字進路方向に Pn 個次の文字タブ位置に移動する。 Pn の既定値は 1 で、ZDM(DEFAULT) のとき 0 は既定値を意味する。
Note: 次の行の文字タブ位置まで移動できるかどうかは規格の文面からは不明瞭である。 実際の実装ではどの実装も行内での移動になっている。 規格には the n-th following character tabulation stop in the presentation component, according to the character path と書かれている。"表示部内で n 番目" ということは次の行の文字タブ位置まで 移動しても良いような気がするが、一方で "文字進路によって" とも書かれているので行内に限られるとも読める。
[ECMA-48/8.3.7] 現在表示位置を文字進路と逆方向に Pn 個次の文字タブ位置に移動する。 Pn の既定値は 1 で、ZDM(DEFAULT) のとき 0 は既定値を意味する。
[ECMA-48/8.3.144] 表示部において以降の文字列を、引数によって指定されるタブ位置とその性質に従って揃える。 タブ位置のリストは他の規格 (例えば ISO 8613-6) によって提供される。引数の既定値はない。
[T.416/13.1.12] 以降の文章 (別の STAB または行末まで) の配置を指定する。 引数は行レイアウト表 (line layout table) 中のタブ位置を指定する。 文章はそのタブ位置においてそのタブ位置の性質に従って揃えられる。 引数を省略すると文章は次のタブ位置に揃えられる。
[T.416/9.1.13] 行レイアウト表は (index, position, alignment, string) の集合である。 index は 0-9999 で指定する STAB の引数で指定する為のもので、position は非負整数、 alignment は start-aligned, end-aligned, centred, aligned-around の内の一つ、 string は alignment: aligned-around のときに使われる揃える文字列を示す。
略号 | 符号化表現 | 意味 |
---|---|---|
SEE | CSI Ps Q | DCH, ICH, DL, IL のシフト範囲を規定 |
DCH | CSI Pn P | Pn 文字切除 |
ECH | CSI Pn X | Pn 文字消去 |
ICH | CSI Pn @ | Pn 文字挿入 |
DL | CSI Pn M | Pn 行切除 |
IL | CSI Pn L | Pn 行挿入 |
EL | CSI Ps K | 行内の消去 |
EF | CSI Ps N | フィールド内の消去 |
EA | CSI Ps O | 領域内の消去 |
ED | CSI Ps J | 頁内の消去 |
[ECMA-48/7.2.4] EA, ECH, ED, EF, EL で保護領域の文字を消去するかどうかを設定する。
[ECMA-48/7.2.19] DL, IL の動作を指定する。
DCSM の値に従って表示部またはデータ部でシフトが実行される。 行の前後は行進行の方向に従って定めたものである。
[ECMA-48/7.2.9] DCH, ICH の動作を指定する。
DCSM の値に従って表示部またはデータ部でシフトが実行される。 位置の前後は文字進行または文字進路の方向に従って定めたものである。
[ECMA-48/8.3.115] DCH, DL, ICH, IL においてシフト対象の範囲を設定する。 設定は次の SEE が現れるまで有効である。既定値は 0 である。
Ps | シフト対象 |
---|---|
0 | 表示部の現在ページに限られる。 |
1 | 表示部の現在行に限られる。 |
2 | 表示部の現在のフィールドに限られる。 |
3 | 現在の属性化領域に限られる。 |
4 | 表示部全体の関係ある部分からなる。 |
Note: 関係ある部分 (the relevant part of the entire presentation component) が一体何なのかは不明瞭である。 処理系で完全に自由に定義できるのか、或いは、できるだけ表示部の中で大きく取らなければならないのか。
[ECMA-48/8.3.26] 現在位置および次 (HEM(FOLLOWING) のとき) または前 (HEM(PRECEDING) のとき) の Pn - 1 個の文字位置を行から除去する。 つまり、現在位置から Pn 文字次以降の内容が現在位置に向かってシフトされ、シフトによってできた余白は消去される。 シフトの範囲は SEE によって指定される。シフトに依って選択領域・属性化領域・タブ位置がどう影響を受けるかは規格では指定されない。 除去範囲およびシフトは DCSM に応じて表示部またはデータ部で決定される。 引数の既定値は 1 で、ZDM(DEFAULT) のとき引数 0 は既定値 1 を意味する。
[ECMA-48/8.3.38] 現在位置に加えて後ろに続く Pn -1 個の文字位置を消去する。 消去の範囲は DCSM に応じて表示部またはデータ部で決定される。 ERM に依存して保護領域の文字も消去するかどうかが決まる。 引数の既定値は 1 で、ZDM(DEFAULT) のとき引数 0 は既定値 1 を意味する。
[ECMA-48/8.3.64] 現在位置および Pn - 1 個の文字位置を HEM に応じて後または前に挿入する。 つまり、現在位置とその後または前の部分が Pn 個だけシフトされ、 シフト部分の反対側の端にあった Pn 個の文字は失われる。 現在位置は SLH に移動する。シフト対象は SEE によって設定される。 現在位置およびシフト部分の決定は DCSM に応じて表示部またはデータ部で行われる。 選択領域・属性化領域・文字タブ位置の上で ICH をした時の振る舞いは定義されない。 引数の既定値は 1 で、ZDM(DEFAULT) のとき引数 0 は既定値 1 を意味する。
[ECMA-48/8.3.32] 現在行と、VEM に応じて前または後の Pn - 1 行を除去する。 つまり、Pn 行目以降を現在行の方向にシフトさせ、シフト部分の反対側の Pn 行の内容は消去される。 引数の既定値は 1 で、ZDM(DEFAULT) のとき引数 0 は既定値 1 を意味する。 シフト範囲は SEE による。現在位置は現在行の SLH に移動する。 現在位置の移動およびシフトは DCSM に応じて表示部またはデータ部で実行される。 選択領域・属性化領域・文字タブ位置も一緒にシフトされる。 TSM(SINGLE) のとき、消去される行の文字タブ位置は削除される。
[ECMA-48/8.3.67] 現在行の位置に空行を Pn 行挿入する。 つまり、現在行及び、VEM に応じて前または後の Pn - 1 行を Pn 行分だけ現在行から離れる方向にシフトし、 空いた行の内容を消去する。シフト範囲の反対側の Pn 行の内容は失われる。 引数の既定値は 1 で、ZDM(DEFAULT) のとき 0 は既定値 1 を意味する。 現在位置は SLH に移動する。 シフトの範囲は SEE によって決まる。 シフト範囲に含まれる選択領域・属性化領域・タブ位置も一緒にシフトされる。 TSM(SINGLE) の時、挿入される行のタブ位置は消去される。 現在位置及びシフトは DCSM に応じて表示部またはデータ部で行われる。
[ECMA-48/8.3.40 EF, 8.3.37 EA, 8.3.41 EL, 8.3.39 ED] EF・EA・EL・ED はそれぞれ現在のフィールド・属性化領域・行・ページを作用の対象範囲とする。 引数に応じて対象範囲の一部または全ての文字を消去する。
Ps | 消去の対象 |
---|---|
0 | 現在位置と対象範囲の末尾まで |
1 | 現在位置と対象範囲の先頭まで |
2 | 対象範囲の内容全て |
引数の既定値は 0 である。 消去範囲は、DCSM に応じて表示部またはデータ部において決定される。 ERM によって保護領域の文字も消去するかどうかが決まる。
Preset with the last valid SGR attribute (if attributes are not stored)) または属性をそのままにする。
HTSA
■ 以下 xterm の CSI Sequence (未だ纏めていない物)
略号 | 符号化表現 |
---|---|
DECSED | CSI ? Ps J |
DECSEL | CSI ? Ps K |
(IHMT) | CSI Ps ; Ps ; Ps ; Ps T |
REP | CSI Pm b |
MC | CSI Pm i |
DECMC | CSI ? Pm i |
DECDSR | CSI ? Ps n |
DECSTR | CSI ! p |
DECSCL | CSI Ps ; Ps " p |
XTREST | CSI ? Pm r |
DECCARA | CSI Ps ; Ps ; Ps ; Ps ; Pm $ r |
XTSAVE | CSI ? Pm s |
XTWOP | CSI Ps ; Ps ; Ps t |
DECRARA | CSI Ps ; Ps ; Ps ; Ps ; Pm $ t |
DECCRA | CSI Ps ; Ps ; Ps ; Ps ; Ps ; Ps ; Ps ; Ps $ w |
DECEFR | CSI Ps ; Ps ; Ps ; Ps ' w |
DECREQTPARM | CSI Ps x |
DECSACE | CSI Ps * x |
DECFRA | CSI Ps ; Ps ; Ps ; Ps ; Ps $ x |
DECERA | CSI Ps ; Ps ; Ps ; Ps $ z |
DECSERA | CSI Ps ; Ps ; Ps ; Ps $ { |
[VT510/DECSCL] 端末の適合レベルを指定する。 Ps1 には 61-65 の値を指定する。 DECTID の表を考えると 61: vt100, 62: vt200, 63: vt300, 64: vt400, 65: vt500 という対応の筈であるが、 実際には vt510, vt520 のマニュアルを見る限りは 61 を指定すると vt100 互換モードになり、 62 以上を指定するとその装置で使える全ての機能が使えるようになると思われる。 Ps2 (既定値 0) には C1 制御文字を 7bit 表現で送るか 8bit 表現で送るかの設定を指定する。 1 を指定すると 7bit 表現になり、それ以外の時は 8bit 表現になる。
[VT510/S7C1T] アプリケーションに C1 制御文字を 7bit 表現で送る。
[VT510/S8C1T] アプリケーションに C1 制御文字を 8bit 表現で送る。
略号 | 用途 | 符号化表現 |
---|---|---|
DECTSR | 応答 | DCS 1 $ s hh hh hh hh ST |
DDD1 | 応答 | ESC ) 1 |
DDD2 | 応答 | ESC ) B |
DDD3 | 応答 | ESC ( 1 |
[ECMA-48/8.3.24] 0 以外の引数のシーケンスは端末の識別情報を応答するのに使う。 具体的な引数の値と意味については今後設立される登録簿に従う (多分、未だ存在していない)。 引数が 0 の時、端末が識別DAを送ることを要求する。 引数の既定値は 0 である。
互換性: 通常、端末では以下の DA1 として実装されている。
[VT510/DA1, VT520/Page4-3] DA1R を要求する。 DECID は古い形式なので新しいプログラムは DA1 の方を使うべき。
[VT510/DA1] 1つ目の引数は VT Level を表す 60-65 の整数である。 例えば VT510 Level 4 の場合には 64 である。 2つ目以降の引数は有効な機能のリストを表す。
引数 | 機能 |
---|---|
1 | 132列モード |
2 | プリンタ |
4 | Sixel |
6 | DECSED DECSEL DECSERA |
7 | DRCS |
8 | UDK |
9 | NRCS |
12 | Yugoslavian (SCS) |
15 | Technical character set |
18 | Windowing cap |
21 | 水平スクロール |
23 | ギリシャ文字 |
24 | トルコ文字 |
42 | ISO Latin-2 文字セット |
44 | PCTerm |
45 | Soft key map |
46 | ASCII Emulation |
[VT510/DA2] 端末識別コード、ファームウェアバージョン、ハードウェア設定の応答 DA2R を要求する。
[VT510/DA2] Pt は端末識別コード、 Pf はファームウェアバージョン、 Ph ハードウェア設定の応答を返す。 vt510 は Pt = 61 である。 Pf は 10 または 20 であり、 それぞれファームウェアバージョン 1.0 及び 2.0 に対応する。 Ph はキーボードの種類を指定し、0 が STD keyboard で 1 が PC keyboard である。
様々な端末における実装は DA2応答の見方 - Qiita が詳しいが、 確認してみると情報が結構古い。
Version | 応答 |
---|---|
40-94 | 1;0;0 |
95-279 | [01];version;0 |
280-353 | ([012]|24|1[89]|41|6[145]);version;0 |
354-358 | ([012]|24|1[89]|32|41|6[145]);version;0 |
[VT100/DECREQTPARM, VT100/DECREPTPARM]
略号 | 用途 | 符号化表現 |
---|---|---|
DECRQSS | 制御 | DCS $ q Seq ST |
DECRPSS | 応答 | DCS Ps $ r Seq ST |
[VT510/DECRQSS] 指定したシーケンスに対応する設定について問い合わせる。 シーケンスは先頭の CSI を除いて Seq に指定する。 応答は DECRPSS を用いて行われる。 以下のシーケンスが使える。
Seq | 制御機能 | Seq | 制御機能 | Seq | 制御機能 |
---|---|---|---|---|---|
m | SGR | $ s | DECSPRTT | * | | DECSNLS |
p | DECSSL | $ | | DECSCPP | + w | DECSPP |
r | DECSTBM | $ ~ | DECSSDT | SP p | DECSSCLS |
s | DECSLRM | $ } | DECSASD | SP q | DECSCUSR |
t | DECSLPP | ( p | DECSDPT | SP r | DECSKCV |
" p | DECSCL | * p | DECSPPCS | SP t | DECSWBV |
" q | DECSCA | * r | DECSCS | SP u | DECSMBV |
" t | DECSRFR | * s | DECSFC | SP v | DECSLCK |
" u | DECSTRL | * u | DECSCP | ||
$ q | DECSDDT | * x | DECSACE |
[VT510/DECRPSS] DECRPSS に対する応答に使われる。 Ps が 0 の時は要求が有効で、 Seq には要求された制御機能の現在の設定を再現するのに使えるシーケンスを先頭の CSI を除いて指定する。 Ps が 1 の時は要求を認識できないか応答できないことを表し、 Seq は空文字列を指定する。
略号 | 符号化表現 |
---|---|
DECALN | ESC # 8 |
[VT510/DECALN] テストパターン (通常の実装では文字 E) で画面を埋め尽くす。 DECSTBM, DECSLRM をクリアし、カーソルを原点に移動する。
略号 | 符号化表現 |
---|---|
DECSCPP | CSI Pn $ | |
[VT510/DECSCPP] 端末の幅を設定する。引数 (既定値 0) に 0 または 80 を指定した時に 80 列にする。 132 を指定した時に 132 列にする。
[VT510/DECCOLM] 設定した時、端末の幅を 132 列にする。解除した時、端末の幅を 80 列にする。 DECSTBM, DECSLRM, DECLRMM, 及びステータス行の内容を消去する。 DECNCSM の設定に応じて画面の内容を消去する。 これの代わりに DECSCPP を用いる事が推奨されている。
設定した時 DECCOLM を有効にする。解除した時、DECCOLM を無効にする。
[VT510/DECNCSM] DECCOLM によって列数を設定した時の画面消去を抑制する。 設定されている時に消去は起こらない。解除されている時に消去される。 DECSCPP による列の変更に対しては影響を与えない。
略号 | 符号化表現 |
---|---|
DECSCUSR | CSI Ps SP q |
引数1 | カーソルのスタイル |
---|---|
0, 1, 省略 | ブロック・点滅 |
2 | ブロック・常時表示 |
3 | 下線・点滅 |
4 | 下線・常時表示 |
5 | 縦線・点滅 (xterm, RLogin) |
6 | 縦線・常時表示 (xterm, RLogin) |
5 以上 | 行高に対するカーソルの高さの割合を % 単位で指定する (cygwin) |
[all-escapes.txt] カーソルを点滅しない。
[all-escapes.txt] カーソル形状の設定。
cnorm=\e[34h\e[?25h, cvvis=\e[34l, civis=\e[?25l
を登録している。civis はカーソル非表示で cvvis はカーソルをよく見える様にする、
cnorm はカーソルを元に戻すという意味であるから、WYULCURM と同様に解釈して良い気がする。
[xterm] カーソルの点滅を制御する。XTERM_XOR_CURSOR_BLINKS が設定されている時、 ATT610_BLINK か XTERM_CURSOR_BLINK_OPS のどちらか一方のみが設定されている時に点滅する。 XTERM_XOR_CURSOR_BLINKS が解除されている時、少なくとも一方が設定されていれば点滅する。 XTERM_CURSOR_BLINK_OPS はエスケープシーケンスからは制御できずメニューから制御する。 XTERM_XOR_CURSOR_BLINKS は xterm 起動時に指定した物に固定されている。
カーソルを表示する。
[VT510/DECSCNM] 設定されている時に前景色・背景色の既定色を反転する。 説明には設定されている時に明るい背景で解除されている時に暗い背景とも書かれているが、 xterm の実装では設定されている時に反転という実装になっている。
略号 | 符号化表現 |
---|---|
SGR | CSI Pm m |
PLD | PLD |
PLU | PLU |
SCO | CSI Ps SP e |
DECSCA | CSI Ps " q |
Pm にはセミコロン ';' 区切りで複数の番号を指定する。 各番号はそれぞれ対応する描画属性を設定したり解除したりするのに用いられる。 パラメータを省略したときの既定値は 0 である。 番号の詳細については後述する。
[ECMA-48/7.2.8] SGR でそれまでに設定されていた属性を持続するかどうかを決める。
[ECMA-48/8.3.110] 以降に受信する図形文字の回転量を指定する。 引数は 0-7 で指定し、回転量は反時計回りに引数 x 45度となる。既定値は 0
[VT510: DECSCA] 以降の文字に DECSED, DECSEL で消去できない属性を付加する。 引数 0 (既定値) または 2 を指定した時は DECSED, DECSEL で文字を消去できる。 引数 1 を指定すると消去できない。
領域 (area) は DAQ, SSA, ESA, SPA, EPA によって指定された文字位置の連続する集合である。 それぞれの制御機能は領域の開始・終了を示す。 DAQ は属性化領域 (qualified area) を定義する。 属性化領域には様々な属性を付加する事ができる。 SSA, ESA は選択領域 (selected area) を定義する。 選択領域の内容はデータストリームの送信 (transmission) または補助装置への転送 (transfer) の対象となる。 SPA, EPA は保護領域 (guarded area) を定義する。 保護領域の内容は GATM の設定に応じて送信・転送が制限される (guarded)。 保護領域の内容は ERM の設定に応じて消去が制限される (protected)。
略号 | 符号化表現 |
---|---|
DAQ | CSI Ps ; ... o |
SSA | SSA |
ESA | ESA |
SPA | SPA |
EPA | EPA |
[ECMA-48/8.3.25] 引数に応じて属性化領域の属性を指定する。 属性化領域は次の DAQ が現れた時に終了する。
引数 | 意味 |
---|---|
0 | unprotected, unguarded |
1 | protected, guarded |
2 | 図形文字入力 |
3 | 数値入力 |
4 | アルファベット入力 |
5 | 入力内容の右寄せ表示 |
6 | ZERO で埋める |
7 | 文字タブ位置を現在行の現在表示位置に設定する。 |
8 | protected, unguarded |
9 | SP で埋める。 |
10 | 入力内容の左寄せ表示 |
11 | 入力内容の文字順序の逆転 |
[ECMA-48/8.3.138 SSA, 8.3.47 ESA] 選択領域の開始・終了を示す。 SDS, SRS 文字列の内部で使用した時は未定義。
[ECMA-48/8.3.129 SPA, 8.3.46 EPA] 保護領域の開始・終了を示す。 SDS, SRS 文字列の内部で使用した時は未定義。
現在カーソルのある行について、文字の幅・高さを2倍にして表示する。 実際には幅を2倍にして、上半分または下半分を表示する。 ESC # 3 で上半分を、ESC # 4 で下半分を表示する。 この制御機能は、連続する二つの行でそれぞれ ESC # 3 と ESC # 4 を用いて同じ内容を出力することで、 縦横2倍に拡大された文字を表示することを目的とする。 適用前に該当行の文字幅が通常だった場合、行に入り切らなくなった文字は失われる。
現在カーソルのある行について、文字の幅を2倍にして表示する。 適用前に該当行の文字幅が通常だった場合、行に入り切らなくなった文字は失われる。
現在カーソルのある行について、DECDHL, DECDWL で設定された文字の幅・表示を元に戻す。
名称 | Sgr | 名称 | Sgr |
---|---|---|---|
sgrDefault | 0 | sgrProportional | 26 |
sgrBold | 1 | sgrNegaOff | 27 |
sgrFaint | 2 | sgrInvisibleOff | 28 |
sgrItalic | 3 | sgrStrikeOff | 29 |
sgrUnderline | 4 | sgrAnsiColor | 30-37, 40-47 |
sgrBlink | 5 | sgrISO8613_6Color | 38, 48 |
sgrRapidBlink | 6 | sgrFgDefault | 39 |
sgrNega | 7 | sgrBgDefault | 49 |
sgrInvisible | 8 | sgrProportionalOff | 50 |
sgrStrike | 9 | sgrFrame | 51 |
sgrAnsiFont | 10-19 | sgrCircle | 52 |
sgrCharsetASCII | 10 | sgrOverline | 53 |
sgrCharsetL | 11 | sgrFrameOff | 54 |
sgrCharsetR | 12 | sgrOverlineOff | 55 |
sgrFraktur | 20 | sgrAnsiReserved | 56-59 |
sgrDoubleUnderline | 21 | sgrIdeoDecoration | 60-64 |
sgrBoldOff | 22 | sgrIdeoDecorationOff | 65 |
sgrItalicOff | 23 | sgrIdeoDecoration2 | 66-69 |
sgrUnderlineOff | 24 | sgrAixColor | 90-97, 100-107 |
sgrBlinkOff | 25 | sgrDefaultColor | 100 |
名称 | SGR |
---|---|
sgrKittyDecorationClear | 4:0 |
sgrKittyDecorationSingle | 4:1 |
sgrKittyDecorationDouble | 4:2 |
sgrKittyDecorationCurly | 4:3 |
sgrMinttyDecorationDotted | 4:4 |
sgrMinttyDecorationDashed | 4:5 |
sgrKittyDecorationFg | 58違反 |
sgrKittyDecorationFgOff | 59違反 |
sgrMinttySHADOW | 1:2 |
sgrMinttyOVERSTRIKE | 8:7 |
sgrMinttySUPERSCR | 73 |
sgrMinttySUBSCR | 74 |
sgrMinttySUPSUB_CLEAR | 75 |
# 各端末の対応 D=deprecated R=reserved -=undefined vt102=vt100 ;=only_semicolon :=only_colon vt320,vt420=vt220 k=Kitty m=mintty X=独自実装 vt520=vt510 Poderosa: 5,0=それぞれ5,0と同じ効果 | | | | |11111111| | | 1111111111222222222233333333333333344444444444444455555555555555556666666666|777|99999999|00000000| | |0112344444445678890123456789012345678901234567888888901234567888888901234567888888890123456789|345|01234567|01234567| |----------|--:---::::::----:-----------------------------::::::---------::::::----------::::::-----------|---|--------|--------| | | 2 012345 7 012345 012345 012345 | | | | |----------|----------------------------------------------------------------------------------------------|---|--------|--------| | ECMA-48 |** *** **** *****************D***********::::::********* :::::*D*****RRRRRRRRRR**********| | | | | vt100 |** * * * --- | | | | | vt220 |** * * * * ** * --- | | | | | vt510 |** * * ** *** * ** ** --- | | | | | vt525 |** * * ** *** * ** ** ******** ********* * --- | | | | |----------|----------------------------------------------------------------------------------------------|---|--------|--------| | Tera Ter |** * * * * ** * ******** * ********** * ** --- | |********|********| | Poderosa |** * *5** X ** ** ******** ; ;********* ; ;* | |********|********| | mlterm |** *** **** * ***** *********** * ********** * ** * *--- | |********|********| | rxvt |** * * * * ** * ******** ;********* ;* --- | |********|********| | urxvt |** ** **** X****X* ******** ; ;********* ; ;* --- | |********|********| | screen |** *** * * **** * ******** ; ;********* ; ;* --- | |********|********| | iTerm2 |** *** *** * **** * ********* * ********** ; ;* --- | |********|********| | xterm |** *** **** * ***** *********** * ********** * ** --- | |********|********| | Kitty |** ***kkkk * * **** * ********* * ********** * ** --- k kk | |********|********| | tmux |** ***kkkkkk* ** * **** *********** * ********** * ** * *--- k kk | |********|********| | mintty |**m***kkkkkk****m***************** *********** *::********** *::** X****--- k::kk |mmm|********|********| | RLogin |** *** **** ***************************** * ********** * **X*****--- XXXXXX | |********|********| | wt |** *** * ** * **** *********** ; ;********* ; ;* * * | |********|********| | foot |** *** * ** * **** *********** * ********** * ** | |********|********| |----------|----------------------------------------------------------------------------------------------|---|--------|--------| | contra |** ***kkkkkk**** *********************************************************---kkkkkkk**********|mmm|********|********|
設定されている全ての描画属性を無効にし、既定の状態に戻す。
太字、もしくは高輝度の文字。
細字、低輝度の文字、もしくは代替色の文字。
[mintty 3.0.1] 影付き文字。
太字・低輝度属性を解除する。 ansi, xterm では sgrBold/sgrFaint の両方を解除する。
イタリック体。
Fraktur フォントまたは Gothic フォント。
sgrItalic, sgrFraktur を解除。
下線。
二重下線。
[Kitty] 波線。
[mintty comment by mintty @ kovidgoyal/kitty#226] それぞれ点線と破線。
sgrUnderline, sgrDoubleUnderline (対応していれば) を解除。
[Kitty] 下線の色を ISO 8613-6 形式 (以下 SGR 38, SGR 48 を参照) で指定する。mintty が追随した。 iTerm2 も対応している様なコメントを何処かで見たが iTerm2 は対応していない。tmux が追随している。
[Kitty] 下線の色を解除。
遅い点滅。
[ECMA-48/8.3.117] 150/min 未満の速さで点滅させる。
速い点滅。
[ECMA-48/8.3.117] 150/min 以上の速さで点滅させる。
点滅属性を解除する。
ネガ反転、もしくは、前景色と背景色を反転させる。
反転属性を解除する。
不可視。文字を表示しない。
[mintty 3.0.1]
既存の文字を消去せずに上に重ねて描画する。
例えば printf 'hello\r\e[8:7mworld\n'
とすると、hello と world が重なって出力される。
printf '日本語\r\e[8:7ma今日は\n'
)。printf '\e[8:7m_\b^\b+\b=\b|\b/\e[m\n'
)。
上限があるのか実験したらクラッシュした。脆弱性である。printf '\e[8:7maa\baxx\bx\e[m\n'
)。printf '\e[8:7m\e[31mA\e[32m\bx\e[m\n'
)。不可視属性を解除する。
打ち消し線。
打ち消し線解除。
フォントの指定。
番号 | 機能 |
---|---|
10 | 既定のフォント (primary font, default font) |
11 | 代替フォント1 (1st alternative font) |
12 | 代替フォント2 (2nd alternative font) |
13 | 代替フォント3 (3rd alternative font) |
14 | 代替フォント4 (4th alternative font) |
15 | 代替フォント5 (5th alternative font) |
16 | 代替フォント6 (6th alternative font) |
17 | 代替フォント7 (7th alternative font) |
18 | 代替フォント8 (8th alternative font) |
19 | 代替フォント9 (9th alternative font) |
sgrCharsetL, sgrCharsetR で設定された C0:GL に割り当てられた文字を、 通常の ASCII 文字集合に戻す。
PC character set が設定されている時、 PC character set の 00-7F の文字を C0:GL にロッキングシフトする。 但し、C0 の ESC <x1B>, DC1 <x11>, DC3 <x13> はその制御機能を維持し、 それ以外の C0 の文字はその制御機能を失って PC Charset の文字となる。
PC character set が設定されている時、 PC character set の 80-FF の文字を C0:GL にロッキングシフトする。 但し、C0 の ESC <x1B>, DC1 <x11>, DC3 <x13> はその制御機能を維持し、 それ以外の C0 の文字はその制御機能を失って PC Charset の文字となる。
ISO/ASCII character set が設定されている時、 ISO/ASCII character の A0-FF の文字を GL にロッキングシフトする。
[ECMA-48] T.61 で指定される proportional spacing の為に予約されているとしている。 T.61 は International Teletex Services の為の仕様であるが teletex service 自体が終了した為に失効した様だ。 現在は最新版 (1993 年) の文書自体が手に入らない状態にあるようだが、改訂前の 1988 年版は手に入る。
[T.416/13.18] deprecated と指定されている。
sgrProportional (SGR 26) の効果を打ち消す為に使用する。
[T.416/13.18] deprecated
前景色・背景色を設定する。
番号 | 名称 | 機能 | 番号 | 名称 | 機能 |
---|---|---|---|---|---|
30 | black foreground | 前景黒色 | 40 | black background | 背景黒色 |
31 | red foreground | 前景茶色 | 41 | red background | 背景茶色 |
32 | green foreground | 前景緑色 | 42 | green background | 背景緑色 |
33 | yellow foreground | 前景土色 | 43 | yellow background | 背景土色 |
34 | blue foreground | 前景藍色 | 44 | blue background | 背景藍色 |
35 | magenta foreground | 前景紫色 | 45 | magenta background | 背景紫色 |
36 | cyan foreground | 前景碧色 | 46 | cyan background | 背景碧色 |
37 | white foreground | 前景灰色 | 47 | white background | 背景灰色 |
30-37, 40-47 の前景色・背景色を高輝度にした物。
xterm の説明及び Wikipedia によると、これらの文字色・背景色の設定は aixterm に起源を持つ。
番号 | 機能 | 番号 | 機能 |
---|---|---|---|
90 | 前景鼠色 | 100 | 背景鼠色 |
91 | 前景赤色 | 101 | 背景赤色 |
92 | 前景草色 | 102 | 背景草色 |
93 | 前景黄色 | 103 | 背景黄色 |
94 | 前景青色 | 104 | 背景青色 |
95 | 前景桃色 | 105 | 背景桃色 |
96 | 前景水色 | 106 | 背景水色 |
97 | 前景白色 | 107 | 背景白色 |
より多彩な色の指定をする為の SGR 属性である。番号 38, 48 に続けて引数を取る。 規格 ISO 8613-6 (deprecated) と実際の実装に大きな乖離があるので注意を要する。
番号 | 説明 |
---|---|
3 8 : 0 | 前景色 実装依存 |
3 8 : 1 | 前景色 透明 |
4 8 : 1 | 背景色 透明 |
3 8 : 2 : s : R : G : B : dummy : tol : tols (ISO 8613) 3 8 ; 2 ; R ; G ; B (xterm, etc.) |
前景色 RGB |
4 8 : 2 : s : R : G : B : dummy : tol : tols (ISO 8613) 4 8 ; 2 ; R ; G ; B (xterm, etc.) |
背景色 RGB |
3 8 : 3 : s : C : M : Y : dummy : tol : tols (ISO 8613) | 前景色 CMY |
4 8 : 3 : s : C : M : Y : dummy : tol : tols (ISO 8613) | 背景色 CMY |
3 8 : 4 : s : C : M : Y : K : tol : tols (ISO 8613) | 前景色 CMYK |
4 8 : 4 : s : C : M : Y : K : tol : tols (ISO 8613) | 背景色 CMYK |
3 8 : 5 : index (ISO 8613) 3 8 ; 5 ; index (xterm, etc.) |
前景色 indexed colors |
4 8 : 5 : index (ISO 8613) 4 8 ; 5 ; index (xterm, etc.) |
背景色 indexed colors |
ANSI では 38, 48 は reserved とされ、[T.416] に内容を委ねている。
[T.416/13.1.8] 規格では引数の区切はコロン ":" (3/10) とされているが、
xterm実装 38;5;index
(1999) に影響を受けて 実際の実装では ";" が用いられる事が多い。
規格では末端にある空引数は任意に省略可能だが、
区切にセミコロンを用いている場合、引数の終端を判断できないので省略はできない。
[T.416/13.1.8] 引数 38, 48 の直後の区切りが : なのか ; なのかについては議論が分かれる。
38;5:1
や 38;2::255:0:0
などの様になる。[T.416/13.1.8] RGB, CMY, CMYK の第2引数 s は色空間を指定する id で非負の整数[T.412/9.1.4.1] である。 実際の実装では RGB に対応しているものがあるが、 何れも第2引数には対応せず後続の引数の番号が 1 つずつ前にずれる。 →どうやら mintty は第2引数を色深度の情報に使うらしい。つまり100%の時の値。 つまり 0-255 ならば 255 で 0-100 ならば 100 という事なのだろう。 xterm はサブパラメータが3つの場合には RGB で解釈し、 パラメータが4つ以上の時は ISO-8613-6 で解釈する。
[T.416/13.1.8] RGB, CMY の第6引数は無視される。 RGB, CMY, CMYK の第7引数と第8引数はそれぞれ error tolerance と tolerance を測る color space を指定する。 tolerance color space は 0 for CIELUV, 1 for CIELAB である。 実際の実装で RGB, CMY の第6引数以降および CMYK の第7引数以降に対応している物は見られない。 例えば KDE Konsole が 38;2;r;g;b の形式を実装しているが tolerance の引数には対応していない。 逆に KDE Konsole に対して tolerance を送信するとそれが別の意味に解釈されるので問題である。 (tolerance は元々 ISO 8613 形式のドキュメントの印刷などで品質評価に使うものなのだろうと思われる。 端末で表示する場合、品質評価をして出力方法を選択するということは行わないので考慮に入れなくても良いだろう。)
[T.416/13.1.8] 38:5:index は "content colour table" の番号を示す。 [T.412/9.1.4.1] によれば indexed color の番号は非負の整数と定義されている。特に上限は定められていない。 最近の実装では xterm に倣って 256 色である場合が多い。
[T.415/13.1.8] SGR 30-37, 40-47 で使用される色は、 それぞれ indexed color 1, 2, 3, 4, 5, 6, 7, 0 と対応すると定められている。 然しながら、実際の実装では xterm に倣って 0-7 にそのまま対応しているのが普通である。
[T.416/13.1.8] R, G, B, C, M, Y, K のそれぞれの強度の指定方法について述べられていない。 実際の実装では R, G, B は 0-255 の値で指定すると解釈している?
前景色を既定色に戻す。
[ECMA-48] 処理系依存
背景色を既定色に戻す。
[ECMA-48] 処理系依存
前景色及び背景色を既定色に戻す。 rxvt 由来の機能 (と xterm の説明には書かれているが、 rxvt のマニュアル (1998) にこの記述はない)。 sgrAixColor と値が被っているので注意する。 xterm は sgrAixColor が無効の時にこれが利用可能である。
四角形の枠線。
丸囲み線。
枠線・丸囲み線解除。
上線。
上線解除。
[ECMA-48] 将来の標準化のために予約されている。
[ECMA-48] CJK文字に対する装飾を有効にする。ECMA-48 では下線または右側に線というような曖昧な記述であるが、 JIS X 0211 によれば横書きの場合は下線で、縦書きの場合には右側に傍線といった意味である。 これらを組み合わせた場合にどの様な表示になるかについては既定されていない。
番号 | 機能 | 横書き | 縦書き |
---|---|---|---|
60 | 傍線 | 下線 | 右線 |
61 | 二重傍線 | 下二重線 | 右二重線 |
62 | 左傍線 | 上線 | 左線 |
63 | 左二重傍線 | 上二重線 | 左二重線 |
64 | 傍点・強調 | ideogram stress marking |
[JIS X 0211, T.53] CJK文字に対する装飾で 60-64 の時とは、縦書き・横書きの切り替わり方が異なる物である。
Note: ECMA-48 5th edition (1991) には書かれていないが JIS X 0211 にはある。 恐らく、ISO/IEC 6429:1992 で導入された物だろう (JIS X 0211 は ISO/IEC 6429:1992 に "IDT" [ISO/IEC GUIDE 21-1:2005(E) 4.2] と書かれている)。 更に、CCITT Recommendation T.53 (1994) にも記述されていた。T.101/3.3.3 SGR には記述されていない。
番号 | 機能 | 横書き | 縦書き |
---|---|---|---|
66 | 左傍線 | 下線 | 左線 |
67 | 左二重傍線 | 下二重線 | 左二重線 |
68 | 右傍線 | 上線 | 右線 |
69 | 右二重傍線 | 上二重線 | 右二重線 |
[ECMA-48] CJK装飾 60-64, 66-69 で設定された属性を解除する。
[ECMA-48/8.3.92] 下付き文字にする。PLU で解除する。
[ECMA-48/8.3.93] 上付き文字にする。PLD で解除する。
[mintty 3.0.1] 上付き・下付きの解除
"モノクロモードのみ"とのことである)。 2 は細字の代わりに縦線が付加される。 個別にリセットする機能については言及がない。 他に 16 は不可視 8 と同じで、17-23 は 31-37 と同じ。
どんな機能が存在するかだけでどの機能がどこで実装されているかなどについての記述がない。 また、機能自体も不明瞭な点が存在するし、情報自体が怪しかったり古かったりするので注意する。
ここでは xterm に於ける実装を基本形としてキー入力の符号化表現について説明する。以下はカーソルキーである。
keyname | 符号化表現 |
---|---|
insert | CSI 2 ~ |
delete | CSI 3 ~ |
home | CSI H / SS3 H |
end | CSI F / SS3 F |
prior | CSI 5 ~ |
next | CSI 6 ~ |
up | CSI A / SS3 A |
down | CSI B / SS3 B |
right | CSI C / SS3 C |
left | CSI D / SS3 D |
begin | CSI E / SS3 E |
keyname | 符号化表現 | keyname | 符号化表現 |
---|---|---|---|
f1 | SS3 P | f11 | CSI 2 3 ~ |
f2 | SS3 Q | f12 | CSI 2 4 ~ |
f3 | SS3 R | f13 | CSI 2 5 ~ |
f4 | SS3 S | f14 | CSI 2 6 ~ |
f5 | CSI 1 5 ~ | f15 | CSI 2 8 ~ |
f6 | CSI 1 7 ~ | f16 | CSI 2 9 ~ |
f7 | CSI 1 8 ~ | f17 | CSI 3 1 ~ |
f8 | CSI 1 9 ~ | f18 | CSI 3 2 ~ |
f9 | CSI 2 0 ~ | f19 | CSI 3 3 ~ |
f10 | CSI 2 1 ~ | f20 | CSI 3 4 ~ |
略号 | 符号化表現 |
---|---|
DECKPAM | ESC = |
DECKPNM | ESC > |
[VT510/DECARM] 設定されている時、キーを 0.5 秒以上押し続けるとキーを離すまでそのキーの入力を繰り返す。
[VT510/DECCKM] 設定されている時、矢印キーによる入力を SS3 A 等の形式で送信する。 解除されている時、矢印キーによる入力を CSI A 等の形式で送信する。
[VT510/DECNKM] 設定されている時、テンキーでエスケープシーケンスを送る (DECKPAM)。 解除されている時、テンキーで通常の文字を送る (DECKPNM)。
[VT510/DECKPAM] テンキーでエスケープシーケンスを送る。
[VT510/DECKPNM] テンキーで通常の文字を送る。
[VT510/DECBKM] 設定されている時、Back キーで BS を送信する。 解除されている時、Back キーで DEL を送信する。
[xterm] 設定されている時、貼り付けによる入力内容を CSI 2 0 0 ~ と CSI 2 0 1 ~ で囲んでアプリケーションに送信する。
[xterm] マニュアルには書いてあるが手許の xterm#348 (cygwin), xterm#334 (fc30) では 1050,1051,1060,1061 しか実装されていない。 少なくとも 1050,1051,1060,1061 は排他的であった。 つまり、1つを SM/RM すると他は RM される。 6つが全て排他的であると考えるのが自然だろう。
TERM=xterm-hp infocmp -d xterm | grep -v 'NULL\.$'
で
xterm-hp 特有の設定を表示できる。
XTERM_SUN_FKEYS については同様に terminfo xterm-sun を見よと書かれている。
XTERM_SCO_FKEYS については何も書かれていないが terminfo xterm-sco があった。
XTERM_LEGACY_FKEYS については xterm-xfree86 及び xterm-xf86-* が対応する terminfo だろうか。
XTERM_VT220_FKEYS については xterm-vt220 がある。
keyname | xterm | xterm-sun | xterm-hp | xterm-sco |
---|---|---|---|---|
up | SS3 A | SS3 A | ESC A | CSI A |
down | SS3 B | SS3 B | ESC B | CSI B |
right | SS3 C | SS3 C | ESC C | CSI C |
left | SS3 D | SS3 D | ESC D | CSI D |
insert | CSI 2 ~ | CSI 2 z | ESC Q | CSI L |
delete | CSI 3 ~ | CSI 3 z | ESC P | DEL |
home | SS3 H | CSI 2 1 4 z | ESC h | CSI H |
end | SS3 F | CSI 2 2 0 z | ESC F | CSI F |
prior | CSI 5 ~ | CSI 2 2 2 z | ESC T | CSI I |
next | CSI 6 ~ | CSI 2 1 6 z | ESC S | CSI G |
mouse | CSI < | CSI M | CSI M | CSI > M |
keyname | v32,33 | keyname | v32,33,333 | keyname | v32,33,333 |
---|---|---|---|---|---|
f1 | CSI 1 1 ~ | f13 | CSI 2 5 ~ | f17 | CSI 3 1 ~ |
f2 | CSI 1 2 ~ | f14 | CSI 2 6 ~ | f18 | CSI 3 2 ~ |
f3 | CSI 1 3 ~ | f15 | CSI 2 8 ~ | f19 | CSI 3 3 ~ |
f4 | CSI 1 4 ~ | f16 | CSI 2 9 ~ | f20 | CSI 3 4 ~ |
keyname | xterm-vt220 | keyname | xterm-vt220 |
---|---|---|---|
f13 | CSI 2 5 ~ | f17 | CSI 3 1 ~ |
f14 | CSI 2 6 ~ | f18 | CSI 3 2 ~ |
f15 | CSI 2 8 ~ | f19 | CSI 3 3 ~ |
f16 | CSI 2 9 ~ | f20 | CSI 3 4 ~ |
[xterm] modifyOtherKeys 等に値を設定する。Ps1 には影響を受けるキーの種類を指定する。 Ps2 には修飾の形式を指定する。 XTMODKEYS で Ps2 を省略すると初期値を設定する。 _XTUNMODKEYS は -1 (修飾無効) に設定する。 引数を全く指定しないと全ての設定を初期値にする。
Ps1 | 設定名 |
---|---|
0 | modifyKeyboard |
1 | modifyCursorKeys |
2 | modifyFunctionKeys |
3 | modifyKeypadKeys |
4 | modifyOtherKeys |
5 | modifyStringKeys |
Ps2 | CSI F | SS3 F | CSI Ps F | CSI 2 7 ; 1 ; code F |
---|---|---|---|---|
-1 | 修飾無効 (Fn key は修飾により番号がずれる) | |||
0 | CSI mod F | SS3 mod F | CSI Ps ; mod F | CSI 2 7 ; mod ; code F |
1 | CSI mod F | |||
2 | CSI 1 ; mod F | |||
3 | CSI > 1 ; mod F | CSI > Ps ; mod F | CSI > 2 7 ; mod ; code F |
F は基本的には 1 + (ビットフラグ) で計算される整数であるが、 それぞれのビットフラグに割り当てる修飾キーは実装により違いが見られる。 また、実際にはキーボード上の Alt が概念上の Meta として取り扱われつつも、 やはり Alt として送信されたり等、Alt と Meta の間に混乱が見られる。
実際の実装で様々なキーの組み合わせに対してどのようなコードを送るかはまちまちである。
以下に各実装において実際のキーボード入力をどの様なキーの組み合わせとして表現・送信するかをまとめる。
入力 | xterm | RLogin | contra |
---|---|---|---|
a | a/A | a/A | a/A |
S-a | S-A/S-a | S-A | A/a |
C-a | C-a/C-A | C-A | C-a |
C-S-a | C-S-A/C-S-a | C-S-A | C-S-a |
1 | 1 | 1 | 1 |
S-1 | ! | S-1 | ! |
C-1 | C-1 | C-1*1 | C-1 |
C-S-1 | C-S-! | C-S-1*1 | C-! |
[xterm] これらはマウスイベントの通知を制御する。 上記5つのモードは排他的であり、何れかを設定すると他の物は解除される。何れかの解除シーケンスを送ると全て解除される。 それぞれどの範囲のマウスイベントまで通知するかで異なる。 XTERM_X10_MOUSE はマウスボタンの押下が通知される。 XTERM_VT200_MOUSE と XTERM_VT200_HIGHLIGHT_MOUSE はマウスボタンの押下・解放が通知される。 XTERM_VT200_HIGHLIGHT_MOUSE の場合にはマウスボタンを押している間は選択範囲がハイライトされ、 ボタンが解放された時には他のモードとは異なるシーケンス (選択イベント) を通知する。 XTERM_BTN_EVENT_MOUSE はマウスボタンを押下している間のマウス移動も通知する。 XTERM_ANY_EVENT_MOUSE は更にマウスボタンが離れている時の移動も通知する。 マウス移動に関しては通常はセル移動の瞬間に発火するが、 XTERM_PIXEL_POSITION_MOUSE を用いている場合はピクセル移動毎に発火する。 マウスイベントは以下のシーケンスを用いて送信される。 全て解除されているとマウスイベントは通知されない。
モード | 押下 | 解放 | 選択 | ドラッグ | 移動 |
---|---|---|---|---|---|
XTERM_X10_MOUSE | ★ | ||||
XTERM_VT200_MOUSE | ★ | ★ | |||
XTERM_VT200_HIGHLIGHT_MOUSE | ★ | ★ | |||
XTERM_BTN_EVENT_MOUSE | ★ | ★ | ★ | ||
XTERM_ANY_EVENT_MOUSE | ★ | ★ | ★ | ★ |
[xterm] これらのモードはマウスイベントの通知に使われるシーケンスの形式を変更するのに使う。 上記3つのモードはは排他的であり、 何れかを設定すると他は解除されるし、何れかを解除しようとすると全て解除される。 XTERM_EXT_MODE_MOUSE は utf-8 形式を指定する。 URXVT_EXT_MODE_MOUSE は urxvt 形式を指定する。 XTERM_SGR_EXT_MODE_MOUSE は SGR 形式を指定する。 それぞれの形式に対して以下のようなシーケンスで (選択以外の) マウスイベントが通知される。 XtermX10MouseR は何れも設定されていない時に使われる既定のシーケンスである。
略号 | 形式 | Sequence |
---|---|---|
XtermX10MouseR | 既定 | CSI M C C C |
XtermExtModeMouseR | utf-8 | CSI M C8 C8 C8 |
UrxvtExtModeMouseR | urxvt | CSI Ps ; Pn ; Pn M |
XtermSgrExtModeMouseR | SGR | CSI < Ps ; Pn ; Pn M |
XtermSgrExtModeReleaseMouseR | SGR | CSI < Ps ; Pn ; Pn m |
解放イベントを通知する時、 XTERM_SGR_EXT_MODE_MOUSE が設定されている場合は XtermSgrExtModeReleaseMouseR が使われ、 第一引数には離されたボタンに対応する値が使用される。 それ以外の設定の時はイベントは第一引数を 3 として通知される (どのマウスボタンが離されたかを検知する手立てはない)。
名称 | 数値 | 動作 |
---|---|---|
MB1 | 0 | 左ボタン (button 1) が押下された時に発生 |
MB2 | 1 | 中ボタン (button 2) が押下された時に発生 |
MB3 | 2 | 右ボタン (button 3) が押下された時に発生 |
Release | 3 | マウスボタンが離れた時・マウスボタンが離れている時のマウス移動で使用 |
MB4 | 64 | マウスホイールが上に回転した時に発生 |
MB5 | 65 | マウスホイールが下に回転した時に発生 |
名称 | 数値 | 修飾キー・説明 |
---|---|---|
Shift | 4 | Shift |
Meta | 8 | Meta |
Control | 16 | Control |
Motion | 32 | マウス移動 |
XTERM_VT200_HIGHLIGHT_MOUSE が設定されている時、 マウスボタンを離した時に解放イベントの代わりに選択イベントが発生する。 選択イベントは形式に応じて以下のシーケンスを用いて通知される。 第1引数・第2引数はマウスボタンを離した位置 (選択の終点) を表す (その他の通知の第2引数・第3引数に対応する)。
略号 | 形式 | 符号化表現 |
---|---|---|
XtermX10HighlightMouseR | 既定 | CSI t C C |
XtermExtModeHighlightMouseR | utf-8 | CSI t C8 C8 |
UrxvtExtModeHighlightMouseR | urxvt | CSI Pn ; Pn t |
XtermSgrExtModeHighlightMouseR | SGR | CSI < Pn ; Pn t |
xterm の振る舞いを見るとフォーカスを得ると CSI O CSI I を送る。フォーカスを失うと CSI O を送る。 1000,1002,1003 とは独立の設定である。修飾キーによる修飾は行われない様である。
互換性: xterm
ロケータ位置 (マウスポインタの位置に対応すると考えて良い) を報告する仕組み。 設定でピクセル単位での位置検出もできる。
[STD-070/p1019] ロケータ報告を有効にする。認識できない引数が指定された場合には何もしない。
Ps | 説明 |
---|---|
0,既定 | 無効 |
1 | 有効 |
2 | 1回だけ有効。その後無効化。 |
Pu | 説明 |
0,2,既定 | 座標を文字単位で報告 |
1 | 座標をピクセル単位で報告 |
[STD-070/p1021] ロケータ報告。 Pe はロケータ報告を起こした出来事を指定する。 DECEFR の Notes を読む限り "ロケータ位置が未定義" というのは、 ロケータが座標系の外にある時、つまりターミナルの画面の上にない時に相当すると思われる。 DECEFR の Notes 2/para1 によると、ロケータが座標範囲外に出た時は Pe = 10 ではなくて、Pe = 0 になる。
Pe | 説明 |
---|---|
0 | DECRQLP を受信したがロケータ位置が未定義または無効 |
1 | DECRQLP を受信 |
2 | 左ボタンが押された |
3 | 左ボタンが離された |
4 | 中ボタンが押された |
5 | 中ボタンが離された |
6 | 右ボタンが押された |
7 | 右ボタンが離された |
8 | 第4ボタンが押された |
9 | 第4ボタンが離された |
10 | ロケータが検出範囲の外側に出た |
Pb は現在押されているボタンの集合を表現する。以下の値の合計。既定値は 0
Pb | 説明 |
---|---|
1 | 左ボタン |
2 | 中ボタン |
4 | 右ボタン |
8 | 第4ボタン |
Pr, Pc, Pp は座標 (行, 列, ページ)。
ロケータが無効の時は第2パラメータ以降は送信しない。 ロケータが検出範囲外の時は座標パラメータは省略される。
[STD-070/p1023] その場でロケータ位置報告 (DECLRP) を要求する。
Ps | 説明 |
---|---|
0,1,既定 | DECLRP を1回要求 |
STD-070 にはターミナルはいつでも DECLRP を送信できると書かれているが、 DECLRP を送信する為には定義されていなければならない。
[STD-070/p1024] ロケータ報告を行うイベントの種類を指定する。 Pm は以下のパラメータの組み合わせ。
Ps | 説明 |
---|---|
0 | DECRQLP にのみ応答。検出範囲は初期化 |
1 | ボタンが押された時の報告を有効化 |
2 | ボタンが押された時の報告を無効化 |
3 | ボタンが離された時の報告を有効化 |
4 | ボタンが離された時の報告を無効化 |
[STD-070/p1025] ロケータの検出範囲の矩形を設定する。 検出範囲は一回限りで DECLRP で報告が行われた後に解除される。 座標は左上が (1,1) で、省略したパラメータの既定値は現在のロケータの位置である。 但し、パラメータなしの場合には全領域を検出範囲とする。 矩形の境界は inclusive である。
現在のロケータの位置が検出範囲外の時は、その場で DECLRP(10) を送信して、検出範囲を解除する。 現在のロケータが座標範囲外の場合、 座標パラメータが省略されている時はロケータが座標範囲に入った時に改めて検出範囲を設定し、 省略されていない時はその場で DECLRP(0) を送信する。 現在ロケータが無効の時には、その場で DECLRP(0) を送信する。
ISO 2022 は文字集合を動的に切り替える事で様々な文字を扱える様にする枠組みである。 7 bit または 8 bit のコードが幾つかの領域に分けられていて、 それぞれの領域毎に文字集合の切り替えを行う。
C0領域 | 00/00 - 01/15 | 制御文字 |
GL領域 | 02/01 - 07/14 | 図形文字 |
C1領域 | 08/00 - 09/15 | 制御文字 |
GR領域 | 10/00 - 15/15 | 図形文字 |
但し、SP (02/00) 及び DEL (07/15) は GL 領域には含まれない事に注意する。 SP 及び DEL は文字集合切り替えの状態に拘らず不変である。 文字集合の切り替えには ESC シーケンスを用いる。 C0領域に割り当てることのできる文字集合は必ず 01/11 が ESC になっていて、 文字集合の切り替えができなくなる事はない。
ACD は通信の初めに文字コードで有効な G0 G1 G2 G3 から GL GR へのシフトの構造を伝達する為の制御機能である。 Ft に指定する文字で構造を指定する。
番号 | 符号化表現 | 機能(7bit) | 機能(8bit) | |
---|---|---|---|---|
1 | ESC SP A | (GL=G0 固定) | ||
2 | ESC SP B | SI,SO | LS0,LS1R | |
3 | ESC SP C | 使用不可 | (GL=G0, GR=G1 固定) | |
4 | ESC SP D | SI,SO | ||
5 | ESC SP E | ECMA-35/11 にある 7/8bit 変換完全対応? | ||
6 | ESC SP F | C1 を ESC Fe で符号化 | S7C1T: C1 を ESC Fe で符号化 | |
7 | ESC SP G | S8C1T: C1 を CR で符号化 | ||
8 | ESC SP H | 94文字集合のみ使用可能 | ||
9 | ESC SP I | 94/96文字集合の何れも使用可能 | ||
10 | ESC SP J | (8bitでも)7bit符号を使用 | ||
11 | ESC SP K | 使用不可 | 8bit符号を使用 | |
12 | ESC SP L | ANSI conformance Lv1 (dpANS X3.134.1), ECMA-43 Lv1 | ||
13 | ESC SP M | ANSI conformance Lv2 (dpANS X3.134.1), ECMA-43 Lv2 | ||
14 | ESC SP N | ANSI conformance Lv3 (dpANS X3.134.1), ECMA-43 Lv3 | ||
15 | ESC SP O | (予約) | ||
16 | ESC SP P | SI | LS0 | |
17 | ESC SP Q | (予約) | ||
18 | ESC SP R | SO | LS1 | |
19 | ESC SP S | LS1R | ||
20 | ESC SP T | LS2 | LS2 | |
21 | ESC SP U | LS2R | ||
22 | ESC SP V | LS3 | LS3 | |
23 | ESC SP W | LS3R | ||
24 | ESC SP X | (予約) | ||
25 | ESC SP Y | (予約) | ||
26 | ESC SP Z | SS2 (GL) | ||
27 | ESC SP [ | SS3 (GL) | ||
28 | ESC SP \ | - | SS2,SS3(GR) | |
29-63 | ... | (予約) | ||
番号 | 符号化表現 | 機能(7bit) | 機能(8bit) | |
(私用ACS) | ESC SP 6 | S7C1R (DECTC1) | ||
(私用ACS) | ESC SP 7 | (無効) | S8C1R (DECAC1) |
ISO/IEC 2022 の文字集合は6種類に分類される。 C0制御文字集合、C1制御文字集合、94図形文字集合、96図形文字集合、 94n図形文字集合、96m図形文字集合である。 C0/C1制御文字集合は、それぞれC0/C1領域に直接割り当てて使えるようにする("指示"という)。 94/96/94n/96n図形文字集合は、 一端G0,G1,G2,G3と呼ばれる領域の何れかに割り当ててから("指示"という)、 更に、G0,G1,G2,G3から2つをGL,GRに割り当てて使う("シフト"という)。 これらの指示およびシフトは、 それぞれの文字集合の種類毎に用意された制御機能を用いて行う。
文字集合の種類 | 指示領域 | |||||
---|---|---|---|---|---|---|
C0 | C1 | G0 | G1 | G2 | G3 | |
C0制御文字集合 | CZD | |||||
C1制御文字集合 | C1D | |||||
94図形文字集合 | GZD4 | G1D4 | G2D4 | G3D4 | ||
96図形文字集合 | G1D6 | G2D6 | G3D6 | |||
94n図形文字集合 | GZDM4 | G1DM4 | G2DM4 | G3DM4 | ||
96n図形文字集合 | G1DM6 | G2DM6 | G3DM6 |
Designation of multiple-byte graphic character sets
Set は I* F の形式を持つ。 文字集合の種類毎に、それぞれの文字集合に一意な Set が与えられる。
[ECMA-35/14.3.2, Note 46] GZDM4 については歴史的経緯から一部の文字集合 (Set = @, A, B) について ( を省略して ESC $ Set とする事になっている。 また [T.61/E.3.1.2] は DRCS の場合にも ( を省略するとしている。
更に、登録文字集合に改訂 (文字の追加) があった場合には、 改訂版を指定する為に IRR を前述の指示機能の直前に指定する。 @-~ で改訂番号1-63を指定する。 互換性の為に改訂は文字の追加のみで文字の削除や置換は行わないとする。
規格上は GZD6, GZDM6 に相当する制御機能は定義されていない。 ISO/IEC 2022 - Wikipedia によると初期の版ではここに追加の 94 文字集合を G0 に指示する機能が割り当てられていたが、 96文字集合が導入された際に取り除かれたそうだ。確認してみると、ECMA-35 3rd までは機能があった (当時は制御機能に名前は割り当てられていなかった) が ECMA-35 4th でなくなった様である。 一方で DEC による実装では96文字集合の DRCS に対して使うことができた気がしたが今探しても見つからない[要検証]。
[ECMA-35/8.3.1] それぞれ G0, G1, G2, G3 符号要素を GL 領域に呼び出す。 94文字または94n文字集合を呼び出した時は、 0x20 及び 0x7F にはそれぞれ SP と DEL が呼び出される。 96文字または96n文字集合を呼び出している時は、 SP 及び DEL は符号化表現を持たない。 SI 及び SO は 7-bit 符号の時に使われる LS0, LS1 の別名。
[ECMA-35/8.3.2] それぞれ G1, G2, G3 符号要素を GR 領域に呼び出す。 94文字または94n文字集合を呼び出した時は、 0xA0 及び 0xFF は使ってはならない。
[ECMA-35/8.3.2] それぞれ G2, G3 を単一シフト領域に一時的に呼び出す。 単一シフト領域は GL または GR で処理系定義である。 直後に来る図形文字1文字分をこのシフト状態で処理しすぐに この制御機能を呼び出す前のシフト状態に戻る。
この制御機能の直後には単一シフト領域における 図形文字1文字分を表すバイトが厳密に来なければならない。 特に 94/94n文字集合をGLに呼び出した時は 2/1 及び 7/15 は許されない事に注意する。
ToDo
Set | 名称 |
---|---|
1 | DDD3, DDD1 (terminal-to-host) |
Set | IR | 名称 |
---|---|---|
@ | IR-1 | C0 Set of ISO 646 |
A | IR-7 | NATS, C0 Set |
C | IR-26 | IPTC, C0 Set |
D | IR-36 | C0 Set of ISO 646 with SS2 instead of IS4 |
B | IR-48 | INIS, Control Set |
F | IR-74 | C0 for Japanese standard JIS C 6225-1979 |
G | IR-104 | Minimum C0 Set for ISO 4873 |
E | IR-106 | Teletex primary set of Control Functions CCITT Rec. T.61 |
H | IR-130 | C0 Set of ISO 646 without SI and SO ASMO-662 and COMECON ST SEV 358 |
I | IR-132 | Primary Control Set of Data Syntax I of CCITT Rec. T.101 |
J | IR-134 | Primary Control Set of Data Syntax II of CCITT Rec. T.101 |
K | IR-135 | Primary Control Set of Data Syntax III of CCITT Rec. T.101 |
L | IR-140 | C0 Set of ISO 646 with EM replaced by SS2 - Czechoslovak Standard CSN 369102 |
Set | IRR | IR | 名称 |
---|---|---|---|
E | IR-40 | Additional Control Functions for Bibliographic Use according to DIN 31626 | |
@ | IR-56 | Attribute Control set for UK Videotex British Telecom | |
B | IR-67 | Additional Control Functions for Bibliographic Use according to ISO 6630 | |
A | IR-73 | Attribute Control Set for Videotex CCITT | |
C | IR-77 | C1 Control Set of ISO 6429-1983 | |
G | IR-105 | Minimum C1 Set for ISO 4873 | |
H | IR-107 | Teletex Supplementary Set of Control Functions CCITT Rec. T.61 | |
B | @ | IR-124 | Upward Compatible Version of ISO 6630 (Registration 67) |
D | IR-133 | Supplementary Control Set of Data Syntax I of CCITT Rec. T.101 | |
F | IR-136 | Supplementary Control Set of Data Syntax III of CCITT Rec. T.101 |
Set | IR | 名称 |
---|---|---|
@ | IR-2 | IRV of ISO 646 : 1983 |
A | IR-4 | ISO 646, British Version BSI 4730 |
B | IR-6 | ISO 646, USA Version X3.4 - 1968 |
C | IR-8-1 | NATS, Primary Set for Finland and Sweden |
D | IR-8-2 | NATS, Secondary Set for Finland and Sweden |
E | IR-9-1 | NATS, Primary Set for Denmark and Norway |
F | IR-9-2 | NATS, Secondary Set for Denmark and Norway |
G | IR-10 | ISO 646, Swedish Version SEN 850200 (Ann. B) |
H | IR-11 | ISO 646, Swedish Version for Names, (SEN 850200 Ann.C) |
I | IR-13 | Katakana Character Set JIS C6220-1969 |
J | IR-14 | ISO 646, Japanese Version for Roman Characters JIS C6220-1969 |
K | IR-21 | ISO 646, German Version DIN 66083 |
L | IR-16 | ISO 646, Version for Portuguese, ECMA (Olivetti) |
M | IR-39 | Character Set for African Languages, DIN 31625 and ISO 6438 |
N | IR-37 | Basic Cyrillic Character Set, ECMA (Cii Honeywell-Bull) and ISO 5427 |
O | IR-38 | Extended Graphic Character Set for Bibliography, DIN 31624 |
P | IR-53 | Extended Graphic Character Set for Bibliography ISO 5426-1980 |
Q | IR-54 | Extension of the Cyrillic Character Set of Reg. 37, ISO 5427-1981 |
R | IR-25 | ISO 646, French Version, NF Z 62010-1973 (Withdrawn in April 1985) |
S | IR-55 | Greek Character Set for Bibliography, ISO 5428-1980 |
T | IR-57 | Coded Character Set for Information Interchange, Standard Chinese GB 1988-80 |
U | IR-27 | Latin-Greek Character Set, ECMA (Honeywell-Bull) |
V | IR-47 | Character Set for Viewdata and Teletext (UK) |
W | IR-49 | INIS, Sub-set of the IRV |
X | IR-31 | Greek Character Set for Bibliography, ISO 5428 |
Y | IR-15 | ISO 646, Version for Italian, ECMA (Olivetti) |
Z | IR-17 | ISO 646, Version for Spanish, ECMA (Olivetti) |
[ | IR-18 | Character Set for Greek, ECMA (Olivetti) |
\ | IR-19 | Latin-Greek Character Set, ECMA (Olivetti) |
] | IR-50 | INIS, Non-standard Extension of Reg. 49 |
^ | IR-51 | INIS, Cyrillic Extension of Reg. 49 |
_ | IR-59 | Arabic Character Set CODAR-U IERA (Morocco) |
` | IR-60 | ISO 646, Norwegian Version NS 4551 |
a | IR-61 | Norwegian Character Set, Version 2, NS 4551 (Withdrawn in June 1987) |
b | IR-70 | Supplementary Set for Videotex, CCITT |
c | IR-71 | Second Supplementary Set for Videotex (Mosaic), CCITT |
d | IR-72 | Third Supplementary Set for Videotex, (Mosaic), CCITT (superseded by Reg. 173) |
IR-173 | Third supplementary set of Mosaic Characters/ Videotex and Facsimile | |
e | IR-68 | APL Character Set, Canadian APL Working Group |
f | IR-69 | ISO 646, French Version NF Z 62010-1982 |
g | IR-84 | ISO 646, Version for Portuguese, ECMA (IBM) |
h | IR-85 | ISO 646, Version for the Spanish languages, ECMA (IBM) |
i | IR-86 | ISO 646, Hungarian Version Hungarian standard 7795/3 |
j | IR-88 | Greek Character Set ELOT, Hellenic Organization for Standardization (Withdrawn in November 1986) |
k | IR-89 | 7-bit Arabic Code for Information Interchange, Arab standard ASMO-449, ISO 9036 |
l | IR-90 | Supplementary Set for Use with Registration No.2 |
m | IR-91 | Japanese OCR-A graphic set JIS C6229-1984 |
n | IR-92 | Japanese OCR-B Graphic Set JIS C6229-1984 |
o | IR-93 | Japanese OCR-B, Additional Graphic Set, JIS C6229-1984 |
p | IR-94 | Japanese Basic Hand-printed Graphic Set for OCR JIS C6229-1984 |
q | IR-95 | Japanese Additional Handprinted Graphic Character Set for OCR JIS C6229- 1984 |
r | IR-96 | Katakana hand-printed Graphic Character Set for OCR JIS C6229-1984 |
s | IR-98 | E13B Graphic Character Set Japanese National Committee for ISO/TC97/SC2 |
t | IR-99 | Supplementary Set of Graphic Characters for Videotex and Teletext ANSI and Teletext ANSI and CSA (Withdrawn in November 1986) |
u | IR-102 | Teletex Primary Set of Graphic Characters CCITT Rec. T.61 |
v | IR-103 | Teletex Supplementary Set of Graphic characters CCITT Rec. T.61 |
w | IR-121 | Alternate Primary Graphic Set No. 1 CSA Standard Z 243.4-1985 |
x | IR-122 | Alternate Primary Graphic Set No.2 CSA Standard Z 243.4-1985 |
y | IR-137 | Mosaic-1 Set of Data Syntax I of CCITT Rec. T.101 |
z | IR-141 | Serbocroatian and Slovenian Latin Alphabet |
{ | IR-146 | Serbocroatian Cyrillic Alphabet |
| | IR-128 | Supplementary Set of graphic Characters for CCITT Rec. T.101, Data Syntax III |
} | IR-147 | Macedonian Cyrillic Alphabet |
! @ | IR-150 | Greek Primary Set of CCITT |
! A | IR-151 | Character Set of Cuba |
! B | IR-170 | Invariant characters (82) of ISO/IEC 646 |
! C | IR-207 | Variant of the ISO 7-bit kbdd character set for the Irish Gaelic language |
! D | IR-230 | Turkmen Alphabet |
! E | IR-231 | American National Standard Extended Latin Alphabet Coded Character Set for Bibliographic Use (ANSEL) |
! F | IR-232 | Turkmen character set for 8-bit kbds |
Set | IR | 名称 |
---|---|---|
@ | IR-111 | Right-hand Part of the Latin/Cyrillic Alphabet ECMA-113 (Version of June 1986) |
A | IR-100 | Right-hand Part of Latin Alphabet No.1 ISO 8859/1, ECMA-94 |
B | IR-101 | Right-hand Part of Latin Alphabet No.2 ISO 8859/2, ECMA-94 |
C | IR-109 | Right-hand Part of Latin Alphabet No.3 ISO DIS 8859/3, ECMA-94 |
D | IR-110 | Right-hand Part of Latin Alphabet No.4 ISO DIS 8859/4, ECMA-94 |
E | IR-123 | General Purpose Supplementary Graphic Set CSA Standard Z 243.4-1985 |
F | IR-126 | Right-hand Part of the Latin/Greek Alphabet Standard ELOT 928, ECMA-118, ISO DIS 8859/7 |
G | IR-127 | Right-hand Part of the Latin/Arabic Alphabet ECMA-114, ISO 8859/6 |
H | IR-138 | Latin/Hebrew Alphabet Standard ECMA-121 |
I | IR-139 | Right-hand Part for Czechoslovak Standard CSN 369103 |
J | IR-142 | Supplementary Set of Latin Alphabetic and non-Alphabetic Graphic Characters |
K | IR-143 | Technical Set |
L | IR-144 | Cyrillic part of the Latin/Cyrillic Alphabet |
M | IR-148 | Right-hand part of Latin Alphabet No.5 |
N | IR-152 | Residual Characters from ISO 6937-2 : 1983 |
O | IR-153 | Basic Cyrillic Character Set for 8-bit Codes |
P | IR-154 | Supplementary set for Latin Alphabets No.1, No.2 and No.5 |
Q | IR-155 | Basic Box Drawings Set |
R | IR-156 | Supplementary Set ISO/IEC 6937 : 1992 |
S | IR-164 | CCITT Hebrew Supplementary Set |
T | IR-166 | Thai Set |
U | IR-167 | Arabic/French/German Set |
V | IR-157 | Supplementary Set for Latin Alphabet No. 6 |
X | IR-158 | Sami (Lappish) Supplementary Set |
Y | IR-179 | Baltic Rim Supplementary Set |
Z | IR-180 | Vietnamese Standard Code for Information Interchange |
[ | IR-181 | Technical Character Set No.1: IEC Publication 1289 |
\ | IR-182 | Welsh variant of Latin Alphabet No. 1 |
] | IR-197 | Sami supplementary Latin set |
^ | IR-198 | Latin/Hebrew Alphabet |
_ | IR-199 | Celtic Supplementary Latin Set |
` | IR-200 | Uralic Supplementary Cyrllic Set |
a | IR-201 | Volgaic Supplementary Cyrllic Set |
b | IR-203 | European Supplementary Latin Set ("Latin 9") |
c | IR-204 | Supplementary set for Latin-1 alternative with EURO SIGN |
d | IR-205 | Supplementary set for Latin-4 alternative with EURO SIGN |
e | IR-206 | Supplementary set for Latin-7 alternative with EURO SIGN |
f | IR-226 | Romanian Character Set for Information Interchange |
g | IR-208 | Ogham kbdd character set for information interchange |
h | IR-209 | Sami supplementary Latin set no 2 |
i | IR-227 | Right-hand part of Latin/Greek alphabet |
j | IR-234 | Latin/Hebrew character set for 8-bit kbds |
} | IR-129 | Supplementary Set of Mosaic Characters for CCITT Rec. 101, Data Syntax III |
Set | IRR | IR | 名称 |
---|---|---|---|
@ | IR-42 | Japanese Character Set JISC C 6226-1978 ※ ESC $ ( @ の代わりに ESC $ @ を使う。 | |
A | IR-58 | Chinese Character Set Chinese Standard GB 2312-80 ※ ESC $ ( A の代わりに ESC $ A を使う。 |
|
B | IR-168 | Japanese Character Set JIS C 6226-1983 ※ ESC $ ( B の代わりに ESC $ B を使う。 |
|
B | @ | IR-87 | Update Registration 87 Japanese Graphic Character Set for Information Interchange ※ IRR(@) ESC $ ( B の代わりに IRR(@) ESC $ B を使う。 |
C | IR-149 | Korean Graphic Character Set, Korean Standard KSC 5601-1987 | |
D | IR-159 | Supplementary Japanese Graphic Character Set for Information Interchange | |
E | IR-165 | CCITT Chinese Set | |
F | IR-169 | Blissymbol Graphic Character Set | |
G | IR-171 | Chinese Standard Interchange Code - Set 1, CNS 11643-1992 | |
H | IR-172 | Chinese Standard Interchange Code - Set 2, CNS 11643-1992 | |
I | IR-183 | Chinese Standard Interchange Code - Set 3, CNS 11643-1992 | |
J | IR-184 | Chinese Standard Interchange Code - Set 4, CNS 11643-1992 | |
K | IR-185 | Chinese Standard Interchange Code - Set 5, CNS 11643-1992 | |
L | IR-186 | Chinese Standard Interchange Code - Set 6, CNS 11643-1992 | |
M | IR-187 | Chinese Standard Interchange Code - Set 7, CNS 11643-1992 | |
N | IR-202 | DPRK Standard Korean Graphic Character Set for Information Interchange | |
O | IR-228 | Japanese Graphic Character Set for Information Interchange --- Plane 1 | |
P | IR-229 | Japanese Graphic Character Set for Information Interchange --- Plane 2 | |
Q | IR-233 | Japanese Graphic Character Set for Information Interchange, Plane 1 (Update of ISO-IR 228) |
Set は I? F の形式を持つ。 Set = @ は ISO 2022 に戻ってくる事を示す。 その他の Set は他の文字符号化方式に移行する事を示す。 Set = F の形式の文字集合については、 DOCS(@) を用いてまた ISO 2022 に戻ってくる事ができる。 中間バイトを一つ以上含む文字集合の場合には、 DOCS(@) で ISO 2022 に戻ってくる事はできない。
Set | 登録符号化方式 |
---|---|
@ | ISO/IEC 2022 |
A | Syntax of the North American Videotex/Teletex Presentation Level Protocol (NAPLPS), CSA T 500-1983 |
B | UCS Transformation Format One (UTF-1) |
C | Data Syntax I of CCITT Rec.T.101 |
D | Data Syntax II of CCITT Rec. T.101 |
E | Photo-Videotex Data Syntax of CCITT Rec. T.101 |
F | Audio Data Syntax of CCITT Rec. T.101 |
G | UTF-8 without implementation level |
H | Videotex Enhanced Man Machine Interface (VEMMI) Data Syntax of ITU-T Rec. T.107 |
/ @ | ISO/IEC 10646:1993, UCS-2, Level 1 |
/ A | ISO/IEC 10646:1993, UCS-4, Level 1 |
/ B | Virtual Terminal service Transparent Set |
/ C | ISO/IEC 10646:1993, UCS-2, Level 2 |
/ D | ISO/IEC 10646:1993, UCS-4, Level 2 |
/ E | ISO/IEC 10646:1993, UCS-2, Level 3 |
/ F | ISO/IEC 10646:1993, UCS-4, Level 3 |
/ G | UTF-8 Level 1 |
/ H | UTF-8 Level 2 |
/ I | UTF-8 Level 3 |
/ J | UTF-16 Level 1 |
/ K | UTF-16 Level 2 |
/ L | UTF-16 Level 3 |
Set | 私用符号化方式 |
0 | DECTCS |
4 | DECSCCS |
8 | DECHPPCL |
! 0 | _TEKSCTEK |
! 1 | _TEKSCANS |
! 2 | _TEKSCEDT |
! 3 | _TEKSCV52 |
[ECMA-35/15.3.2] ISO 2022 による符号化の終端を示す。 より外側の枠組みに制御を戻す為に使うことができる。 外側の枠組みによって別の終端を示す方法がある時には、 必ずしも CMD がデータの末端になくても良い。
いわゆる ASCII である。 7-bit 符号は ISO/IEC 646 として、 8-bit 符号は ISO/IEC 8859 として発展している。 JIS X 0201 は日本語で用いられる 8 bit 符号である。 以下の表は Wikipedia から。
ASCII 7-bit 符号。
いわゆる ANSI と呼ばれる規格は初め ECMA-48 として出発した。 これは ECMA-6 (ISO/IEC 646, ASCII) の拡張として定義された。 その後で ANSI 規格として採用された。 これを実装する端末を ANSI terminals などと呼ぶ。
規格の筈なのにそこら中を動き回っていて場所が一定しない。担当者は、これが相当重要な物であるという事を理解していない気がする。
ISO-IR - Suika Wiki によると IR-232 は 以下のリンクで Unicode との対応表を提供しているらしい。 然し、別の文字コードについても同様の物を提供しているかと思いきや、提供されていなかった。 例えば、これより後の IR-233 (JIS 2004) についても Unicode との対応表は用意されていない。
[2011/11/07] ページを書いていた Marsette Vona さんが異動したみたい。 20111016 に移動先でページが作られたみたいだからそちらへリンク。
色々な端末の差異を吸収する為に作られたデータベース・ライブラリ。ncurses もこれを利用する。
特定の TERM に対する terminfo のエスケープシーケンスの定義などは、
infocmp cygwin
等として見る事ができる。
ターミナルからプログラムへ送られるデータ
キー | 普通 | vt100 | vt52?/rxvt | xterm |
---|---|---|---|---|
Home | \e[1~ | \e[2~ | \e[7~ | \e[H |
Insert | \e[2~ | \e[1~ | \e[2~ | \e[2~ |
Delete | \e[3~ | \e[4~ | \e[3~ | \e[3~ |
End | \e[4~ | \e[5~ | \e[8~ | \e[F |
PageUp/Prior | \e[5~ | \e[3~ | \e[5~ | \e[5~ |
PageDown/Next | \e[6~ | \e[6~ | \e[6~ | \e[6~ |
Find | \e[1~ | |||
Select | \e[4~ | \e[4 | ||
Execute | \e[3~ |
Function Key 修飾可能。
テンキーのキー入力は、モードによって送信されるシーケンスが異なる。
キー | Normal | App (PC) | App (VT220/rxvt) | App (VT52) |
---|---|---|---|---|
KP Space | | \eO | \eO | \e? |
KP Tab | \t | \eOI | \eOI | \e?I |
KP Enter | \r | \eOM | \eOM | \e?M |
KP * | * | \eOj | \eOj | \e?j |
KP + | + | \eOk | \eOk | \e?k |
KP , | , | \eOl | \eOl | \e?l |
KP - | - | \eOm | \eOm | \e?m |
KP ./Del | . | \e[3~ | \eOn | \e?n |
KP / | / | \eOo | \eOo | \e?o |
KP 0/Ins | 0 | \e[2~ | \eOp | \e?p |
KP 1/End | 1 | \eOF | \eOq | \e?q |
KP 2/Down | 2 | \e[B | \eOr | \e?r |
KP 3/PgDn | 3 | \e[6~ | \eOs | \e?s |
KP 4/Left | 4 | \e[D | \eOt | \e?t |
KP 5/Begin | 5 | \e[E | \eOu | \e?u |
KP 6/Right | 6 | \e[C | \eOv | \e?v |
KP 7/Home | 7 | \eOH | \eOw | \e?w |
KP 8/Up | 8 | \e[A | \eOx | \e?x |
KP 9/PgUp | 9 | \e[5~ | \eOy | \e?y |
KP = | = | \eOX | \eOX | \e?X |
但し、テンキーの Function キーは Normal/Application で共通である。(然し、環境によって異なる)
キー | PC/VT220/rxvt | VT52 |
---|---|---|
KP F1 | \eOP | \eP |
KP F2 | \eOQ | \eQ |
KP F3 | \eOR | \eR |
KP F4 | \eOS | \eS |
xterm で定義されているその他の修飾されたキーボード入力
key | C- | C-M- (1) | C-M- (2) | S- | S-C- | S-C-M- (1) | S-C-M- (2) |
---|---|---|---|---|---|---|---|
\t | \e[27;5;9~ | \e[27;13;9~ | \e[27;7;9~ |
\e[27;2;9~ | \e[27;6;9~ | -- | -- |
\r | \e[27;5;13~ | \e[27;13;13~ | \e[27;7;13~ |
\e[27;2;13~ | \e[27;6;13~ | -- | -- |
, | \e[27;5;44~ | \e[27;13;44~ | \e[27;7;44~ |
< | \e[27;6;60~ | \e[27;14;60~ | \e[27;8;60~ |
- | \e[27;5;45~ | \e[27;13;45~ | \e[27;7;45~ |
= | \e[27;5;61~ | \e[27;13;61~ | \e[27;7;61~ |
. | \e[27;5;46~ | \e[27;13;46~ | \e[27;7;46~ |
> | \e[27;6;62~ | \e[27;14;62~ | \e[27;8;62~ |
/ | \e[27;5;47~ | \e[27;13;47~ | \e[27;7;47~ |
? | \e[27;6;63~ | \e[27;14;63~ | \e[27;8;63~ |
0 | \e[27;5;48~ | \e[27;13;48~ | \e[27;7;48~ |
-- | -- | -- | -- |
1 | \e[27;5;49~ | \e[27;13;49~ | \e[27;7;49~ |
! | \e[27;6;33~ | \e[27;14;33~ | \e[27;8;33~ |
2 | -- | \e[27;13;50~ | \e[27;7;50~ |
" | \e[27;6;34~ | \e[27;14;34~ | \e[27;8;34~ |
3 | -- | \e[27;13;51~ | \e[27;7;51~ |
# | \e[27;6;35~ | \e[27;14;35~ | \e[27;8;35~ |
4 | -- | \e[27;13;52~ | \e[27;7;52~ |
$ | \e[27;6;36~ | \e[27;14;36~ | \e[27;8;36~ |
5 | -- | \e[27;13;53~ | \e[27;7;53~ |
% | \e[27;6;37~ | \e[27;14;37~ | \e[27;8;37~ |
6 | -- | \e[27;13;54~ | \e[27;7;54~ |
& | \e[27;6;38~ | \e[27;14;38~ | \e[27;8;38~ |
7 | -- | \e[27;13;55~ | \e[27;7;55~ |
' | \e[27;5;39~ | \e[27;13;39~ | \e[27;7;39~ |
8 | -- | \e[27;13;56~ | \e[27;7;56~ |
( | \e[27;6;40~ | \e[27;14;40~ | \e[27;8;40~ |
9 | \e[27;5;57~ | \e[27;13;57~ | \e[27;7;57~ |
) | \e[27;6;41~ | \e[27;14;41~ | \e[27;8;41~ |
: | \e[27;6;58~ | \e[27;14;58~ | \e[27;8;58~ |
* | \e[27;6;42~ | \e[27;14;42~ | \e[27;8;42~ |
; | \e[27;5;59~ | \e[27;13;59~ | \e[27;7;59~ |
+ | \e[27;6;43~ | \e[27;14;43~ | \e[27;8;43~ |
\\ | \e[27;5;92~ | \e[27;13;92~ | \e[27;7;92~ |
_ | -- | -- | -- |
rosaterm の現状
S- で文字が変わるキー | ||||
---|---|---|---|---|
Key | k | C-k | S-k | C-S-k |
: | : | \e[58;5^ | * | \e[42;5^ |
; | ; | \e[59;5^ | + | \e[43;5^ |
, | , | \e[44;5^ | < | \e[60;5^ |
- | - | \e[45;5^ | = | \e[61;5^ |
. | . | \e[46;5^ | > | \e[62;5^ |
/ | / | \e[47;5^ | ? | \e[63;5^ |
@ | @ | \C-@ | ` | \e[96;5^ |
0 | 0 | \e[0;5^ | -- | -- |
1 | 1 | \e[1;5^ | ! | \e[33;5^ |
2 | 2 | \e[2;5^ | " | \e[34;5^ |
3 | 3 | \e[3;5^ | # | \e[35;5^ |
4 | 4 | \e[4;5^ | $ | \e[36;5^ |
5 | 5 | \e[5;5^ | % | \e[37;5^ |
6 | 6 | \e[6;5^ | & | \e[38;5^ |
7 | 7 | \e[7;5^ | ' | \e[39;5^ |
8 | 8 | \e[8;5^ | ( | \e[40;5^ |
9 | 9 | \e[9;5^ | ) | \e[41;5^ |
A-Z | a | \C-a | A | \e[97;6^ |
[ | [ | \C-[ | { | \e[123;5^ |
\\1 | \\ | \C-\\ | | | \e[124;5^ |
\\2 | \\ | \C-\\ | _ | \C-_ |
] | ] | \C-] | } | \e[125;5^ |
^ | ^ | \C-^ | ~ | \e[126;5^ |
特別なキー | ||||
Key | k | C-k | S-k | C-S-k |
backspace | \C-? | \C-_ | \e[8;2^ | \e[8;6^ |
return | \C-m | \e[13;5^ | \e[13;2^ | \e[13;6^ |
tab | \C-i | \e[9;5^ | \e[9;2^ | \e[9;6^ |
space | ' ' | \C-@ | \e[32;2^ | \e[32;6^ |
escape | \C-[ | (win) | \e[27;2^ | (win) |
他に Function Key がある。これらの修飾は、既に述べた通りで他のキー入力との重複もない。 但し、Windows によって F1-F12 の shift は F11-22 として解釈される。
Key | Normal | Application |
---|---|---|
up | \e[A | \eOA |
down | \e[B | \eOB |
right | \e[C | \eOC |
left | \e[D | \eOD |
home | \e[1~ | |
insert | \e[2~ | |
delete | \e[3~ | |
end | \e[4~ | |
pageup | \e[5~ | |
pagedown | \e[6~ | |
F1-F5 | \e[11~ | |
F6-F10 | \e[17~ | |
F11-F14 | \e[23~ | |
F15-F16 | \e[28~ | |
F17-F20 | \e[31~ | |
F21-F24 | \e[23$ |