OSDN Git Service

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