OSDN Git Service

長音記号の修正を release に反映
[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 .\" %%%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
329 .TS
330 l l.
331 ESC [ 1 ; \fIn\fP ]     下線の色を\fIn\fP にセットする。
332 ESC [ 2 ; \fIn\fP ]     ディムの色を\fIn\fP にセットする。
333 ESC [ 8 ]               現在の色のペアをデフォルト属性にする。
334 ESC [ 9 ; \fIn\fP ]     スクリーンブランク(screen blank)のタイムアウトを \fIn\fP 分にセットする。
335 ESC [ 10 ; \fIn\fP ]    ベルの周波数(Hz)をセットする。
336 ESC [ 11 ; \fIn\fP ]    ベルの鳴っている時間(msec)をセットする。
337 ESC [ 12 ; \fIn\fP ]    指定のコンソールを前面に持ってくる。
338 ESC [ 13 ]              スクリーンをアンブランク(Unblank)する。
339 ESC [ 14 ]              VESA電源停止インターバル(VESA powerdown interval)をセットする。
340 .TE
341 .SS 文字集合
342 カーネルは、バイト列からコンソールスクリーン符号の変換を 4 つ 知っている。 4 つの変換テーブルとは、a) Latin1 \-> PC, b)
343 VT100 graphics \-> PC, c) PC \-> PC, d) ユーザー定義, である。
344 .PP
345 G0 と G1 と呼ばれる二つの文字集合があり、そのうち一つが現在の 文字集合である(初期値は G0 )。 \fB^N\fP をタイプすると G1 が
346 \fB^O\fP を入力すると G0 が現在の文字集合になる。
347 .PP
348 変数 G0 と G1 は変換テーブルを指しており、ユーザーにより変更できる。 最初はそれぞれテーブル a) と テーブル b) を指している。 ESC
349 ( B 、 ESC ( 0 、 ESC ( U 、 ESC ( K のそれぞれのシーケンスにより、 G0 が変換テーブル a)、 b)、 c)、 d)
350 を指すようになる。 また、ESC ) B 、 ESC ) 0 、 ESC ) U 、 ESC ) K のそれぞれのシーケンス により、G1
351 が変換テーブル a)、 b)、 c)、 d) を指すようになる。
352 .PP
353 ESC c のシーケンスは端末をリセットする。スクリーンがめちゃくちゃになった 時にそうすることが必要である。よくアドバイスされる "echo
354 ^V^O" は G0 を現在の文字集合にするだけであり、G0 がテーブル a) を指しているという 保証はない。 いくつかのディストリビューションには、
355 \fBreset\fP(1)  というプログラムが含まれるが、これはただ "echo ^[c" を実行するものである。 もし、コンソールの terminfo
356 エントリーが正しい(かつ rs1=\eEc のエントリーが ある)ならば、"tput reset"でも同じ効果がある。
357 .PP
358 ユーザー定義のマッピングテーブルは \fBmapscrn\fP(8)  を使って定義できる。 マッピングの結果、シンボル c が印字されるとシンボル s =
359 map[c] が ビデオメモリーに送られる。s に対応するビットマップはキャラクター ROM にあり、 \fBsetfont\fP(8)
360 により変更可能である。
361 .SS マウストラッキング
362 マウストラッキング機能は、 \fBxterm\fP(1)\-互換の マウスステータスリポート(mouse status
363 reports)を返させるためのものである。 コンソールドライバーはマウスのデバイスや種類について知る方法が
364 ないので、仮想ターミナルドライバーがマウス更新の ioctl を受け取った時だけ、 マウスステータスリポートがコンソールの入力ストリームに送られる。
365 この ioctl は、 \fBgpm\fP(8)  デーモンのようなマウス対応のユーザーモード アプリケーションが発生しなければならない。
366 .PP
367 \fBxterm\fP(1) によって生成される全てのマウス追跡エスケープシーケンスのための パラメーターは、数値を \fIvalue\fP+040
368 のように符号化し、一つの文字として あらわす。 例えば、\(aq!\(aq は 1 になる。スクリーン座標は 1 をベースにする。
369 .PP
370 X10 互換モードでは、ボタンが押された時にマウスの位置と押されたマウスの ボタンとをエンコードしたエスケープシーケンスを送る。 この機能は ESC [
371 ? 9 h を送ると有効になり ESC [ ? 9 l により無効になる。 ボタンが押されると \fBxterm\fP(1) は ESC [ M \fIbxy\fP
372 (の 6 文字)を送る。 ここで \fIb\fP は button\-1, \fIx\fP と \fIy\fP は マウスがボタンが押された 時の x と y 座標である。
373 このコードはカーネルが発生するのと同じコードである。
374 .PP
375 ノーマルトラッキングモード(Normal tracking mode)(Linux 2.0.24 では
376 実装されていない)では、両方のボタンが押されたか離された時に エスケープシーケンスが送られる。 モディファイアの情報も一緒に送られる。
377 この機能は、ESC [ ? 1000 h を送ると有効になり ESC [ ? 1000 l で無効になる。
378 ボタンが押されるか離されるかした時には、\fBxterm\fP(1) は ESC [ M \fIbxy\fP を送る。 \fIb\fP
379 の低位の2ビットにはボタン情報がエンコードされる: 0=MB1 が押された, 1=MB2 が押された, 2=MB3 が押された, 3=離された。
380 高位のビットには、ボタンが押された時にどのモディファイアがダウンしていたかが エンコードされる: 4=Shift, 8=Meta,
381 16=Control。 そして、上位と下位ビットが加算される。 ここでも \fIx\fP と \fIy\fP は、マウスイベントが起こった時の x と y
382 座標であり、左上の隅が(1,1)である。
383 .SS 他のターミナルとの比較
384 .\"
385 多くの異なるターミナルタイプが、Linux コンソールのように、"VT100互換"を 名乗っている。 ここでは、Linux コンソールと 2
386 つの最も重要なターミナルである DEC VT102 と \fBxterm\fP(1)  との違いについて述べる。
387 .PP
388 \fBコントロール文字の取り扱い\fP
389 .sp
390 VT102 は以下のコントロール文字も認識する:
391 .HP
392 NUL (0x00) は無視される;
393 .HP
394 ENQ (0x05) はアンサーバックメッセージ(answerback message)を発生する;
395 .HP
396 DC1 (0x11, \fB^Q\fP, XON) は送信を再開する;
397 .HP
398 DC3 (0x13, \fB^S\fP, XOFF) は VT100 に XOFF と XON 以外のコードを無視(そして 送信の停止)を起こさせる。
399 .LP
400 端末ドライバーにより VT100 に似た DC1/DC3 処理を有効にする。
401 .LP
402 .\"
403 \fBxterm\fP(1)  (VT100 モード)は BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC の
404 コントロール文字を認識する。
405 .PP
406 \fBエスケープシーケンス\fP
407 .sp
408 Linux コンソールで実装されていない VT100 コンソールシーケンスは以下の通り:
409 .TS
410 l l l.
411 ESC N   SS2     シングルシフト 2 (次の文字だけ G2
412                 文字集合を選択する)。
413 ESC O   SS3     シングルシフト 3 (次の文字だけ G3
414                 文字集合を選択する)。
415 ESC P   DCS     デバイス制御文字列 (ESC \e で終わる)
416 ESC X   SOS     文字列の始まり。
417 ESC ^   PM      プライバシーメッセージ(ESC \e で終わる)。
418 ESC \e  ST      文字列の終端文字。
419 ESC * ...               G2 文字集合を指定する。
420 ESC + ...               G3 文字集合を指定する。
421 .TE
422 .PP
423 \fBxterm\fP(1)  (VT100 モード)は ESC c, ESC # 8, ESC >, ESC =, ESC D, ESC E,
424 ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \e, ESC Z を認識する("わたしは高等ビデオオプション付きの
425 VT100 です"という 意味で ESC [ ? 1 ; 2 c と返答する)、ESC ^ ... ESC \e は上述と同じ意味を あらわす。ESC
426 (, ESC ), ESC *, ESC + に続く 0, A, B を DEC 特殊文字と して受け、それぞれラインドローイング(line
427 drawing) のセット、UK、 US\-ASCII をあらわす。
428 .PP
429 ユーザーは \fBxterm\fP(1) が VT220 特有のコントロールシーケンスに 反応するように設定でき、また設定と初期化のされかたによって
430 自分自身を VT52, VT100 などと認識する。
431 .PP
432 xterm は、特定のリソースの設定のために ESC ] (OSC) を受け付ける。 ECMA\-48 の文字列終端文字 (ST) に加えて、
433 \fBxterm\fP(1) は BEL を OSC 文字列を終端するものとして受け付ける。 以下は \fBxterm\fP(1) が認識する OSC
434 コントロールシーケンスの一部である。
435 .TS
436 l l.
437 ESC ] 0 ; \fItxt\fP ST  アイコン名とウインドウタイトルを \fItxt\fP にセットする。
438 ESC ] 1 ; \fItxt\fP ST  アイコン名を \fItxt\fP にセットする。
439 ESC ] 2 ; \fItxt\fP ST  ウインドウタイトルを \fItxt\fP にセットする。
440 ESC ] 4 ; \fInum\fP; \fItxt\fP ST       ANSI 色 \fInum\fP を \fItxt\fP にセットする。
441 ESC ] 10 ; \fItxt ST    動的テキスト色を txt にセットする。\fP
442 \fIESC ] 4 6 ; name ST  チェンジログファイルを name に変更する(通常は\fP
443 \fI     コンパイル時オプションにより無効になっている)。\fP
444 \fIESC ] 5 0 ; fn ST    フォントを fn にセットする。\fP
445 .TE
446 .PP
447 以下のものは、少し違った意味にとられる (より多くの状態を保存し、より VT100/VT220 に近いふるまいをする):
448 .TS
449 l l l.
450 ESC 7  DECSC    カーソルの保存。
451 ESC 8  DECRC    カーソルの復元。
452 .TE
453 .PP
454 また、次のものも認識する:
455 .TS
456 l l l.
457 ESC F           カーソルをスクリーンの左下に移動する。
458                 (\fBxterm\fP(1) の \fBhpLowerleftBugCompat\fPリソースにより有効な時)
459 ESC l           (HP ターミナル毎に)メモリーロック。
460                 カーソルより上のメモリーをロックする。
461 ESC m           (HP ターミナル毎に)メモリーロックを解除する。
462 ESC n   LS2     G2 文字集合の呼び出し。
463 ESC o   LS3     G3 文字集合の呼び出し。
464 ESC |   LS3R    G3 文字集合を GR として呼び出す。
465 ESC }   LS2R    G2 文字集合を GR として呼び出す。
466 ESC ~   LS1R    G1 文字集合を GR として呼び出す。
467 .TE
468 .PP
469 .\"
470 また ESC % を認識し、Linux コンソールより更に完全な UTF\-8 実装を提供する。
471 .PP
472 \fBCSI シーケンス\fP
473 .sp
474 X11R5 由来のような、古いバージョンの \fBxterm\fP(1) はブリンク SGR を ボールド SGR として解釈する。 1995 年の
475 XFree86 3.1.2A のような、ANSI カラーが実装された、より新しい バージョンでは、ブリンク属性を色として表示することによってこれを
476 改善している。 最近のバージョンの xterm はブリンク SGR をテキストをブリンクさせることで 実装し、さらにまた、SGR
477 表示の代替案として色付きのテキストも利用できる。 Stock X11R6 版では、XFree86 xterm が組み入れられた X11R6.8
478 リリースまで 色設定 SGR を認識しなかった。 Linux が認識する他のすべての ECMA\-48 CSI シーケンスは \fIxterm\fP
479 でも認識されるが、\fBxterm\fP(1) は Linux が認識しない いくつかの ECMA\-48 と DEC のコントロールシーケンスも実装している。
480 .PP
481 \fBxterm\fP(1) は上述のすべての DEC プライベートモードのシーケンスを認識するが、 Linux
482 プライベートモードのシーケンスはどれも認識しない。 \fBxterm\fP(1) 自身のプライベートモードシーケンスに関しての議論は、 X
483 配布とともに入手可能な Edward Moy, Stephen Gildea,Thomas E. Dickey による \fIXterm Control
484 Sequences\fP ドキュメントを参照されたい。 このドキュメントは、簡潔なものであるが、このマニュアルページより 遥かに長いものである。
485 年代順の概観としては、
486 .PP
487 .RS
488 .UR http://invisible\-island.net\:/xterm\:/xterm.log.html
489 .UE
490 .RE
491 .PP
492 には xterm の変更の詳細がある。
493 .PP
494 \fIvttest\fP は
495 .PP
496 .RS
497 .UR http://invisible\-island.net\:/vttest/
498 .UE
499 .RE
500 .PP
501 で入手でき、これらのコントロールシーケンスの多くに関するデモを行う。 \fBxterm\fP(1) ソース配布パッケージには
502 その他の機能を学ぶことが出来るサンプルスクリプトが入っている。
503 .SH 注意
504 ESC 8 (DECRC) は ESC % で変更された文字集合を復元することはできない。
505 .SH バグ
506 2.0.23 では CSI が壊れていて、エスケープシーケンス中の NUL が 無視されない。
507 .PP
508 古いバージョン(2.0 以降)のカーネルには、8 ビット制御シーケンスを解釈する。 これらの "C1 コントロール" は ESC [, ESC ]
509 および同様な制御シーケンス 起動子を置き換えるために 128 から 159 のコードを使う。 新しいカーネルでは (UTF\-8
510 対応の変更時に見落とされたか壊れたために)  寸断しているが、実装は不完全で信頼できないものと評価されている。
511 .PP
512 Linux "プライベートモード" シーケンスは ECMA\-48 のプライベートモード コントロールシーケンスのルールに従っていない。 特に、 ]
513 で終わるものは標準終端文字を使えない。 OSC(パレット設定)シーケンスは大きな問題がある。 \fBxterm\fP(1) はこれを文字列終端文字 (ST)
514 が必要なコントロールシーケンスと 解釈するかもしれないからである。 (不正なコントロールシーケンスなので)無視される \fBsetterm\fP(1)
515 シーケンスと 違い、パレットシーケンスは \fBxterm\fP(1) をハングさせるかもしれない (しかしリターンキーを押すことで回復できる)。 Linux
516 コントロールシーケンスをハードコードしているアプリケーションに 適応させるには、\fBxterm\fP(1) リソースの \fBbrokenLinuxOSC\fP
517 を 真 (true) に設定する。
518 .PP
519 このドキュメントの古いバージョンでは、Linux が ECMA\-48 の不可視テキストの コントロールシーケンスを認識するかのように書かれていた。
520 これは無視される。
521 .SH 関連項目
522 \fBconsole\fP(4), \fBconsole_ioctl\fP(4), \fBcharsets\fP(7)
523 .SH この文書について
524 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
525 である。プロジェクトの説明とバグ報告に関する情報は
526 http://www.kernel.org/doc/man\-pages/ に書かれている。