OSDN Git Service

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