OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man4 / console_codes.4
1 .\" t
2 .\" Copyright (c) 1996 Andries Brouwer <aeb@cwi.nl>, Mon Oct 31 22:13:04 1996
3 .\"
4 .\" This is free documentation; you can redistribute it and/or
5 .\" modify it under the terms of the GNU General Public License as
6 .\" published by the Free Software Foundation; either version 2 of
7 .\" the License, or (at your option) any later version.
8 .\"
9 .\" This is combined from many sources.
10 .\" For Linux, the definitive source is of course console.c.
11 .\" About vt100-like escape sequences in general there are
12 .\" the ISO 6429 and ISO 2022 norms, the descriptions of
13 .\" an actual vt100, and the xterm docs (ctlseqs.ms).
14 .\" Substantial portions of this text are derived from a write-up
15 .\" by Eric S. Raymond <esr@thyrsus.com>.
16 .\"
17 .\" Tiny correction, aeb, 961107.
18 .\"
19 .\" 2006-05-27, Several corrections - Thomas E. Dickey
20 .\"
21 .\"*******************************************************************
22 .\"
23 .\" This file was generated with po4a. Translate the source file.
24 .\"
25 .\"*******************************************************************
26 .TH CONSOLE_CODES 4 2011\-09\-15 Linux "Linux Programmer's Manual"
27 .SH 名前
28 console_codes \- Linux コンソールのエスケープシーケンスとコントロール シーケンス
29 .SH 説明
30 Linux コンソールは VT102 と ECMA\-48/ISO6429/ANSI X3.64 端末コンソールの
31 サブセットに、カラーパレットや文字集合のマッピングなどを変更する プライベートモードシーケンスを加えて実装されている。 以下の表では、機能の
32 ECMA\-48 または DEC のニーモニクス(DECで始まれば後者)を 2 番目の桁に記す。 ニーモニクスのないものは ECMA\-48 でも
33 VT102 でもないものである。
34 .LP
35 すべての出力作業が終って、実際に印字するために文字のストリームが コンソールドライバーに届いた時、最初に行なわれるのが、処理用コードから
36 印字用のコードへの変換である。
37 .LP
38 もし、コンソールが UTF\-8 モードなら、入って来たバイト(byte)は 16 ビットの Unicode に組み立てられる。そうでなければ、それぞれの
39 バイトは現在の(各バイトを Unicode の値に変換する)マッピングテーブルに
40 従って変換される。これに関しては下のキャラクターセット(Charcter Sets)  節を参照のこと。
41 .LP
42 通常、Unicode の値はフォントインデックス(font index) に変換され、 ビデオメモリに蓄えられる。そして(ビデオ ROM
43 中に見付けられる)  対応するグリフ(glyph)が画面に現れる。 Unicode を用いると、(PC 互換機の設計では) 512 の異なった
44 グリフを同時に利用できるようになる。
45 .LP
46 現在の Unicode の値がコントロール文字であるかエスケープシーケンスを 処理している時には、その値は特別に扱われる。
47 フォントのインデックスに変換されてグリフとして表示される代わりに、カーソルの 移動やその他のコントロール機能を実行させる。
48 詳しいことは、後述の「LINUX コンソールコントロール」のセクションを参照のこと。
49 .LP
50 一般に端末コントロールコードをプログラム中に直接記述するのは 良いことではない。 Linuxでは、端末において実現可能な操作のデータベースである
51 \fBterminfo\fP(5)  をサポートしている。 コンソールエスケープシーケンスをわざわざ入力するよりも、ほとんどの場合 terminfo
52 の情報を参照する \fBncurses\fP(3), \fBtput\fP(1), や \fBreset\fP(1)
53 などのスクリーンライブラリやユーティリティーを使いたいと思うであろう。
54 .SS "Linux コンソールコントロール"
55 この章では Linux コンソールにおいて特殊な機能(つまり、現在のカーソル位置に
56 文字のイメージを印字する以外のこと)を起こさせる全てのコントロール文字と エスケープシーケンスについて述べる。
57 .PP
58 \fBコントロール文字\fP
59 .sp
60 コントロール文字とは、(マッピングテーブルによる変換前のコードが)  00 (NUL), 07 (BEL), 08 (BS), 09 (HT), 0a
61 (LF), 0b (VT), 0c (FF), 0d (CR), 0e (SO), 0f (SI), 18 (CAN), 1a (SUB), 1b
62 (ESC), 7f (DEL) の 14 のコードのうちのどれかである文字である。 "コントロール文字表示(display control
63 characters)"モード(後述)を 設定すると、07, 09, 0b, 18, 1a, 7f をグリフとして表示することができる。 一方、
64 UTF\-8 モードでは、00\-1f の全てのコードは、コントロール文字表示 モードが指定された場合でもコントロール文字として扱われる。
65 .PP
66 コントロール文字がある時には、それはすぐに(たとえエスケープシーケンスの 途中でも)実行され、破棄される。エスケープシーケンスは次の文字から続けられる
67 (しかし、ESC は新しいエスケープシーケンスを始めるので、 前の終了していないエスケープシーケンスが中止される可能性がある。 さらに、CAN と
68 SUB はどんなエスケープシーケンスも中止する)。 認められているコントロール文字は、BEL, BS, HT, LF, VT, FF, CR, SO,
69 SI, CAN, SUB, ESC, DEL, CSI である。これらは期待どおりの動作をする:
70 .HP
71 BEL (0x07, \fB^G\fP) はビープ音を鳴らす;
72 .HP
73 BS (0x08, \fB^H\fP) はバックスペース (ただし、行頭は越えない);
74 .HP
75 HT (0x09, \fB^I\fP) は次のタブストップ(tab stop)へ移動する、そこから行末までに タブストップが無い場合は行の終りに移動する;
76 .HP
77 LF (0x0A, \fB^J\fP), VT (0x0B, \fB^K\fP), FF (0x0C, \fB^L\fP) これらは全て
78 ラインフィード(linefeed)を与える; LF/NL (ニューラインモード(new line mode))がセットされていれば
79 キャリッジリターンもアクティブにする;
80 .HP
81 CR (0x0D, \fB^M\fP) はキャリッジリターンを与える;
82 .HP
83 SO (0x0E, \fB^N\fP) は G1 文字集合をアクティブにする。
84 .HP
85 SI (0x0F, \fB^O\fP) は G0 文字集合をアクティブにする;
86 .HP
87 CAN (0x18, \fB^X\fP) と SUB (0x1A, \fB^Z\fP) はエスケープシーケンスを中断する;
88 .HP
89 ESC (0x1B, \fB^[\fP) はエスケープシーケンスを始める。
90 .HP
91 DEL (0x7F) は無視される;
92 .HP
93 CSI (0x9B) は ESC [ と等価。
94 .PP
95 \fBエスケープシーケンスであるが CSI シーケンスでないもの\fP
96 .TS
97 l l l.
98 ESC c   RIS     リセット。
99 ESC D   IND     ラインフィード。
100 ESC E   NEL     ニューライン。
101 ESC H   HTS     現在の桁の位置にタブストップを設定する。
102 ESC M   RI      逆ラインフィード
103 ESC Z   DECID   T{
104 DEC固有の識別用。
105 カーネルは文字列 ESC [ ? 6 c を返す。
106 これは端末がVT102であることを意味する。
107 T}
108 ESC 7   DECSC   T{
109 現在の状態 (カーソルの座標、属性、G0, G1 で示している
110 文字集合) をセーブする。
111 T}
112 ESC 8   DECRC   最後に ESC 7 でセーブした状態を復帰させる。
113 ESC [   CSI     コントロールシーケンスを導入する。
114 ESC %           キャラクターセットを選択するシーケンスを開始する。
115 ESC % @         \0\0\0 デフォルト(ISO 646 / ISO 8859\-1)を選択する。
116 ESC % G         \0\0\0 UTF\-8 を選択する。
117 ESC % 8         \0\0\0 UTF\-8 を選択する(旧式)。
118 ESC # 8 DECALN  DEC のスクリーン調整テスト \- スクリーンを E でうめる。
119 ESC (           G0 文字集合を定義するシーケンスを開始する。
120 ESC ( B         \0\0\0 デフォルト(ISO 8859\-1 マッピング)を選択する。
121 ESC ( 0         \0\0\0 VT100 グラフィクスマッピングを選択する。
122 ESC ( U         \0\0\0 ヌルマッピングを選択する \- キャラクタ ROM から直接マッピングする。
123 ESC ( K         \0\0\0 ユーザー定義のマッピングを選択する \- そのマップ
124                 \0\0\0 は \fBmapscrn\fP(8) ユーティリティーによってロードされる。
125 ESC )           G1 を定義するシーケンスを開始する。
126                 (すでに述べたように B, 0, U, K のどれかが次に続く)
127 ESC >   DECPNM  数値キーパッドモード(numeric keypad mode)をセットする。
128 ESC =   DECPAM  アプリケーションキーパッドモード(application keypad mode) をセットする。
129 ESC ]   OSC     T{
130 ("Operating system command"のことだろう)
131 ESC ] P \fInrrggbb\fP: 最後の P のあとの 7 つの 16 進数を
132 パラメータとして :\-( パレットをセットする。
133 ここで、\fIn\fPは色 (0\-15)、\fIrrggbb\fPは赤/緑/青の値
134 (0\-255)を意味する。
135 ESC ] R: パレットをリセットする。
136 T}
137 .TE
138 .PP
139 \fBECMA\-48 CSI シーケンス\fP
140 .sp
141 CSI (または ESC [ ) のあとに、最大で NPAR (16) 個のセミコロンで区切られた 10 進数のパラメータシーケンスが続く。
142 空であるかそこにないパラメータは 0 とされる。 パラメータシーケンスの前にはひとつのクエスチョンマークがつくことがある。
143 .PP
144 しかし、CSI [ (または ESC [ [ ) の後では、一文字が読まれ、このすべての
145 パラメータシーケンスが無視される(要するにファンクションキーのエコーは 無視されるということである)。
146 .PP
147 CSI シーケンスの動作は、その最後の文字によって決まる。
148 .TS
149 l l l l.
150 @       ICH     指示された数の空白文字を挿入する。
151 A       CUU     指示された数だけカーソルを上方向に移動する。
152 B       CUD     カーソルを指示された数の行だけ下方向に移動する。
153 C       CUF     カーソルを指示された数の桁だけ右に移動する。
154 D       CUB     カーソルを指示された数の桁だけ左に移動する。
155 E       CNL     カーソルを指示された数の行だけ下の第 1 桁に移動する。
156 F       CPL     カーソルを指示された数の行だけ上の第 1 桁に移動する。
157 G       CHA     カーソルを現在の行の指示された桁に移動する。
158 H       CUP     カーソルを指示された行、桁(1,1を原点とする)に移動する。
159 J       ED      ディスプレイの消去(デフォルト: カーソルからディスプレイの最後まで)。
160                 ESC [ 1 J: 最初からカーソルまでの消去。
161                 ESC [ 2 J: ディスプレイ全体の消去。
162                 ESC [ 3 J: スクロールバッファも含めたディスプレイ全体の
163                            消去 (Linux 3.0 以降)。
164 .\" ESC [ 3 J: commit f8df13e0a901fe55631fed66562369b4dba40f8b
165 K       EL      行の消去(デフォルト: カーソルから行末まで)。
166                 ESC [ 1 K: 行頭からカーソルまでの消去。
167                 ESC [ 2 K: 行全体の消去。
168 L       IL      指示された数の空行を挿入する。
169 M       DL      指示された数の行を削除する。
170 P       DCH     現在の行から指示された数の文字を削除する。
171 X       ECH     現在の行から指示された数の文字を消去する。
172 a       HPR     カーソルを指示された数の桁だけ右に移動する。
173 c       DA      ESC [ ? 6 c を返す: "私はVT102です"(ということ)。
174 d       VPA     カーソルを指示された行の現在の桁に移動する。
175 e       VPR     カーソルを指示された行数だけ下に移動する。
176 f       HVP     カーソルを指示された行、桁に移動する。
177 g       TBC     パラメータなしの時: 現在位置のタブストップを削除する。
178                 ESC [ 3 g: すべてのタブストップを削除する。
179 h       SM      モードのセット(後述)。
180 l       RM      モードのリセット(後述)。
181 m       SGR     属性のセット(後述)。
182 n       DSR     状態の報告(後述)。
183 q       DECLL   キーボードの LED をセットする。
184                 ESC [ 0 q: すべての LED を消す。
185                 ESC [ 1 q: スクロールロック LED を点灯。
186                 ESC [ 2 q: ナンバーロック LED を点灯。
187                 ESC [ 3 q: キャピタルロック LED を点灯。
188 r       DECSTBM スクロールの範囲のセット; パラメータは一番上の行と一番下の行。
189 s       ?       カーソル位置の保存。
190 u       ?       カーソル位置の復帰。
191 \`      HPA     カーソルを現在の行の指示された桁に移動する。
192 .TE
193 .PP
194 \fBECMA\-48 グラフィクスレンディション(Graphics Rendition)の設定\fP
195 .sp
196 ECMA\-48 SGR シーケンス ESC [ <パラメータ> m は表示属性を設定する。
197 セミコロンで区切ることで、同じシーケンスでいくつかの属性を設定できる。
198 空パラメータ(セミコロンか文字列開始文字か文字列終端文字の間)はゼロと解釈される。
199 .TS
200 l l.
201 パラメータ 結果
202 0       すべての属性をデフォルトにリセットする。
203 1       ボールド(bold)をセット。
204 2       ハーフブライト(half\-bright)(カラーディスプレイでは色で代用)をセット。
205 4       T{
206 下線(underscore)をセット(カラーディスプレイでは色で代用)。
207 (ディムや下線を代用するのに使われる色は 
208 ESC ] ... によりセット)
209 T}
210 5       点滅(blink)をセット。
211 7       反転表示(reverce video)をセット。
212 10      T{
213 選択したマッピング、ディスプレイコントロールフラグ(display control flag)、
214 トグルメタフラグ(toggle meta flag)をリセットする (ECMA\-48では"primary font"と呼んでいる)。
215 T}
216 11      T{
217 ヌルマッピングを選択、ディスプレイコントロールフラグをセット、
218 トグルメタフラグをリセットする
219 (ECMA\-48 では"first alternate font"と呼んでいる)。
220 T}
221 12      T{
222 ヌルマッピングを選択、ディスプレイコントロールフラグをセット、
223 トグルメタフラグをセットする (ECMA\-48 では "second alternate font" と呼んでいる)。
224 トグルメタフラグがたっていると、
225 マッピングテーブルによる変換をする前に、
226 バイトの上位の1ビットがトグルされる。
227 T}
228 21      通常の輝度にセット(ECMA\-48 では "doubly underlined" と呼んでいる)。
229 22      通常の輝度にセット。
230 24      下線オフ。
231 25      点滅オフ。
232 27      反転表示オフ。
233 30      フォアグラウンド(foreground)を黒にセット。
234 31      フォアグラウンドを赤にセット。
235 32      フォアグラウンドを緑にセット。
236 33      フォアグラウンドを茶にセット。
237 34      フォアグラウンドを青にセット。
238 35      フォアグラウンドをマゼンダにセット。
239 36      フォアグラウンドをシアンにセット。
240 37      フォアグラウンドを白にセット。
241 38      下線表示に設定し、フォアグラウンドをデフォルトにセット。
242 39      下線表示を解除し、フォアグラウンドをデフォルトにセット。
243 40      バックグラウンド(background)を黒にセット。
244 41      バックグラウンドを赤にセット。
245 42      バックグラウンドを緑にセット。
246 43      バックグラウンドを茶にセット。
247 44      バックグラウンドを青にセット。
248 45      バックグラウンドをマゼンダにセット。
249 46      バックグラウンドをシアンにセット。
250 47      バックグラウンドを白にセット。
251 49      バックグラウンドをデフォルトにセット。
252 .TE
253 .PP
254 \fBECMA\-48 モードスイッチ(Mode Switches)\fP
255 .TP 
256 ESC [ 3 h
257 DECCRM (デフォルトではオフ): コントロール文字を表示する。
258 .TP 
259 ESC [ 4 h
260 DECIM (デフォルトではオフ): 挿入モードにする。
261 .TP 
262 ESC [ 20 h
263 .\"
264 LF/NL (デフォルトではオフ): LF, VT, FFをエコーしたあと自動的 CR をつける。
265 .PP
266 .\"
267 \fBECMA\-48 状態リポートコマンド(Status Report Commands)\fP
268 .TP 
269 ESC [ 5 n
270 デバイス状態のリポート(DSR): 返事は ESC [ 0 n (端末 OK).
271 .TP 
272 ESC [ 6 n
273 .\"
274 カーソル位置のリポート(CPR): 返事は ESC [ \fIy\fP ; \fIx\fP R、 \fIx,y\fP はカーソルの位置をあらわす。
275 .PP
276 \fBDEC プライベートモード (DECSET/DECRST) シーケンス\fP
277 .sp
278 .\"
279 これらは ECMA\-48 では記述されていない。ここでは、セットモード シーケンス (Set Mode sequences)を記載する; 最後の
280 \(aqh\(aq を \(aql\(aq に 置き換えるとリセットモードシーケンス(Reset Mode sequences)になる。
281 .TP 
282 ESC [ ? 1 h
283 DECCKM (デフォルトはオフ): セットされた時にはカーソルキーは ESC [ ではなく ESC O を前につけて送る。
284 .TP 
285 ESC [ ? 3 h
286 DECCOLM (デフォルトはオフ = 80 桁): 80/132 の桁モード切替え。 ドライバーのソースの注釈には、これだけでは十分でなく
287 \fBresizecons\fP(8)  のようなユーザーモードのユーティリティーで、コンソールビデオカードの
288 ハードウェアレジスタを変える必要があると書かれている。
289 .TP 
290 ESC [ ? 5 h
291 DECSCNM (デフォルトはオフ): 反転表示モードのセット。
292 .TP 
293 ESC [ ? 6 h
294 DECOM(デフォルトはオフ): セットされた時には、カーソルのアドレッシングが、 スクロール範囲の左上隅からの相対位置になる。
295 .TP 
296 ESC [ ? 7 h
297 DECAWM(デフォルトはオン): オートラップを設定。このモードの時は、80 桁 (DECCOLM がオンのときは 132
298 桁)を超えたグラフィックキャラクタは、 強制的に次の行の先頭に折り返されて表示される。
299 .TP 
300 ESC [ ? 8 h
301 DECARM(デフォルトはオン): キーボードのオートリピートをオンにセット。
302 .TP 
303 ESC [ ? 9 h
304 X10 マウスリポート(デフォルトはオフ): リポートモードを 1 にセット(または、 0 にリセット)\(em後述
305 .TP 
306 ESC [ ? 25 h
307 DECTECM (デフォルトはオン): カーソルを可視(visible)にする。
308 .TP 
309 ESC [ ? 1000 h
310 .\"
311 X11 マウスリポート(デフォルトはオフ): リポートモードを 2 にセット(または、 0にリセット)\(em後述
312 .PP
313 \fBLinux コンソールプライベート CSI シーケンス\fP
314 .sp
315 .\"
316 以下のシーケンスは ECMA\-48 のものでも本来の VT102 のものでもでもなく、 Linuxコンソールドライバーに固有なシーケンスである。色は
317 SGR パラメータで 表現される: 0 = 黒, 1= 赤, 2 = 緑, 3 = 茶, 4 = 青, 5 = マゼンタ, 6 = シアン, 7 = 白
318 .TS
319 l l.
320 ESC [ 1 ; \fIn\fP ]     下線の色を\fIn\fP にセットする。
321 ESC [ 2 ; \fIn\fP ]     ディムの色を\fIn\fP にセットする。
322 ESC [ 8 ]               現在の色のペアをデフォルト属性にする。
323 ESC [ 9 ; \fIn\fP ]     スクリーンブランク(screen blank)のタイムアウトを \fIn\fP 分にセットする。
324 ESC [ 10 ; \fIn\fP ]    ベルの周波数(Hz)をセットする。
325 ESC [ 11 ; \fIn\fP ]    ベルの鳴っている時間(msec)をセットする。
326 ESC [ 12 ; \fIn\fP ]    指定のコンソールを前面に持ってくる。
327 ESC [ 13 ]              スクリーンをアンブランク(Unblank)する。
328 ESC [ 14 ]              VESA電源停止インターバル(VESA powerdown interval)をセットする。
329 .TE
330 .SS 文字集合
331 カーネルは、バイト列からコンソールスクリーン符号の変換を 4 つ 知っている。 4 つの変換テーブルとは、a) Latin1 \-> PC, b)
332 VT100 graphics \-> PC, c) PC \-> PC, d) ユーザー定義, である。
333 .PP
334 G0 と G1 と呼ばれる二つの文字集合があり、そのうち一つが現在の 文字集合である(初期値は G0 )。 \fB^N\fP をタイプすると G1 が
335 \fB^O\fP を入力すると G0 が現在の文字集合になる。
336 .PP
337 変数 G0 と G1 は変換テーブルを指しており、ユーザーにより変更できる。 最初はそれぞれテーブル a) と テーブル b) を指している。 ESC
338 ( B 、 ESC ( 0 、 ESC ( U 、 ESC ( K のそれぞれのシーケンスにより、 G0 が変換テーブル a)、 b)、 c)、 d)
339 を指すようになる。 また、ESC ) B 、 ESC ) 0 、 ESC ) U 、 ESC ) K のそれぞれのシーケンス により、G1
340 が変換テーブル a)、 b)、 c)、 d) を指すようになる。
341 .PP
342 ESC c のシーケンスは端末をリセットする。スクリーンがめちゃくちゃになった 時にそうすることが必要である。よくアドバイスされる "echo
343 ^V^O" は G0 を現在の文字集合にするだけであり、G0 がテーブル a) を指しているという 保証はない。 いくつかのディストリビューションには、
344 \fBreset\fP(1)  というプログラムが含まれるが、これはただ "echo ^[c" を実行するものである。 もし、コンソールの terminfo
345 エントリーが正しい(かつ rs1=\eEc のエントリーが ある)ならば、"tput reset"でも同じ効果がある。
346 .PP
347 ユーザー定義のマッピングテーブルは \fBmapscrn\fP(8)  を使って定義できる。 マッピングの結果、シンボル c が印字されるとシンボル s =
348 map[c] が ビデオメモリに送られる。s に対応するビットマップはキャラクター ROM にあり、 \fBsetfont\fP(8)
349 により変更可能である。
350 .SS マウストラッキング
351 マウストラッキング機能は、 \fBxterm\fP(1)\-互換の マウスステータスリポート(mouse status
352 reports)を返させるためのものである。 コンソールドライバーはマウスのデバイスや種類について知る方法が
353 ないので、仮想ターミナルドライバーがマウス更新の ioctl を受け取った時だけ、 マウスステータスリポートがコンソールの入力ストリームに送られる。
354 この ioctl は、 \fBgpm\fP(8)  デーモンのようなマウス対応のユーザーモード アプリケーションが発生しなければならない。
355 .PP
356 \fBxterm\fP(1) によって生成される全てのマウス追跡エスケープシーケンスのための パラメータは、数値を \fIvalue\fP+040
357 のように符号化し、一つの文字として あらわす。 例えば、\(aq!\(aq は 1 になる。スクリーン座標は 1 をベースにする。
358 .PP
359 X10 互換モードでは、ボタンが押された時にマウスの位置と押されたマウスの ボタンとをエンコードしたエスケープシーケンスを送る。 この機能は ESC [
360 ? 9 h を送ると有効になり ESC [ ? 9 l により無効になる。 ボタンが押されると \fBxterm\fP(1) は ESC [ M \fIbxy\fP
361 (の 6 文字)を送る。 ここで \fIb\fP は button\-1, \fIx\fP と \fIy\fP は マウスがボタンが押された 時の x と y 座標である。
362 このコードはカーネルが発生するのと同じコードである。
363 .PP
364 ノーマルトラッキングモード(Normal tracking mode)(Linux 2.0.24 では
365 実装されていない)では、両方のボタンが押されたか離された時に エスケープシーケンスが送られる。 モディファイアの情報も一緒に送られる。
366 この機能は、ESC [ ? 1000 h を送ると有効になり ESC [ ? 1000 l で無効になる。
367 ボタンが押されるか離されるかした時には、\fBxterm\fP(1) は ESC [ M \fIbxy\fP を送る。 \fIb\fP
368 の低位の2ビットにはボタン情報がエンコードされる: 0=MB1 が押された, 1=MB2 が押された, 2=MB3 が押された, 3=離された。
369 高位のビットには、ボタンが押された時にどのモディファイアがダウンしていたかが エンコードされる: 4=Shift, 8=Meta,
370 16=Control。 そして、上位と下位ビットが加算される。 ここでも \fIx\fP と \fIy\fP は、マウスイベントが起こった時の x と y
371 座標であり、左上の隅が(1,1)である。
372 .SS 他のターミナルとの比較
373 .\"
374 多くの異なるターミナルタイプが、Linux コンソールのように、"VT100互換"を 名乗っている。 ここでは、Linux コンソールと 2
375 つの最も重要なターミナルである DEC VT102 と \fBxterm\fP(1)  との違いについて述べる。
376 .PP
377 \fBコントロール文字の取り扱い\fP
378 .sp
379 VT102 は以下のコントロール文字も認識する:
380 .HP
381 NUL (0x00) は無視される;
382 .HP
383 ENQ (0x05) はアンサーバックメッセージ(answerback message)を発生する;
384 .HP
385 DC1 (0x11, \fB^Q\fP, XON) は送信を再開する;
386 .HP
387 DC3 (0x13, \fB^S\fP, XOFF) は VT100 に XOFF と XON 以外のコードを無視(そして 送信の停止)を起こさせる。
388 .LP
389 tty ドライバーにより VT100 に似た DC1/DC3 処理をできる。
390 .LP
391 .\"
392 \fBxterm\fP(1)  (VT100 モード)は BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC の
393 コントロール文字を認識する。
394 .PP
395 \fBエスケープシーケンス\fP
396 .sp
397 Linux コンソールで実装されていない VT100 コンソールシーケンスは以下の通り:
398 .TS
399 l l l.
400 ESC N   SS2     シングルシフト 2 (次の文字だけ G2
401                 文字集合を選択する)。
402 ESC O   SS3     シングルシフト 3 (次の文字だけ G3
403                 文字集合を選択する)。
404 ESC P   DCS     デバイス制御文字列 (ESC \e で終わる)
405 ESC X   SOS     文字列の始まり。
406 ESC ^   PM      プライバシーメッセージ(ESC \e で終わる)。
407 ESC \e  ST      文字列の終端文字。
408 ESC * ...               G2 文字集合を指定する。
409 ESC + ...               G3 文字集合を指定する。
410 .TE
411 .PP
412 \fBxterm\fP(1)  (VT100 モード)は ESC c, ESC # 8, ESC >, ESC =, ESC D, ESC E,
413 ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \e, ESC Z を認識する("わたしは高等ビデオオプション付きの
414 VT100 です"という 意味で ESC [ ? 1 ; 2 c と返答する)、ESC ^ ... ESC \e は上述と同じ意味を あらわす。ESC
415 (, ESC ), ESC *, ESC + に続く 0, A, B を DEC 特殊文字と して受け、それぞれラインドローイング(line
416 drawing) のセット、UK、 US\-ASCII をあらわす。
417 .PP
418 ユーザーは \fBxterm\fP(1) が VT220 特有のコントロールシーケンスに 反応するように設定でき、また設定と初期化のされかたによって
419 自分自身を VT52, VT100 などと認識する。
420 .PP
421 xterm は、特定のリソースの設定のために ESC ] (OSC) を受け付ける。 ECMA\-48 の文字列終端文字 (ST) に加えて、
422 \fBxterm\fP(1) は BEL を OSC 文字列を終端するものとして受け付ける。 以下は \fBxterm\fP(1) が認識する OSC
423 コントロールシーケンスの一部である。
424 .TS
425 l l.
426 ESC ] 0 ; \fItxt\fP ST  アイコン名とウインドウタイトルを \fItxt\fP にセットする。
427 ESC ] 1 ; \fItxt\fP ST  アイコン名を \fItxt\fP にセットする。
428 ESC ] 2 ; \fItxt\fP ST  ウインドウタイトルを \fItxt\fP にセットする。
429 ESC ] 4 ; \fInum\fP; \fItxt\fP ST       ANSI 色 \fInum\fP を \fItxt\fP にセットする。
430 ESC ] 10 ; \fItxt ST    動的テキスト色を txt にセットする。\fP
431 \fIESC ] 4 6 ; name ST  チェンジログファイルを name に変更する(通常は\fP
432 \fI     コンパイル時オプションにより無効になっている)。\fP
433 \fIESC ] 5 0 ; fn ST    フォントを fn にセットする。\fP
434 .TE
435 .PP
436 以下のものは、少し違った意味にとられる (より多くの状態を保存し、より VT100/VT220 に近いふるまいをする):
437 .TS
438 l l l.
439 ESC 7  DECSC    カーソルの保存。
440 ESC 8  DECRC    カーソルの復元。
441 .TE
442 .PP
443 また、次のものも認識する:
444 .TS
445 l l l.
446 ESC F           カーソルをスクリーンの左下に移動する。
447                 (\fBxterm\fP(1) の \fBhpLowerleftBugCompat\fPリソースにより有効な時)
448 ESC l           (HP ターミナル毎に)メモリロック。
449                 カーソルより上のメモリをロックする。
450 ESC m           (HP ターミナル毎に)メモリロックを解除する。
451 ESC n   LS2     G2 文字集合の呼び出し。
452 ESC o   LS3     G3 文字集合の呼び出し。
453 ESC |   LS3R    G3 文字集合を GR として呼び出す。
454 ESC }   LS2R    G2 文字集合を GR として呼び出す。
455 ESC ~   LS1R    G1 文字集合を GR として呼び出す。
456 .TE
457 .PP
458 .\"
459 また ESC % を認識し、Linux コンソールより更に完全な UTF\-8 実装を提供する。
460 .PP
461 \fBCSI シーケンス\fP
462 .sp
463 X11R5 由来のような、古いバージョンの \fBxterm\fP(1) はブリンク SGR を ボールド SGR として解釈する。 1995 年の
464 XFree86 3.1.2A のような、ANSI カラーが実装された、より新しい バージョンでは、ブリンク属性を色として表示することによってこれを
465 改善している。 最近のバージョンの xterm はブリンク SGR をテキストをブリンクさせることで 実装し、さらにまた、SGR
466 表示の代替案として色付きのテキストも利用できる。 Stock X11R6 版では、XFree86 xterm が組み入れられた X11R6.8
467 リリースまで 色設定 SGR を認識しなかった。 Linux が認識する他のすべての ECMA\-48 CSI シーケンスは \fIxterm\fP
468 でも認識されるが、\fBxterm\fP(1) は Linux が認識しない いくつかの ECMA\-48 と DEC のコントロールシーケンスも実装している。
469 .PP
470 \fBxterm\fP(1) は上述のすべての DEC プライベートモードのシーケンスを認識するが、 Linux
471 プライベートモードのシーケンスはどれも認識しない。 \fBxterm\fP(1) 自身のプライベートモードシーケンスに関しての議論は、 X
472 配布とともに入手可能な Edward Moy, Stephen Gildea,Thomas E. Dickey による \fIXterm Control
473 Sequences\fP ドキュメントを参照されたい。 このドキュメントは、簡潔なものであるが、このマニュアルページより 遥かに長いものである。
474 年代順の概観としては、
475 .PP
476 .in +4n
477 http://invisible\-island.net/xterm/xterm.log.html
478 .in
479 .PP
480 には xterm の変更の詳細がある。
481 .PP
482 \fIvttest\fP は
483 .PP
484 .in +4n
485 http://invisible\-island.net/vttest/
486 .in
487 .PP
488 で入手でき、これらのコントロールシーケンスの多くに関するデモを行う。 \fBxterm\fP(1) ソース配布パッケージには
489 その他の機能を学ぶことが出来るサンプルスクリプトが入っている。
490 .SH 注意
491 ESC 8 (DECRC) は ESC % で変更された文字集合を復元することはできない。
492 .SH バグ
493 2.0.23 では CSI が壊れていて、エスケープシーケンス中の NUL が 無視されない。
494 .PP
495 古いバージョン(2.0 以降)のカーネルには、8 ビット制御シーケンスを解釈する。 これらの "C1 コントロール" は ESC [, ESC ]
496 および同様な制御シーケンス 起動子を置き換えるために 128 から 159 のコードを使う。 新しいカーネルでは (UTF\-8
497 対応の変更時に見落とされたか壊れたために)  寸断しているが、実装は不完全で信頼できないものと評価されている。
498 .PP
499 Linux "プライベートモード" シーケンスは ECMA\-48 のプライベートモード コントロールシーケンスのルールに従っていない。 特に、 ]
500 で終わるものは標準終端文字を使えない。 OSC(パレット設定)シーケンスは大きな問題がある。 \fBxterm\fP(1) はこれを文字列終端文字 (ST)
501 が必要なコントロールシーケンスと 解釈するかもしれないからである。 (不正なコントロールシーケンスなので)無視される \fBsetterm\fP(1)
502 シーケンスと 違い、パレットシーケンスは \fBxterm\fP(1) をハングさせるかもしれない (しかしリターンキーを押すことで回復できる)。 Linux
503 コントロールシーケンスをハードコードしているアプリケーションに 適応させるには、\fBxterm\fP(1) リソースの \fBbrokenLinuxOSC\fP
504 を 真 (true) に設定する。
505 .PP
506 このドキュメントの古いバージョンでは、Linux が ECMA\-48 の不可視テキストの コントロールシーケンスを認識するかのように書かれていた。
507 これは無視される。
508 .SH 関連項目
509 \fBconsole\fP(4), \fBconsole_ioctl\fP(4), \fBcharsets\fP(7)