doc/ja/man/man5/terminfo.5
Hiroyuki Hanai 09ea1a4dbe Fix typos.
Submitted by: Kazuo Horikawa <k-horik@yk.rim.or.jp>
1998-08-14 07:06:59 +00:00

1718 lines
65 KiB
Groff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.\" Note: this must be run through tbl befor nroff
.TH TERMINFO 5
.\" jpman %Id: terminfo.5,v 1.3 1998/06/13 12:36:00 horikawa Stab %
.\"
.\" WORD: capability ケーパビリティ(termcapで、端末の機能の 1 つ 1 つを指す)
.\" WORD: terminal 端末(いわゆるターミナル、文字端末を表す)
.\" WORD: display 描画
.\" WORD: screen 画面
.\" WORD: CRT CRT
.\" WORD: attribute 属性
.\" WORD: underline 下線
.\" WORD: return 復帰(文字)
.\" WORD: carriage return 復帰(文字)
.\" WORD: backspace 逆行文字
.\" WORD: backward tab 後退タブ(文字)
.\" WORD: padding パディング(時間かせぎのためのダミーで埋め込むバイト)
.\" WORD: erase (画面の)消去
.\" WORD: standout 強調(明るく/目立つ色で印字するなど)
.\" WORD: column 桁(カラム)
.\" WORD: arrow key 矢印キー
.\" WORD: reverse video 反転表示(白黒反転モードのこと)
.\" WORD: overstrike 重ね打ち(上打ち)
.\" WORD: status line ステータス行(画面最下にある状態表示行)
.\" WORD: scroll forward 前進スクロール
.\" WORD: scroll backward 後退スクロール
.\" WORD: background color 背景色
.\" WORD: foreground color 前景色
.\" WORD: color pair 色のペア、色ペア
.\" WORD: micro mode マイクロ移動モード
.\" WORD: magic cookie glitch 「魔法のクッキー」とでも呼ぶべきゴミ
.\" WORD: teletype driver 端末ドライバ(tty.4 のこと...terminfo のみで使われる?!)
.\" WORD: teletype driver mode 端末ドライバのモード
.\" WORD: glass-tty ブラウン管テレタイプ[terminfo.5,termcap.5]
.\"
.ds n 5
.ds d /usr/lib/terminfo
.SH 名称
terminfo \- 端末ケーパビリティのデータベース
.SH 書式
\*d/*/*
.SH 解説
.I terminfo
は端末の特性を記述するデータベースであり、
.IR vi (1),
.IR rogue (1)
.IR ncurses (3)
など、画面を活用したプログラムによって使用されます。
.I terminfo
は、端末が持つケーパビリティの集合を与え、画面操作をどのようにして行うか
を指定し、必要なパディングや初期化シーケンスを指定することで、端末の特性
を記述します。
.PP
.I terminfo
のエントリは、',' で区切られた幾つかのフィールドからなります。
\&',' の後の空白類文字(空白、タブ)は無視されます。各端末を表す最初の
エントリは、端末を表すものとしてよく知られている省略形の名前を指定します。
名前を複数指定するときは '|' で区切ります。最初の名前は、その端末のものと
して最もよく知られた名前を与えます。最後の名前には、その端末を識別できるだけの
長い名前を指定するべきです。それら以外の名前は、同じ端末を指す別名と見な
されます。最後のもの以外の名前は、全て英小文字からなり、空白が含まれてい
てはいけません。最後の名前には、読みやすくするための大文字や空白を含めて
もかまいません。
.PP
端末名(最後の冗長なものは除く)は、以下の約束にしたがって付けてください。
名前の基本部分を、端末を構成するハードウェアの特徴的部分から名付けます
(``hp2621''のように)。この名前にはハイフンを含めてはいけません。ただし、
別名は他の名前と重ならないように選べば構いません。ハードウェアが持つ
モードや、ユーザのプリファレンスが現れる部分については、基本名の後に、ハイフンと
モードを表す名前をつけて表してください。例えば、vt100 の 132 桁モードは
vt100-w のようになります。使えるところがあれば、以下の接尾辞を使ってくだ
さい:
.TS
center;
l c l
l l l.
\fB接尾辞 意味 例\fP
-w 広いモード(80 桁以上) vt100-w
-am 自動マージン付 (通常これがデフォルト) vt100-am
-nam 自動マージン無し vt100-nam
-\fIn\fP 画面の行数 aaa-60
-na 矢印キー無し(もしくはローカルでのみ有効) c100-na
-\fIn\fPp 画面記憶ページ数 c100-4p
-rv 反転表示 c100-rv
.TE
.SH ケーパビリティ
variable は、(terminfo レベルの)プログラマがケーパビリティ情報を使用する
ときに用いる名前です。capname は、データベースのテキストの中で用いる短縮
名で、データベースを更新する人間が用いる名前です。i.code は、コンパイル
されたデータベース中で用いられる2文字の内部コードで、古典的な
.B termcap
ケーパビリティの名前と常に対応しています。
.P
ケーパビリティの名前の長さには、決まった上限はありません。ただし、名前を
短くし、ソースファイルにタブを使って
.B caps
をきれいに並べられるように、非公式ながら上限 5 文字の制限が既に
採用されています。
可能な場合は常に、名前は ANSI X3.64-1979 標準規格と同一もしくは類似のも
のを選んであります。その意味も、その規格での規定に合致するようにしてあり
ます。
.TP
(P)
パディングが指定可能であることを表します。
.TP
(G)
tparm を使って文字列を渡す際に、(#\fIi\fP) で与えたパラメータをともに
渡すことを表します。
.TP
(*)
影響を受ける行数にパディングが依存することを表します。
.TP
(#\d\fIi\fP\u)
\fIi\fP 番目のパラメータを表します。
.TS
center;
c c c c
c c c c
l l l l.
\fBvariable cap- i. 説明\fR
\f3ブール値: name code\fR
\s-1auto_left_margin, bw bw cub1 は桁0から最後の桁に回り
込む\s+1
\s-1auto_right_margin, am am 自動マージン機能を持つ\s+1
\s-1back_color_erase, bce ut 画面を背景色で消去する\s+1
\s-1can_change, ccc cc 既存の色を再定義可能\s+1
\s-1ceol_standout_glitch, xhp xs 強調出力は上書きで消去されない
(hp 系端末)\s+1
\s-1col_addr_glitch, xhpa YA hcp/mhpc では正方向のみ移動可能\s+1
\s-1cpi_changes_res, cpix YF 文字ピッチを変えると解像度が変わる\s+1
\s-1cr_cancels_micro_mode, crxm YB cr を使用するとマイクロモードが
オフになる\s+1
\s-1eat_newline_glitch, xenl xn 80 桁より後の改行は無視される
(Concept の機能)\s+1
\s-1erase_overstrike, eo eo 空白の重ね打ちで消去可能\s+1
\s-1generic_type, gn gn 一般的な回線タイプ (例: dialup,
switch)\s+1
\s-1hard_copy, hc hc ハードコピー端末\s+1
\s-1hard_cursor, chts HC カーソルが見にくい\s+1
\s-1has_meta_key, km km メタキーを持つ (押すとパリティ
ビットがセットされる)\s+1
\s-1has_print_wheel, daisy YC 文字セットを変更するのに人手が
必要なプリンタ\s+1
\s-1has_status_line, hs hs ステータス行を持つ\s+1
\s-1hue_lightness_saturation, hls hl 端末は HLS 色表記のみ使用
(tektronix社端末)\s+1
\s-1insert_null_glitch, in in 挿入モードでナル文字を区別する\s+1
\s-1lpi_changes_res, lpix YG 行ピッチを変えると解像度が変わる\s+1
\s-1memory_above, da da 画面より上の描画が保持される\s+1
\s-1memory_below, db db 画面より下の描画が保持される\s+1
\s-1move_insert_mode, mir mi 挿入モードで安全にカーソル移動可能\s+1
\s-1move_standout_mode, msgr ms 強調モードで安全にカーソル移動可能\s+1
\s-1needs_xon_xoff, nxon nx パディング機能が働かない。
xon/xoff 制御が必要\s+1
\s-1no_esc_ctl_c, xsb xb Beehive 端末 (f1=escape,
f2=ctrl C)\s+1
\s-1non_rev_rmcup, nrrmc NR smcup は rmcup の動作を反転しない\s+1
\s-1no_pad_char, npc NP パディング文字が存在しない\s+1
\s-1non_dest_scroll_region, ndscr ND スクロール領域が非破壊的\s+1
\s-1over_strike, os os 端末は重ね打ち可能\s+1
\s-1prtr_silent, mc5i 5i プリンタ出力は画面にエコーしない\s+1
\s-1row_addr_glitch, xvpa YD vhp/mvpa では正方向のみ移動可能\s+1
\s-1semi_auto_right_margin, sam YE 最終桁で出力すると cr 動作をする\s+1
\s-1status_line_esc_ok, eslok es ステータス行上でエスケープ可能\s+1
\s-1dest_tabs_magic_smso, xt xt タブは破壊的 / 強調文字の動作が
奇妙 (Teleray 1061)\s+1
\s-1tilde_glitch, hz hz Hazeltine 端末。~ 表示不可\s+1
\s-1transparent_underline, ul ul 下線付文字は上書きする\s+1
\s-1xon_xoff, xon xo 端末は xon/xoff ハンドシェークを
行う\s+1
\s-1\f3数値:\fR\s+1
\s-1bit_image_entwining, bitwin Yo SVr4.0 に記述なし\s+1
\s-1buffer_capacity, bufsz Ya 印字前にバッファリング可能な
バイト数\s+1
\s-1columns, cols co 1行の桁数\s+1
\s-1dot_vert_spacing, spinv Yb 水平方向のドット間隔(dots/inch)\s+1
\s-1dot_horz_spacing, spinh Yc 垂直方向のピン間隔(pins/inch)\s+1
\s-1init_tabs, it it タブの初期設定は空白幾つか\s+1
\s-1label_height, lh lh ラベル 1 つの行数\s+1
\s-1label_width, lw lw ラベル 1 つの桁数\s+1
\s-1lines, lines li 画面 / ページの行数\s+1
\s-1lines_of_memory, lm lm lines の値以上の場合メモリの行数。
0 は行数が可変であることを表す\s+1
\s-1magic_cookie_glitch, xmc sg smso や rmso で画面に残る空白数\s+1
\s-1max_colors, colors Co 画面上の最大色数\s+1
\s-1max_micro_address, maddr Yd micro_..._address での最大値\s+1
\s-1max_micro_jump, mjump Ye parm_..._micro での最大値\s+1
\s-1max_pairs, pairs pa 画面上の色ペアの最大値\s+1
\s-1micro_col_size, mcs Yf マイクロモードでの文字ステップ
サイズ\s+1
\s-1micro_line_size, mls Yg マイクロモードでの行ステップ
サイズ\s+1
\s-1no_color_video, ncv NC 色付きでは使用できないビデオ属性\s+1
\s-1number_of_pins, npins Yh プリントヘッドのピン数\s+1
\s-1num_labels, nlab Nl 画面上のラベル数\s+1
\s-1output_res_char, orc Yi 水平解像度(1行あたりのユニット
数で)\s+1
\s-1output_res_line, orl Yj 垂直解像度(1行あたりのユニット
数で)\s+1
\s-1output_res_horz_inch, orhi Yk 水平解像度(インチあたりのユニッ
ト数で)\s+1
\s-1output_res_vert_inch, orvi Yl 垂直解像度(インチあたりのユニッ
ト数で)\s+1
\s-1padding_baud_rate, pb pb 復帰改行でパディングが必要な
最低ボー速度\s+1
\s-1virtual_terminal, vt vt 仮想画面番号 (\s-1UNIX\s+1 system)\s+1
\s-1width_status_line, wsl ws ステータス行の桁数\s+1
.TE
(以下の数値ケーパビリティは、SVr4.0 の term 構造体に存在していますが、
マニュアルには未だに説明がありません。以下のコメントは term 構造体ヘッダ
から取りました。)
.TS
center;
l l l l.
\s-1bit_image_type, bitype Yp ビットイメージデバイスのタイプ\s+1
\s-1buttons, btns BT マウスのボタン数\s+1
\s-1max_attributes, ma ma 端末が組み合わせて処理できる
属性数の最大値\s+1
\s-1maximum_windows, wnum MW 定義可能なウィンドウ数の最大\s+1
\s-1print_rate, cps Ym 印字速度(文字/秒)\s+1
\s-1wide_char_size, widcs Yn 倍幅モードでの文字ステップサイズ\s+1
\s-1\f3文字列:\fR\s+1
\s-1acs_chars, acsc ac 図形文字セットの組 - def=vt100\s+1
\s-1alt_scancode_esc, scesa S8 スキャンコードエミュレーション
のための別のエスケープ文字
(デフォルトは vt100)\s+1
\s-1back_tab, cbt bt 後退タブ (P)\s+1
\s-1bell, bel bl 可聴シグナル(ベル) (P)\s+1
\s-1bit_image_repeat, birep Xy ビットイメージセル #1 を #2 回
繰り返す (tparm使用)\s+1
\s-1bit_image_newline, binel Zz ビットイメージの次の行に移動
(tparm使用)\s+1
\s-1bit_image_carriage_return, bicr Yv 同一行の先頭へ移動(tparm使用)\s+1
\s-1carriage_return, cr cr 復帰文字 (P*)\s+1
\s-1change_char_pitch, cpi ZA 1インチあたりの文字数を変更\s+1
\s-1change_line_pitch, lpi ZB 1インチあたりの行数を変更\s+1
\s-1change_res_horz, chr ZC 水平解像度を変更\s+1
\s-1change_res_vert, cvr ZD 垂直解像度を変更\s+1
\s-1change_scroll_region, csr cs #1 行目から #2 行目までに変更
(vt100) (PG)\s+1
\s-1char_padding, rmp rP ip と同様だが挿入モードで使用\s+1
\s-1char_set_names, csnm Zy 文字セット名のリスト\s+1
\s-1clear_all_tabs, tbc ct タブ設定全てをクリア (P)\s+1
\s-1clear_margins, mgc MC マージン設定全てをクリア(上, 下,
横)\s+1
\s-1clear_screen, clear cl 画面をクリアし、カーソルをホーム
に移動 (P*)\s+1
\s-1clr_bol. el1 cb 行先頭までクリア\s+1
\s-1clr_eol, el ce 行末までクリア (P)\s+1
\s-1clr_eos, ed cd 画面末までクリア (P*)\s+1
\s-1code_set_init, csin ci 複数コードセットの初期化
シーケンス\s+1
\s-1color_names, colornm Yw 色 #1 の名前を与える\s+1
\s-1column_address, hpa ch カーソルの桁位置を指定 (PG)\s+1
\s-1command_character, cmdch CC 端末がプロトタイプで設定可能な
コマンド文字\s+1
\s-1cursor_address, cup cm 画面相対でカーソルを行 #1 桁 #2
に移動 (PG)\s+1
\s-1cursor_down, cud1 do 1 行下に移動\s+1
\s-1cursor_home, home ho カーソルをホームに移動 (cup が
ない場合)\s+1
\s-1cursor_invisible, civis vi カーソルを見えなくする\s+1
\s-1cursor_left, cub1 le カーソルを1 空白分左に移動\s+1
\s-1cursor_mem_address, mrcup CM メモリ相対のカーソル位置指定\s+1
\s-1cursor_normal, cnorm ve カーソルを通常表示にする (vs/vi
を元に戻す)\s+1
\s-1cursor_right, cuf1 nd 非破壊空白 (カーソル右移動)\s+1
\s-1cursor_to_ll, ll ll 最終行の最初の桁 (cup がない場合)\s+1
\s-1cursor_up, cuu1 up 1 行上へ (カーソルを上へ)\s+1
\s-1cursor_visible, cvvis vs カーソルを見えるようにする\s+1
\s-1define_bit_image_region, defbi Yx 矩形のビットイメージ領域を定義
(tparmを使用)\s+1
\s-1define_char, defc ZE 文字セット中の文字を定義\s+1
\s-1delete_character, dch1 dc 文字削除 (P*)\s+1
\s-1delete_line, dl1 dl 行削除 (P*)\s+1
\s-1device_type, devt dv 言語/コードセットサポートの指定\s+1
\s-1dis_status_line, dsl ds ステータス行を無効にする\s+1
\s-1display_pc_char, dispc S1 PC 文字を表示\s+1
\s-1down_half_line, hd hd 半行下へ (1/2 改行)\s+1
\s-1ena_acs, enacs eA 別の文字セットを有効にする\s+1
\s-1end_bit_image_region, endbi Yy ビットイメージ領域の終了
(tparm使用)\s+1
\s-1enter_alt_charset_mode, smacs as 別の文字セット開始 (P)\s+1
\s-1enter_am_mode, smam SA 自動マージンオン\s+1
\s-1enter_blink_mode, blink mb 点滅モードオン\s+1
\s-1enter_bold_mode, bold md ボールド(更に明るい)モードオン\s+1
\s-1enter_ca_mode, smcup ti cup を用いたプログラムを開始する
文字列\s+1
\s-1enter_delete_mode, smdc dm 削除モード開始\s+1
\s-1enter_dim_mode, dim mh 半輝度モードオン\s+1
\s-1enter_doublewide_mode, swidm ZF 倍幅モード開始\s+1
\s-1enter_draft_quality, sdrfq ZG ドラフト印字モード開始\s+1
\s-1enter_insert_mode, smir im 挿入モード開始\s+1
\s-1enter_italics_mode, sitm ZH 斜体モード開始\s+1
\s-1enter_leftward_mode, slm ZI 左向き移動モード開始\s+1
\s-1enter_micro_mode, smicm ZJ マイクロ移動モード開始\s+1
\s-1enter_near_letter_quality, snlq ZK NLQ印字モード開始\s+1
\s-1enter_normal_quality, snrmq ZL 通常品質印字モード開始\s+1
\s-1enter_pc_charset_mode, smpch S2 PC 文字表示モード開始\s+1
\s-1enter_protected_mode, prot mp 保護モードオン\s+1
\s-1enter_reverse_mode, rev mr 反転表示モードオン\s+1
\s-1enter_scancode_mode, smsc S4 PC スキャンコードモード開始\s+1
\s-1enter_secure_mode, invis mk ブランクモードオン (文字が
見えない)\s+1
\s-1enter_shadow_mode, sshm ZM シャドウプリントモード開始\s+1
\s-1enter_standout_mode, smso so 強調モード開始\s+1
\s-1enter_subscript_mode, ssubm ZN 下付き文字モード開始\s+1
\s-1enter_superscript_mode, ssupm ZO 上付き文字モード開始\s+1
\s-1enter_underline_mode, smul us 下線モード開始\s+1
\s-1enter_upward_mode, sum ZP 上向き移動モードに入る\s+1
\s-1enter_xon_mode, smxon SX xon/xoff ハンドシェークオン\s+1
\s-1erase_chars, ech ec #1 個の文字を削除 (PG)\s+1
\s-1exit_alt_charset_mode, rmacs ae 別の文字セット終了 (P)\s+1
\s-1exit_am_mode, rmam RA 自動マージンオフ\s+1
\s-1exit_attribute_mode, sgr0 me 全属性オフ\s+1
\s-1exit_ca_mode, rmcup te cup を用いたプログラムを終了する
文字列\s+1
\s-1exit_delete_mode, rmdc ed 削除モード終了\s+1
\s-1exit_doublewide_mode, rwidm ZQ 倍幅印字モード終了\s+1
\s-1exit_insert_mode, rmir ei 挿入モード終了\s+1
\s-1exit_italics_mode, ritm ZR 斜体モードを止める\s+1
\s-1exit_leftward_mode, rlm ZS (通常の)右向き移動モードに入る\s+1
\s-1exit_micro_mode, rmicm ZT マイクロ移動モード終了\s+1
\s-1exit_pc_charset_mode, rmpch S3 PC 文字表示終了\s+1
\s-1exit_scancode_mode, rmsc S5 PC スキャンコードモード終了\s+1
\s-1exit_shadow_mode, rshm ZU シャドウプリントモード終了\s+1
\s-1exit_standout_mode, rmso se 強調モード終了\s+1
\s-1exit_subscript_mode, rsubm ZV 下付き文字モード終了\s+1
\s-1exit_superscript_mode, rsupm ZW 上付き文字モード終了\s+1
\s-1exit_underline_mode, rmul ue 下線モード終了\s+1
\s-1exit_upward_mode, rum ZX (通常の)下向き移動モードに入る\s+1
\s-1exit_xon_mode, rmxon RX xon/xoff ハンドシェークオフ\s+1
\s-1flash_screen, flash vb 可視ベル (カーソルは移動しない)\s+1
\s-1form_feed, ff ff ハードコピー端末でのページ排出
(P*)\s+1
\s-1from_status_line, fsl fs ステータス行からの復帰\s+1
\s-1init_1string, is1 i1 端末初期化文字列\s+1
\s-1init_2string, is2 i2 端末初期化文字列\s+1
\s-1init_3string, is3 i3 端末初期化文字列\s+1
\s-1init_file, if if is を含むファイルの名前\s+1
\s-1init_prog, iprog iP 初期化プログラムのパス名\s+1
\s-1initialize_color, initc Ic 色定義の初期化\s+1
\s-1initialize_pair, initp Ip 色ペアの初期化\s+1
\s-1insert_character, ich1 ic 文字の挿入 (P)\s+1
\s-1insert_line, il1 al 空白行の追加 (P*)\s+1
\s-1insert_padding, ip ip 文字挿入の後にパディングを挿入
(P*)\s+1
\s-1key_a1, ka1 K1 キーパッドの左上キー\s+1
\s-1key_a3, ka3 K3 キーパッドの右上キー\s+1
\s-1key_b2, kb2 K2 キーパッドの中央キー\s+1
\s-1key_backspace, kbs kb backspace キーが送出する文字列\s+1
\s-1key_beg, kbeg @1 begin キー\s+1
\s-1key_btab, kcbt kB back tab キー\s+1
\s-1key_c1, kc1 K4 キーパッドの左下キー\s+1
\s-1key_c3, kc3 K5 キーパッドの右下キー\s+1
\s-1key_cancel, kcan @2 cancel キー\s+1
\s-1key_catab, ktbc ka clear-all-tabs キーが送出する
データ\s+1
\s-1key_clear, kclr kC clear screen キー または erase
キーが送出するデータ\s+1
\s-1key_close, kclo @3 close キー\s+1
\s-1key_command, kcmd @4 command キー\s+1
\s-1key_copy, kcpy @5 copy キー\s+1
\s-1key_create, kcrt @6 create キー\s+1
\s-1key_ctab, kctab kt clear-tab キーが送出するデータ\s+1
\s-1key_dc, kdch1 kD delete character キーが送出する
データ\s+1
\s-1key_dl, kdl1 kL delete line キーが送出するデータ\s+1
\s-1key_down, kcud1 kd 下向き矢印キーが送出するデータ\s+1
\s-1key_eic, krmir kM 挿入モードで rmir か smir が送出
するデータ\s+1
\s-1key_end, kend @7 end キー\s+1
\s-1key_enter, kent @8 enter/send キー\s+1
\s-1key_eol, kel kE clear-to-end-of-line キーが送出
するデータ\s+1
\s-1key_eos, ked kS clear-to-end-of-screen キーが送出
するデータ\s+1
\s-1key_exit, kext @9 exit キー\s+1
\s-1key_f0, kf0 k0 f0 ファンクションキー\s+1
\s-1key_f1, kf1 k1 f1 フンクションキー\s+1
\s-1key_f2, kf2 k2 f2 ファンクションキー\s+1
\s-1key_f3, kf3 k3 f3 ファンクションキー\s+1
\s-1key_f4, kf4 k4 f4 ファンクションキー\s+1
\s-1key_f5, kf5 k5 f5 ファンクションキー\s+1
\s-1key_f6, kf6 k6 f6 ファンクションキー\s+1
\s-1key_f7, kf7 k7 f7 ファンクションキー\s+1
\s-1key_f8, kf8 k8 f8 ファンクションキー\s+1
\s-1key_f9, kf9 k9 f9 ファンクションキー\s+1
\s-1key_f10, kf10 k; f10 ファンクションキー\s+1
\s-1key_f11, kf11 F1 F11 ファンクションキー\s+1
\s-1key_f12, kf12 F2 F12 ファンクションキー\s+1
\s-1key_f13, kf13 F3 F13 ファンクションキー\s+1
\s-1key_f14, kf14 F4 F14 ファンクションキー\s+1
\s-1key_f15, kf15 F5 F15 ファンクションキー\s+1
\s-1key_f16, kf16 F6 F16 ファンクションキー\s+1
\s-1key_f17, kf17 F7 F17 ファンクションキー\s+1
\s-1key_f18, kf18 F8 F18 ファンクションキー\s+1
\s-1key_f19, kf19 F9 F19 ファンクションキー\s+1
\s-1key_f20, kf20 FA F20 ファンクションキー\s+1
\s-1key_f21, kf21 FB F21 ファンクションキー\s+1
\s-1key_f22, kf22 FC F22 ファンクションキー\s+1
\s-1key_f23, kf23 FD F23 ファンクションキー\s+1
\s-1key_f24, kf24 FE F24 ファンクションキー\s+1
\s-1key_f25, kf25 FF F25 ファンクションキー\s+1
\s-1key_f26, kf26 FG F26 ファンクションキー\s+1
\s-1key_f27, kf27 FH F27 ファンクションキー\s+1
\s-1key_f28, kf28 FI F28 ファンクションキー\s+1
\s-1key_f29, kf29 FJ F29 ファンクションキー\s+1
\s-1key_f30, kf30 FK F30 ファンクションキー\s+1
\s-1key_f31, kf31 FL F31 ファンクションキー\s+1
\s-1key_f32, kf32 FM F32 ファンクションキー\s+1
\s-1key_f33, kf33 FN F33 ファンクションキー\s+1
\s-1key_f34, kf34 FO F34 ファンクションキー\s+1
\s-1key_f35, kf35 FP F35 ファンクションキー\s+1
\s-1key_f36, kf36 FQ F36 ファンクションキー\s+1
\s-1key_f37, kf37 FR F37 ファンクションキー\s+1
\s-1key_f38, kf38 FS F38 ファンクションキー\s+1
\s-1key_f39, kf39 FT F39 ファンクションキー\s+1
\s-1key_f40, kf40 FU F40 ファンクションキー\s+1
\s-1key_f41, kf41 FV F41 ファンクションキー\s+1
\s-1key_f42, kf42 FW F42 ファンクションキー\s+1
\s-1key_f43, kf43 FX F43 ファンクションキー\s+1
\s-1key_f44, kf44 FY F44 ファンクションキー\s+1
\s-1key_f45, kf45 FZ F45 ファンクションキー\s+1
\s-1key_f46, kf46 Fa F46 ファンクションキー\s+1
\s-1key_f47, kf47 Fb F47 ファンクションキー\s+1
\s-1key_f48, kf48 Fc F48 ファンクションキー\s+1
\s-1key_f49, kf49 Fd F49 ファンクションキー\s+1
\s-1key_f50, kf50 Fe F50 ファンクションキー\s+1
\s-1key_f51, kf51 Ff F51 ファンクションキー\s+1
\s-1key_f52, kf52 Fg F52 ファンクションキー\s+1
\s-1key_f53, kf53 Fh F53 ファンクションキー\s+1
\s-1key_f54, kf54 Fi F54 ファンクションキー\s+1
\s-1key_f55, kf55 Fj F55 ファンクションキー\s+1
\s-1key_f56, kf56 Fk F56 ファンクションキー\s+1
\s-1key_f57, kf57 Fl F57 ファンクションキー\s+1
\s-1key_f58, kf58 Fm F58 ファンクションキー\s+1
\s-1key_f59, kf59 Fn F59 ファンクションキー\s+1
\s-1key_f60, kf60 Fo F60 ファンクションキー\s+1
\s-1key_f61, kf61 Fp F61 ファンクションキー\s+1
\s-1key_f62, kf62 Fq F62 ファンクションキー\s+1
\s-1key_f63, kf63 Fr F63 ファンクションキー\s+1
\s-1key_find, kfnd @0 find キー\s+1
\s-1key_help, khlp %1 help キー\s+1
\s-1key_home, khome kh home キーが送出するデータ\s+1
\s-1key_ic, kich1 kI ins char/enter ins モードキーが
送出するデータ\s+1
\s-1key_il, kil1 kA insert line キーが送出するデータ\s+1
\s-1key_left, kcub1 kl terminal left arrow キーが送出
するデータ\s+1
\s-1key_ll, kll kH home-down キーが送出するデータ\s+1
\s-1key_mark, kmrk %2 mark キー\s+1
\s-1key_message, kmsg %3 message キー\s+1
\s-1key_move, kmov %4 move キー\s+1
\s-1key_next, knxt %5 next キー\s+1
\s-1key_npage, knp kN next-page キーが送出するデータ\s+1
\s-1key_open, kopn %6 open キー\s+1
\s-1key_options, kopt %7 options キー\s+1
\s-1key_ppage, kpp kP previous-page キーが送出する
データ\s+1
\s-1key_previous, kprv %8 previous キー\s+1
\s-1key_print, kprt %9 print キー\s+1
\s-1key_redo, krdo %0 redo キー\s+1
\s-1key_reference, kref &1 reference キー\s+1
\s-1key_refresh, krfr &2 refresh キー\s+1
\s-1key_replace, krpl &3 replace キー\s+1
\s-1key_restart, krst &4 restart キー\s+1
\s-1key_resume, kres &5 resume キー\s+1
\s-1key_right, kcuf1 kr terminal right arrow キーが送出
するデータ\s+1
\s-1key_save, ksav &6 save キー\s+1
\s-1key_sbeg, kBEG &9 シフト状態の begin キー\s+1
\s-1key_scancel, kCAN &0 シフト状態の cancel キー\s+1
\s-1key_scommand, kCMD *1 シフト状態の command キー\s+1
\s-1key_scopy, kCPY *2 シフト状態の copy キー\s+1
\s-1key_screate, kCRT *3 シフト状態の create キー\s+1
\s-1key_sdc, kDC *4 シフト状態の delete char キー\s+1
\s-1key_sdl, kDL *5 シフト状態の delete line キー\s+1
\s-1key_select, kslt *6 select キー\s+1
\s-1key_send, kEND *7 シフト状態の end キー\s+1
\s-1key_seol, kEOL *8 シフト状態の end-of-line キー\s+1
\s-1key_sexit, kEXT *9 シフト状態の exit キー\s+1
\s-1key_sf, kind kF scroll-forward/down キーが送出
するデータ\s+1
\s-1key_sfind, kFND *0 シフト状態の find キー\s+1
\s-1key_shelp, kHLP #1 シフト状態の help キー\s+1
\s-1key_shome, kHOM #2 シフト状態の home キー\s+1
\s-1key_sic, kIC #3 シフト状態の insert char キー\s+1
\s-1key_sleft, kLFT #4 シフト状態の left キー\s+1
\s-1key_smessage, kMSG %a シフト状態の message キー\s+1
\s-1key_smove, kMOV %b シフト状態の move キー\s+1
\s-1key_snext, kNXT %c シフト状態の next キー\s+1
\s-1key_soptions, kOPT %d シフト状態の options キー\s+1
\s-1key_sprevious, kPRV %e シフト状態の previous キー\s+1
\s-1key_sprint, kPRT %f シフト状態の print キー\s+1
\s-1key_sr, kri kR scroll-backward/up キーが送出する
データ\s+1
\s-1key_sredo, kRDO %g シフト状態の redo キー\s+1
\s-1key_sreplace, kRPL %h シフト状態の replace キー\s+1
\s-1key_sright, kRIT %i シフト状態の right キー\s+1
\s-1key_srsume, kRES %j シフト状態の resume キー\s+1
\s-1key_ssave, kSAV !1 シフト状態の save キー\s+1
\s-1key_ssuspend, kSPD !2 シフト状態の suspend キー\s+1
\s-1key_stab, khts kT set-tab キーが送出するデータ\s+1
\s-1key_sundo, kUND !3 シフト状態の undo キー\s+1
\s-1key_suspend, kspd &7 suspend キー\s+1
\s-1key_undo, kund &8 undo キー\s+1
\s-1key_up, kcuu1 ku terminal up arrow キーが送出
するデータ\s+1
\s-1keypad_local, rmkx ke "keypad transmit" モードから抜ける\s+1
\s-1keypad_xmit, smkx ks "keypad transmit" モードに入る\s+1
\s-1lab_f0, lf0 l0 f0 でない場合、ファンクション
キー f0 のラベル\s+1
\s-1lab_f1, lf1 l1 f1 でない場合、ファンクション
キー f1 のラベル\s+1
\s-1lab_f2, lf2 l2 f2 でない場合、ファンクション
キー f2 のラベル\s+1
\s-1lab_f3, lf3 l3 f3 でない場合、ファンクション
キー f3 のラベル\s+1
\s-1lab_f4, lf4 l4 f4 でない場合、ファンクション
キー f4 のラベル\s+1
\s-1lab_f5, lf5 l5 f5 でない場合、ファンクション
キー f5 のラベル\s+1
\s-1lab_f6, lf6 l6 f6 でない場合、ファンクション
キー f6 のラベル\s+1
\s-1lab_f7, lf7 l7 f7 でない場合、ファンクション
キー f7 のラベル\s+1
\s-1lab_f8, lf8 l8 f8 でない場合、ファンクション
キー f8 のラベル\s+1
\s-1lab_f9, lf9 l9 f9 でない場合、ファンクション
キー f9 のラベル\s+1
\s-1lab_f10, lf10 la f10 でない場合、ファンクション
キー f10 のラベル\s+1
\s-1label_on, smln LO ソフトラベルオン\s+1
\s-1label_off, rmln LF ソフトラベルオフ\s+1
\s-1meta_off, rmm mo メタモードオフ\s+1
\s-1meta_on, smm mm メタモード(8番目のビット)の
オン\s+1
\s-1micro_column_address, mhpa ZY マイクロモードの column_address\s+1
\s-1micro_down, mcud1 ZZ マイクロモードの cursor_down\s+1
\s-1micro_left, mcub1 Za マイクロモードの cursor_left\s+1
\s-1micro_right, mcuf1 Zb マイクロモードの cursor_right\s+1
\s-1micro_row_address, mvpa Zc マイクロモードの row_address\s+1
\s-1micro_up, mcuu1 Zd マイクロモードの cursor_up\s+1
\s-1newline, nel nw 改行 (cr のあとに lf が来る)\s+1
\s-1order_of_pins, porder Ze ソフトウェアビットを印字ヘッドピン
に一致させる\s+1
\s-1orig_colors, oc oc 全ての色ペアをリセット\s+1
\s-1orig_pair, op op デフォルトの色ペアを本来のものに
する\s+1
\s-1pad_char, pad pc パディング文字 (ナル文字以外)\s+1
\s-1parm_dch, dch DC #1 文字を削除 (PG*)\s+1
\s-1parm_delete_line, dl DL #1 行を削除 (PG*)\s+1
\s-1parm_down_cursor, cud DO カーソルを下に #1 行移動 (PG*)\s+1
\s-1parm_down_micro, mcud Zf マイクロモードの cud\s+1
\s-1parm_ich, ich IC 空白文字を #1 文字挿入 (PG*)\s+1
\s-1parm_index, indn SF #1 行の前進スクロール (PG)\s+1
\s-1parm_insert_line, il AL 空行を #1 行挿入する (PG*)\s+1
\s-1parm_left_cursor, cub LE カーソルを左へ #1 文字分移動
(PG)\s+1
\s-1parm_left_micro, mcub Zg マイクロモードの cul\s+1
\s-1parm_right_cursor, cuf RI カーソルを右へ #1 文字分移動
(PG*)\s+1
\s-1parm_right_micro, mcuf Zh マイクロモードの cuf\s+1
\s-1parm_rindex, rin SR #1 行の後退スクロール (PG)\s+1
\s-1parm_up_cursor, cuu UP カーソルを上へ #1 行動かす (PG*)\s+1
\s-1parm_up_micro, mcuu Zi マイクロモードの cuu\s+1
\s-1pkey_key, pfkey pk ファンクションキー #1 の打鍵
文字列を #2 とする\s+1
\s-1pkey_local, pfloc pl ファンクションキー #1 の実行
文字列を #2 とする\s+1
\s-1pkey_xmit, pfx px ファンクションキー #1 の送信
文字列を #2とする\s+1
\s-1pkey_plab, pfxl xl ファンクションキー #1 に #2 を
送信させ #3 を表示させる\s+1
\s-1plab_norm, pln pn ラベル #1 に文字列 #2 を表示\s+1
\s-1print_screen, mc0 ps 画面の内容を印字させる\s+1
\s-1prtr_non, mc5p pO #1 バイトだけプリンタをオンにする\s+1
\s-1prtr_off, mc4 pf プリンタをオフにする\s+1
\s-1prtr_on, mc5 po プリンタをオンにする\s+1
\s-1repeat_char, rep rp 文字 #1 を #2 回繰り返す (PG*)\s+1
\s-1req_for_input, rfi RF 入力を要求する\s+1
\s-1reset_1string, rs1 r1 端末を完全にリセットしてまともな
モードに戻す\s+1
\s-1reset_2string, rs2 r2 端末を完全にリセットしてまともな
モードに戻す\s+1
\s-1reset_3string, rs3 r3 端末を完全にリセットしてまともな
モードに戻す\s+1
\s-1reset_file, rf rf リセット文字列を持つファイル名\s+1
\s-1restore_cursor, rc rc 最後の sc の位置にカーソルを戻す\s+1
\s-1row_address, vpa cv 垂直方向の絶対座標移動 (行設定)
(PG)\s+1
\s-1save_cursor, sc sc カーソル位置を保存 (P)\s+1
\s-1scancode_escape, scesc S7 スキャンコードエミュレーションの
ためのエスケープ\s+1
\s-1scroll_forward, ind sf テキストを上にスクロール (P)\s+1
\s-1scroll_reverse, ri sr テキストを下にスクロール (P)\s+1
\s-1select_char_set, scs Zj 文字セットの選択\s+1
\s-1set0_des_seq, s0ds s0 コードセット 0 にシフト (EUC
セット 0, ASCII)\s+1
\s-1set1_des_seq, s1ds s1 コードセット 1 にシフト\s+1
\s-1set2_des_seq, s2ds s2 コードセット 2 にシフト\s+1
\s-1set3_des_seq, s3ds s3 コードセット 3 にシフト\s+1
\s-1set_a_background, setab AB ANSI エスケープシーケンスを使って
背景色を設定\s+1
\s-1set_a_foreground, setaf AF ANSI エスケープシーケンスを使って
前景色を設定\s+1
\s-1set_attributes, sgr sa ビデオ属性を定義 (PG9)\s+1
\s-1set_background, setb Sb 現在の背景色を設定\s+1
\s-1set_bottom_margin, smgb Zk 現在行を下マージンに設定\s+1
\s-1set_bottom_margin_parm, smgbp Zl 最下行を #1 行目か下から #2 行目
にする\s+1
\s-1set_color_band, setcolor Yz リボンの色を #1 に変更\s+1
\s-1set_color_pair, scp sp 現在の色のペアを設定\s+1
\s-1set_foreground, setf Sf 現在の前景色を設定\s+1
\s-1set_left_margin, smgl ML 左マージンを現在行で設定\s+1
\s-1set_left_margin_parm, smglp Zm 左 (右) マージンを桁 #1 (#2) に
設定\s+1
\s-1set_lr_margin, smglr ML 左右両マージンを設定\s+1
\s-1set_page_length, slines YZ ページ長を #1 行に設定 (tparm
使用)\s+1
\s-1set_right_margin, smgr MR 右マージンを現在桁に設定\s+1
\s-1set_right_margin_parm, smgrp Zn 右マージンを桁 #1 に設定\s+1
\s-1set_tab, hts st 全行のタブを現在の桁に設定\s+1
\s-1set_tb_margin, smgtb MT 上下両マージンを設定\s+1
\s-1set_top_margin, smgt Zo 現在行を上マージンに設定\s+1
\s-1set_top_margin_parm, smgtp Zp 上マージンを行 #1 に設定\s+1
\s-1set_window, wind wi 現在のウインドウを行 #1-#2 桁
#3-#4 とする\s+1
\s-1start_bit_image, sbim Zq ビットイメージグラフィック印字の
開始\s+1
\s-1start_char_set_def, scsd Zr 文字セット定義の開始\s+1
\s-1stop_bit_image, rbim Zs ビットイメージグラフィック印字の
終了\s+1
\s-1stop_char_set_def, rcsd Zt 文字セット定義の終了\s+1
\s-1subscript_characters, subcs Zu 下付き文字となりうる文字の
リスト\s+1
\s-1superscript_characters, supcs Zv 上付き文字となりうる文字の
リスト\s+1
\s-1tab, ht ta 8文字分のハードタブストップの
タブ文字\s+1
\s-1these_cause_cr, docr Zw CR を引き起こす文字\s+1
\s-1to_status_line, tsl ts ステータス行の桁 #1 に移動\s+1
\s-1underline_char, uc uc 文字 1 つに下線を付け、次の文字に
移動\s+1
\s-1up_half_line, hu hu 半行上へ (1/2 逆改行)\s+1
\s-1xoff_character, xoffc XF XON 文字\s+1
\s-1xon_character, xonc XN XOFF 文字\s+1
.TE
(以下の文字列ケーパビリティは、SVr4.0 の term 構造体に存在していますが、
マニュアルで今だに説明がなされていません。以下のコメントは term 構造体ヘッ
ダから取りました。)
.TS
center;
l l l l.
\s-1label_format, fln Lf ??\s+1
\s-1set_clock, sclk SC 時計を設定\s+1
\s-1display_clock, dclk DK 時計を表示\s+1
\s-1remove_clock, rmclk RC 時計を削除??\s+1
\s-1create_window, cwin CW ウィンドウ #1 を #2, #3 から #4, #5
までと定義\s+1
\s-1goto_window, wingo WG ウィンドウ #1 に移動\s+1
\s-1hangup, hup HU 電話をハングアップする\s+1
\s-1dial_phone, dial DI 番号 #1 にダイアルする\s+1
\s-1quick_dial, qdial QD 進行確認なしで電話番号 #1 にダイアルする\s+1
\s-1tone, tone TO タッチトーンダイアルを選択\s+1
\s-1pulse, pulse PU パルスダイアルを選択\s+1
\s-1flash_hook, hook fh スイッチフックをフッキングする\s+1
\s-1fixed_pause, pause PA 2-3 秒待つ\s+1
\s-1wait_tone, wait WA ダイアルトーンを待つ\s+1
\s-1user0, u0 u0 ユーザ文字列 # 0\s+1
\s-1user1, u1 u1 ユーザ文字列 # 1\s+1
\s-1user2, u2 u2 ユーザ文字列 # 2\s+1
\s-1user3, u3 u3 ユーザ文字列 # 3\s+1
\s-1user4, u4 u4 ユーザ文字列 # 4\s+1
\s-1user5, u5 u5 ユーザ文字列 # 5\s+1
\s-1user6, u6 u6 ユーザ文字列 # 6\s+1
\s-1user7, u7 u7 ユーザ文字列 # 7\s+1
\s-1user8, u8 u8 ユーザ文字列 # 8\s+1
\s-1user9, u9 u9 ユーザ文字列 # 9\s+1
\s-1get_mouse, getm Gm curses がボタンイベントを取得すべき\s+1
\s-1key_mouse, kmous Km ??\s+1
\s-1mouse_info, minfo Mi マウス状態の情報\s+1
\s-1pc_term_options, pctrm S6 PC 端末オプション\s+1
\s-1req_mouse_pos, reqmp RQ マウス位置報告の要求\s+1
\s-1zero_motion, zerom, Zx 次の文字表示を移動無しで行う\s+1
.TE
.PP
.B エントリの例
.PP
以下のエントリ(Concept\-100について記述したもの)は、ここで説明している
.I terminfo
ファイルの中でも複雑な部類のエントリの 1 つです。
.PP
.nf
.in -2
.ta .3i
.ft CW
\s-2concept100\||\|c100|\|\|concept\||\|c104\||\|c100-4p\||\|concept 100,
am, bel=^G, blank=\eEH, blink=\eEC, clear=^L$<2*>, cnorm=\eEw,
cols#80, cr=^M$<9>, cub1=^H, cud1=^J, cuf1=\eE=,
cup=\eEa%p1%' '%+%c%p2%' '%+%c,
cuu1=\eE;, cvvis=\eEW, db, dch1=\eE^A$<16*>, dim=\eEE, dl1=\eE^B$<3*>,
ed=\eE^C$<16*>, el=\eE^U$<16>, eo, flash=\eEk$<20>\eEK, ht=\et$<8>,
il1=\eE^R$<3*>, in, ind=^J, .ind=^J$<9>, ip=$<16*>,
is2=\eEU\eEf\eE7\eE5\eE8\eEl\eENH\eEK\eE\e200\eEo&\e200\eEo\e47\eE,
kbs=^h, kcub1=\eE>, kcud1=\eE<, kcuf1=\eE=, kcuu1=\eE;,
kf1=\eE5, kf2=\eE6, kf3=\eE7, khome=\eE?,
lines#24, mir, pb#9600, prot=\eEI, rep=\eEr%p1%c%p2%' '%+%c$<.2*>,
rev=\eED, rmcup=\eEv $<6>\eEp\er\en, rmir=\eE\e200, rmkx=\eEx,
rmso=\eEd\eEe, rmul=\eEg, rmul=\eEg, sgr0=\eEN\e200,
smcup=\eEU\eEv 8p\eEp\er, smir=\eE^P, smkx=\eEX, smso=\eEE\eED,
smul=\eEG, tabs, ul, vt#8, xenl,\s+2
.in +2
.fi
.ft R
.PP
2行目以後の行先頭に空白類文字を置くことで、エントリを複数行に分けて継続
して書くことができます。行先頭に ``#'' を置くことでコメントを置くことが
できます。
.I terminfo
のケーパビリティには、3つの型があります。ブール型(boolean)
ケーパビリティは、その端末がある特性を有しているかどうかを表します。数値型
ケーパビリティは、その端末の大きさや、ある機能の遅れの大きさを指定します。
文字列ケーパビリティは、端末のある機能を実行させる際に用いるシーケンス
を指定します。
.PP
.B ケーパビリティの型
.PP
全てのケーパビリティには名前があります。例えば、Concept が
.I "自動マージン"
(つまり、行の端に到達すれば自動的に復帰改行がなされること)を有すること
は、ケーパビリティ \fBam\fR で表されます。
数値ケーパビリティの後には文字 `#' が続き、そして値が続きます。
\fBcols\fR は、その端末
の桁数を表しており、Concept では、この値は `80' であることを示します。
.PP
最後に、文字列ケーパビリティは、\fBel\fR (行末まで消去するシーケンス)
などのように、2 文字のコードと、 `=' と、その先の `,' までの間の文字列
とで表されます。ミリ秒単位の遅延は、\fBel\fP=\eEK$<3> のように、
ケーパビリティのどの場所でも $<..> のブラケットで囲んで置くことができます。
この遅延を与えるためのパディングは、関数
.I tputs
が行います。
遅延は数値(例えば `20' のような)もしくは、数値の後に `*' を付けたもの
(例えば `3*' のような)で指定します。`*' は、パディングをその処理で影響
を受ける行の行数に比例させる必要があること、そしてその総計は影響を受け
る 1 単位あたりの必要パディングにより決まることを表します。(文字挿入の場
合、乗数は影響を受ける
.IR
の数です。端末が \fBxenl\fP を持たないか、持っていてもソフトウェアがそ
れを使用しない場合は常に、この乗数は 1 になります。)
`*' を指定する場合、`3.5' のような形式によって、ミリ秒の 1/10 単位(1桁
のみ可能)で遅延を指定することが適切な場合もあるでしょう。
.PP
文字列ケーパビリティの中で、文字のエンコードを簡単にするために、いくつ
かのエスケープシーケンスが利用できます。\fB\eE\fR\fB\ee\fR はとも
に、\s-1ESCAPE\s0 文字にマップされます。\fB^x\fR は、任意の x に関して
control-x にマッピングされます。\fB\en \el \er \et \eb \ef \es\fR はそ
れぞれ、改行、ラインフィード、復帰、タブ、バックスペース、フォームフィード、
空白にマップされます。その他に、\e^ は^ に、\e\e\e に、\e, は
コンマに、 \e: は : に、\e0 はナル文字にマップされます。(\e0 は \e200 を
生成します。これは文字列を終端しませんが、ほとんどの端末でナル文字と同
様の挙動を示すからです。) 最後に、\fB\e\fR の後に 8 進桁 3 桁を指定し
て文字を表すこともできます。
.PP
あるケーパビリティをコメントアウトせねばならない場合があります。そうい
う場合は、ケーパビリティ名の前にピリオドを置いてください。上の例の 2
番目の
.B ind
がその例です。
.br
.ne 5
.PP
.B 端末記述の準備
.PP
ここでは、どのようにして端末の記述を整えるかの概略を説明します。もっと
も効率的なやり方は、
.I terminfo
の中から類似の端末の記述を探してそれをまねて作成することです。さらに、
.I vi
などのスクリーンエディタに書き掛けの記述を使わせてみて、
その記述が正しいかどうかをチェックしながら、
記述を徐々に作り上げてゆくことです。
通常のものとあまりにもかけ離れた端末の場合、
.I terminfo
ファイルの記述能力の欠陥、もしくはテストプログラムの画面操作のコードの
バグを明らかにしてくれるかもしれないので、それには注意してください。
端末の記述を新しく用意したとき、それを簡単にテストするには、環境変数
TERMINFO に、作業中の記述をコンパイルしたものを含むディレクトリのパス名
を設定します。これにより、プログラムは
.IR \*d
を参照する代りにそちらを参照するようになります。
(端末メーカが文書に書いてくれていない場合に)行の右挿入の際のパディング
を得るには、/etc/passwd を 9600 ボーで編集し、画面の中ほどで 16 行程
度を削除してから、 `u' キーを数度すばやく連打するという厳しいテストを行
うとよいでしょう。
端末がぐちゃぐちゃになるのなら、普通は、もう少しパディングが必要
だということです。文字挿入についても似たようなテストを行うことができま
す。
.PP
.B 基本的なケーパビリティ
.PP
端末の各行の桁数は数値型ケーパビリティ \fBcols\fR で指定します。端末が
\s-1CRT\s0 の場合、画面の行数はケーパビリティ \fBlines\fR で指定します。
カーソルが右マージンに達したときに次の行の左端に回り込む場合、
ケーパビリティ \fBam\fR を指定する必要があります。端末が、画面消去後
カーソルをホームポジションにもってゆくことができる場合、その機能は文字列
ケーパビリティ \fBclear\fR で指定します。端末が(ある文字を上に出力した時に
その場所を消去するのではなく)重ね打ちする場合、ケーパビリティ \fBos\fR
を指定する必要があります。印字端末で、ソフトコピー装置を持たない場合、
.B hc
.BR os
とを指定します。
.RB ( os
は、ハードコピー端末や、 APL 端末だけでなく、\s-1TEKTRONIX\s+1 4010
シリーズのようなストレージスコープ管端末にも適用されます。)
現在の行の左端にカーソルを移動させるコードが存在する場合、それを
.BR cr
で指定します。
(通常、これは復帰文字、つまり control-M になります。)
可聴シグナル(ベル、ビープ音など)を生成するコードがある場合、それを
.BR bel
で指定します。
.PP
カーソルを(バックスペースのように) 1 ポジションだけ左へ移動させるコード
がある場合、それは
.BR cub1
として指定します。
同様に、右への移動、上への移動、下への移動はそれぞれ、
.BR cuf1 ,
.BR cuu1 ,
.BR cud1
で指定します。
これらの局所的カーソル移動機能は、通過する場所のテキストを変更するもの
であってはなりません。たとえば、空白文字はその下のテキストを消去してし
まうため、普通は `\fBcuf1\fP=\ ' とは指定しません。
.PP
ここで極めて重要なこととして、
.I terminfo
にエンコードされた局所的カーソル移動は、\s-1CRT\s0 端末の左端および
上端では定義
されないということです。プログラムは、
.B bw
の指定がない限り、左端でバックスペースを出力しようとしてはいけません。
また、画面上端で、上に移動しようとしてはいけません。テキストを上に
スクロールするためには、プログラムは画面左下隅にカーソルを移動させて、
.B ind
(index) 文字列を送出してください。
.PP
テキストを下にスクロールするには、プログラムは画面左上隅にカーソルを移
動させて、
.B ri
(reverse index) 文字列を送出してください。
文字列
.B ind
.B ri
の挙動は、それぞれ先に述べた画面隅にカーソルがない場合には定義されませ
ん。
.PP
スクロールシーケンスのパラメータ付きバージョンは、
.B indn
.B rin
で、これらは、スクロールする行数を指定するパラメータを1つ取ることを除
いては
.B ind
.B ri
と、同じ挙動を示します。
これらも、カーソルが適切な画面端に存在しない場合の挙動は定義されません。
.PP
ケーパビリティ \fBam\fR は、右端でテキストが出力されてもカーソルが右端
に留まり続けるかどうかを示します。ただし、この挙動は最終桁での
.B cuf1
の挙動には必ずしも適用されません。
左端からの局所的移動で定義されたものは、
.B bw
が指定されている場合に、左端からの
.B cub1
が 1 つ前の行の右端に移動するということだけです。
.B bw
が指定されていない場合、この効果は定義されません。
これは、例えば、画面の端に沿って箱を描くときに便利なものです。
端末が自動マージン機能を切り替え可能な場合、
.I terminfo
ファイルでは、通常はその機能はオン状態、つまり \fBam\fR であると想定し
ます。
端末が次の行の先頭桁に移動するコマンドを持つ場合、そのコマンドを
.B nel
(newline) で指定することができます。
このコマンドは、現在行の残りの部分を消去するかどうかとは関係ありません。
ですから、端末が、
.B cr
.B lf
も持たない場合でも、これらの代りに
.B nel
を利用して仕事をこなすことが可能です。
.PP
これまで紹介したケーパビリティで、ハードコピー端末や、\*(lqブラウン管
テレタイプ(glass-tty)\*(rq を十分記述できます。ここで、model 33 teletype
は、
.PP
.DT
.nf
.ft CW
.in -7
\s-133\||\|tty33\||\|tty\||\|model 33 teletype,
bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
.in +7
.ft R
.PP
と記述されます。一方、Lear Siegler 社 \s-1ADM\-3\s0 は、
.PP
.DT
.nf
.ft CW
.in -7
\s-1adm3\||\|3\||\|lsi adm3,
am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
ind=^J, lines#24,\s+1
.in +7
.ft R
.fi
.PP
と記述されます。
.PP
.B パラメータ化された文字列
.PP
カーソル位置設定など、パラメータを必要とする文字列は、
.IR printf (3S)
風のエスケープ \fB%x\fR を含むパラメータ化文字列ケーパビリティを用いて
記述します。例えば、カーソル位置を指定する
.B cup
ケーパビリティは、移動先の行と桁を指定する2つのパラメータを与える必要が
あります。
(行と桁は 0 から数え、ユーザに見える物理画面を参照します。目に見えない
メモリ部分は参照しません。) 端末がメモリ相対のカーソル位置指定機能を持
つ場合、これは
.BR mrcup
で表します。
.PP
パラメータ渡し機構では、スタックと、それを操作する特別の \fB%\fP コード
を用います。通常は、シーケンスはパラメータを 1 つスタックにプッシュし、
それをある形式で出力します。もっと複雑な操作が必要なこともしばしばあり
ます。
.PP
\fB%\fR コードには以下の意味があります。
.PP
.DT
.nf
.ta .5i 1.5i
\s-1%% `%' を出力する
%d pop() を printf のように出力する
%2d pop() を %2d のように出力する
%2d pop() を %3d のように出力する
%02d
%03d これらは printf と同様
%c pop() を %c に適用する
%s pop() を %s に適用する
%p[1-9] i 番目のパラメータをプッシュする
%P[a-z] pop() を変数 [a-z] に設定する
%g[a-z] 変数 [a-z] の値をプッシュする
%'c' 文字定数 c
%{nn} 整数定数 nn
%+ %- %* %/ %m
算術演算 (%m は剰余): push(pop() op pop())
%& %| %^ ビット演算: push(pop() op pop())
%= %> %< 論理演算: push(pop() op pop())
%! %~ 単項演算 push(op pop())
%i 最初の2パラメータに1足す (ANSI 端末用)
%? expr %t thenpart %e elsepart %;
if-then-else, %e elsepart はオプショナル
else-if は Algol 68 風に指定可能:
%? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %;
\s+1 c\di\u は条件節で、b\di\u は本体
.fi
.PP
2 項演算は、通常の順序で並べたオペランドに対して後置形式で指定します。
例えば、x-5 を得るには、"%gx%{5}%-" を指定します。
.PP
HP2645 の例を考えてみましょう。これで 3行12桁に移動させるには、
\eE&a12c03Y に 6 ミリ秒のパディングを送出する必要があります。ここで行と
桁とが逆になっていること、行、桁とも 2 桁で出力されていることに注意して
ください。この端末の \fBcup\fR ケーパビリティは、
\*(lqcup=\eE&%p2%2dc%p1%2dY$<6>\*(rq となります。
.PP
Microterm 社 \s-1ACT-IV\s0 は、\fB^T\fR の後に現在の行と桁を、どち
らも単にバイナリ値で送る必要がありますが、\*(lqcup=^T%p1%c%p2%c\*(rq と
なります。
\*(lq%c\*(rq を使う端末は、カーソルを前方に戻す (\fBcub1\fR) ことと、画
面上で 1 行上にカーソルを移動させる (\fBcuu1\fR) ことができる必要があり
ます。
これは、システムが変更したり握りつぶしたりする可能性があるため、
\fB\en\fR, \fB^D\fR, \fB\er\fR を確実に送信できるとは限らないからです。
terminfo を扱うライブラリルーチンは、タブが決して展開されないように端末
モードを設定します。ですから \et は確実に送信できます。これは Ann Arbor
4080 では重要なことが分っています。)
.PP
最後の例は、\s-1LSI ADM\s0-3a です。これは行と桁を空白文字に対する
オフセットで表します。ですから、\*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq と
なります。`\eE=' を送出した後、最初のパラメータをプッシュし、空白文字の
ASCII 値 (32) をプッシュし、それらを加えて (それらの2つの値の代りにその
和をスタックにプッシュし)、得た値を文字として出力します。その後、2番目
のパラメータについても同様の処理を行います。スタックを使うことで、さら
に複雑な計算も可能です。
.PP
端末が行や桁の絶対カーソル位置指定機能を持つ場合、単一パラメータを取る
ケーパビリティ
.B hpa
(水平絶対位置) と
.B vpa
(垂直絶対位置) で指定します。
(hp2645 のような)一般的な 2 パラメータのシーケンスよりもこれらの方が短く
なる場合がときどきあり、その場合、
.B cup
よりもそれらを使う可能性があります。
パラメータ化された局所的移動機能が存在する (例えば、
.I n
桁右へ移動する) 場合、これらは、いくつ移動するかを指定するパラメータを
1 つ持つ
.BR cud ,
.BR cub ,
.BR cuf ,
.BR cuu
を使って指定することができます。
これらは主に、\s-1TEKTRONIX\s+1 4025 のように端末が
.BR cup
を持たない場合に有益です。
.PP
.\"=.B Cursor Motions
.B カーソル移動
.PP
カーソルを高速にホームポジション(画面の左上隅)に移動させる方法を持つ
端末の場合、これを \fBhome\fR で指定することができます。同様に、高速に
左下隅に移動させる方法を持つ場合も \fBll\fR で指定することができます。
端末によっては、ホームポジションから \fBcuu1\fR を使って上に移動する
ことでこの動作が可能な場合もありますが、プログラムは、(\fBll\fR
でそう指定しない限り)自分からそうしてはならないことになっています。これは、
ホームポジションから上に移動した場合の動作について、プログラムは一切
想定できないからです。ホームポジションは位置指定 (0,0)、つまり、(メモリ
ではなく)画面の左上隅と等しいことに注意してください。(ですから、HP
端末の \eEH シーケンスは
.BR home
として使用できません。)
.PP
.B 領域消去
.PP
端末がカーソルを動かさずに現在位置から行の末端まで消去可能である場合、
これを\fBel\fR で指定しなければなりません。端末が現在位置から画面の終り
までを消去可能な場合、これを \fBed\fR で指定しなければなりません。
\fBed\fR は行の第1桁から行う場合のみ定義されます。(ですから、
.B ed
が利用できない場合でも、大量の行削除リクエストを使ってシミュレート可能です。)
.PP
.B 行の挿入/削除
.PP
カーソルのある行の前に空白行を新規につくることができる端末の場合、これ
\fBil1\fR で指定する必要があります。これは行の先頭位置で行う場合のみ
定義されます。作成後、カーソルは新しくできた空白行に置かれなければなり
ません。端末がカーソルがある行を削除できる場合、これを \fBdl1\fR で指定
する必要があります。この機能は削除される行の先頭でのみ行われます。
.B il1
.B dl1
の変種で、挿入/削除する行数を表すパラメータを 1 つ取るものは、
.B il
.BR dl
とで指定することができます。
(vt100 のように)スクロール領域を設定可能な端末の場合、領域設定コマンドを
.B csr
ケーパビリティを用いて指定可能です。
このケーパビリティは2つのパラメータ(スクロール領域の先頭行と最終行)を
取ります。困ったことに、このコマンド実行後のカーソル位置は定義されません。
このコマンドを用いて、行の挿入/削除の効果を得ることが可能です。ここで、
.B sc
.B rc
(カーソルの保存と回復)コマンドもまた有用でしょう。
まともな行挿入/削除コマンドを持たない端末で、画面の最上端もしくは最下端
で行を挿入する場合、
.B ri
もしくは
.B ind
を使って行うこともできます。まともな行挿入/削除コマンドを持つ場合でも、
これらを使う方が速い場合もあるかもしれません。
.PP
メモリの一部にウインドウ(全てのコマンドが影響する)を定義することがで
きる端末の場合、それは、パラメータ化文字列
.BR wind
で指定する必要があります。
メモリ中での開始行、終了行、開始桁、終了桁を表す 4 パラメータは、この
順番で与えます。
.PP
上側の表示メモリを保持できる端末の場合、\fBda\fR ケーパビリティを指定す
る必要があります。下側の表示メモリを保持できる場合、\fBdb\fR を指定する
必要があります。これらは、行削除やスクロールにより、画面最下端に非空白行が
上がってくること、および、\fBri\fR による逆スクロールにより非空白行
が下がってくることを表します。
.PP
.B 文字の挿入/削除
.PP
.I terminfo
で記述可能な文字の挿入/削除に関して、基本的には 2 種類の
インテリジェント端末があります。
もっとも標準的な文字挿入/削除機能は、現在行の文字のみが影響を受け、
シフトした文字は一体となって移動し行端で消えて行くものです。その他の
端末、例えば Concept 100 や Perkin Elmer Owl のようなものの場合、表示
出力された空白とそうでない空白との間に区別があります。挿入/削除にともな
うシフトは画面上の表示出力されていない空白に対してのみ適用され、それぞ
れ空白の消滅、もしくは表示出力されていない空白2つになります。自分が持っ
ている端末がどちらのタイプかを調べるには、画面を消去してから、(カーソル
移動を用いて)テキストを2箇所に分けて出力します。\*(lqabc\*(rq と
\*(lqdef\*(rq の間に(空白文字でなく)局所的カーソル移動を用いて
\*(lqabc\ \ \ \ def\*(rq を出力してください。その後、カーソルを
\*(lqabc\*(rq の前に移動させ、端末を挿入モードにします。
文字を打ち込むと、行の残りが一体となってシフトして行の端で文字がこぼれ
おちてゆくならば、この端末は表示出力された空白とそうでない空白を区別し
ないタイプのものです。\*(lqabc\*(rq がシフトして \*(lqdef\*(rq に当り、
その後はそれらが一緒に行の端まで進み、次の行まで進むならば、この端末は2
番目のタイプのもので、\*(lqinsert null\*(rq を表すケーパビリティ
\fBin\fR を指定する必要があります。論理的には、これらは別の属性(挿入モード
が1行か複数行か、および、表示出力されていない空白を特別扱いするか否か)
ですが、挿入モードをこの属性 1 つで記述できない端末に、今までお目にかかっ
たことはありません。
.PP
terminfo では、挿入モードを持つ端末も、現在行の上で場所を空ける短い
シーケンスを送る端末も、両方ともに記述することができます。挿入モードに
入る
シーケンスは \fBsmir\fR で、挿入モードから出るシーケンスは \fBrmir\fR で指定
してください。挿入したい文字の直前にあるシーケンスを送出する必要がある場
合は \fBich1\fR で指定してください。ちゃんとした挿入モードを持つ端末のほ
とんどでは、\fBich1\fR を指定することはないでしょう。一方、画面上で場所
を空けるシーケンスを送る端末の場合は、必ず \fBich1\fR を指定してください。
(両方持つ端末の場合、通常は \fBich1\fR よりも挿入モードの方が望ましいで
しょう。実際に両方を組み合わせて使用する必要がある場合以外は、両方同時に
指定しないでください。)
挿入後のパディングが必要な場合、文字列オプション \fBip\fR に必要なミリ秒
の数を指定してください。その他のシーケンスで文字1文字を挿入後に送出する
必要のあるものを、いっしょに \fBip\fR で指定することもできます。
「挿入モード」に入り、
かつ挿入する文字ごとにあるコードを付けて送出しなければならない端末の場合、
.BR smir / rmir
.B ich1
とを両方とも指定してください。そうすることで、それらが使われるようになり
ます。
ケービリティ
.B ich
は、パラメータ
.IR n
1つを取り、これは
.B ich1
の動作を
.I n
回繰り返します。
.PP
挿入モード途中で同じ行の文字を削除するために、カーソルを動かす必要がある
場合があります(例えば、挿入位置の後にタブがある場合)。挿入モードに入っ
たままでカーソルを移動させることができる場合、このような場合の挿入を高速
に行うために、ケーパビリティ \fBmir\fR を指定することができます。
\fBmir\fR を省略しても、影響を受けるのは速度のみです。端末によっては(有名な
Datamedia のアレとか)、挿入モードの動作方法の違いにより \fBmir\fR
指定してはいけないものがあります。
.PP
最後に、文字1文字の削除用として
.B dch1
を、
.IR n
文字削除用として、パラメータ1つをとる
.B dch
を、
そして、削除モード用として \fBsmdc\fR\fBrmdc\fR を、それぞれ
削除モード (
.B dch1
が動作するために、端末が入っていなければならないモード) へ入るシーケンス
と出るシーケンスとして指定することができます。
.PP
.I n
文字を削除する(カーソルを移動させずに空白を
.I n
個出力することと同等の処理)ためのコマンドは、パラメータを 1つとる
.B ech
を使って指定することができます。
.PP
.\" .B "Highlighting, Underlining, and Visible Bells"
.B "ハイライト・下線・可視ベル"
.PP
端末が1つまたはそれ以上の表示属性を持つ場合、これらを表す方法として異なっ
たやり方がいくつかあります。エラーメッセージや他の種類の注意を引くメッセージ
に適した、十分コントラストが高く目立つ形式から1つ、\f2強調モード\fR
選択してください。(選ぶなら、反転表示に半輝度を加えたもの、もしくは単に
反転のみが良いでしょう。)強調モードに入るシーケンス、出るシーケンスはそ
れぞれ \fBsmso\fR\fBrmso\fR で指定します。TVI 912 や Teleray 1061 の
ように、強調モードへの出入りにより画面に空白が1つ2つ残る場合、\fBxmc\fR
を指定して空白がいくつ残るかを教えてやる必要があります。
.PP
下線引きを開始するコード、終了するコードは、それぞれ \fBsmul\fR
\fBrmul\fR で指定します。Microterm 社の Mime のように、現在位置の文字に
下線を引き、空白1つ分カーソルを右に移動するコードを持つ端末の場合、その
コードを \fBuc\fR で指定することができます。
.PP
その他もろもろの強調モードに入るケーパビリティには、
.B blink
(点滅)
.B bold
(ボールドもしくは更に明るい)
.B dim
(暗いもしくは半輝度)
.B invis
(空白もしくは見えないテキスト)
.B prot
(保護状態)
.B rev
(反転表示)
.B sgr0
(
.I 全ての
属性モードをオフにする)
.B smacs
(別の文字セットモードに入る)
.B rmacs
(別の文字セットモードから出る)が含まれます。
これらのモードのどれか1つをオンにした場合に、他のモードがオフになる場合
もありますし、ならない場合もあります。
.PP
モードの任意の組み合わせを設定するシーケンスが存在する場合、それを
9つのパラメータを持つ
.B sgr
(属性の設定)で指定します。
パラメータのそれぞれは、0 または 1 を取ります。それぞれ対応する属性が
オンかオフかを表します。9つのパラメータとは、順に:強調、下線、反転表示、
点滅、暗い表示、ボールド、空白、保護、別の文字セットです。必ずしも全ての
モードが
.BR sgr
によってサポートされねばならない必要性はありません。
独立した属性コマンドが存在するものだけで構いません。
.PP
「魔法のクッキー(magic cookie)」
.RB ( xmc )
を持つ端末では、
モード設定シーケンスを受信すると特殊な「クッキー」と呼ぶべきゴミを
画面に残します。この端末では、モード設定シーケンスは、各文字に余分のビット
を持たせるのではなく、表示アルゴリズムそのものに影響を与えます。
HP 2621 などのような端末では、次の行へ移動したり、カーソルを移動させたり
した際に強調モードから勝手に抜け出てしまいます。プログラムで強調モードを
用いる場合、
.B msgr
ケーパビリティの指定が無い場合は、カーソルを移動させたり改行文字を送出す
る前に強調モードから脱出して、プログラム内部で強調モードでのカーソル移動
がないことを確実にしておかねばなりません。
.PP
エラー発生を無音で(ベルの代わりに)通知するため、画面をフラッシュさせる
方法が提供されている端末の場合、それを \fBflash\fR で指定することがで
きます。これはカーソルを移動させてはなりません。
.PP
カーソルが最下行にないときに通常の状態以上に見易くする(例えば、点滅しな
い下線カーソルを、より見つけやすいブロックカーソルや点滅下線カーソルにす
る)必要がある場合、そのシーケンスを
.BR cvvis
で指定してください。
カーソルを完全に見えないようにする方法がある場合、それを
.BR civis
で指定してください。
これらのモードを打ち消す効果を持つシーケンスとして、ケーパビリティ
.BR cnorm
を指定しなければなりません。
.PP
これらのケーパビリティを使用するプログラムを実行する際に、端末を特殊なモード
にする必要がある場合、このモードに入るコード、出るコードをそれぞれ
\fBsmcup\fR\fBrmcup\fR で指定することができます。こういう事態が生じ
る場合として、例えば、Concept のように、複数ページのメモリを持つ端末があ
ります。画面相対指定を持たず、メモリ相対のカーソル位置指定機能しか持たな
いこの端末の場合、画面の大きさのウィンドウ1枚を端末に固定で割り付け、
カーソル位置指定を適切にできるようにしなければなりません。このケーパビリティ
は、\s-1TEKTRONIX\s+1 4025 でも使用されています。こちらでは、
.B smcup
で terminfo で使用するものをコマンド文字として設定しています。
.PP
たとえ重ね打ちでないとしても、(特殊なコードなしで)下線文字を正しく生成
できる端末の場合、ケーパビリティ \fBul\fR を指定する必要があります。
重ね打ちが空白文字で消去可能な場合、\fBeo\fR を指定してそのことを明らか
にしておく必要があります。
.PP
.\" .B Keypad
.B キーパッド
.PP
キーを押すとコードを送出するキーパッドを持つ場合、そのキーパッド
に関する情報を指定することができます。注意すべき点として、キーパッドが
ローカルモードでしか動作しない端末(例えば、シフト状態でない HP 2621 の
キーがこれに該当します)を扱うことはできないことがあります。送信状態か
非送信状態かを設定できるキーパッドの場合、それらのためのコードを \fBsmkx\fR
\fBrmkx\fR とで指定することができます。これらの指定がない場合、
キーパッドは常に送信状態として扱われます。
左矢印、右矢印、上矢印、下矢印キー、home キーが送出するコードは、それぞ
\fBkcub1, kcuf1, kcuu1, kcud1, khome\fR で指定できます。f0, f1, ...,
f10 のようなファンクションキーがある場合、これらが送出するコードは
\fBkf0, kf1, ..., kf10\fR で指定できます。これらのキーがデフォルトのラベル
(f0 から f10 まで)を持たない場合、このラベルを \fBlf0, lf1, ...,
lf10\fR で指定できます。他の特殊キーが送出するコードは、以下のように指定
できます。
.B kll
(ホームダウン(home down))、
.B kbs
(バックスペース(backspace))、
.B ktbc
(全タブクリア(clear all tabs))、
.B kctab
(この桁のタブストップをクリア)、
.B kclr
(画面消去(clear screen)キーまたは抹消(erase)キー)、
.B kdch1
(文字削除(delete character))、
.B kdl1
(行削除(delete line))、
.B krmir
(挿入モードから抜ける(exit insert mode))、
.B kel
(行末までクリア(clear to end of line))、
.B ked
(画面の終りまでクリア(clear to end of screen))、
.B kich1
(文字挿入または挿入モードに入る)、
.B kil1
(行挿入(insert line))、
.B knp
(次のページ(next page))、
.B kpp
(前のページ(previous page))、
.B kind
(前進スクロール(scroll forward)/下降スクロール(scroll down))、
.B kri
(後退スクロール(scroll backward)/上昇スクロール(scroll up))、
.B khts
(この桁にタブストップを設定)、
更に、キーパッドが4つの矢印を含む 3 × 3 のキー配列を持つ場合、他の 5 つ
のキーを
.BR ka1 ,
.BR ka3 ,
.BR kb2 ,
.BR kc1 ,
.BR kc3
で指定します。
3×3のカーソル移動キーパッドが必要な場合、これらのキーが有用です。
.PP
.\" .B Tabs and Initialization
.B タブと初期化
.PP
端末がハードウェアタブを持つ場合、次のタブストップまでカーソルを進める
コマンドを
.B ht
(通常、control I です)で指定することができます。
左方向の次のタブストップまで進める「後退タブ」コマンドは、
.BR cbt
で指定することができます。
端末ドライバが、タブが端末に送出されずにコンピュータ内部で空白に展開され
るモードになっている場合、プログラムは、たとえ
.B ht
.B cbt
が存在しても、それらを使用しないという約束になっています。これは、ユーザ
がタブストップを正しく設定していない可能性があるためです。
電源投入時に、
.I n
個の空白ごとにハードウェアタブが初期化されている端末の場合、数値パラメータ
.B it
を指定します。これはタブとして設定される空白数を表します。
通常、これは
.IR tset
コマンドが、ハードウェアタブ展開を使用するモード設定と、タブストップ設定
とを行うかどうかを決定するために使用します。
タブストップ設定を不揮発性メモリに記憶できる端末の場合、terminfo での記述の
際に、タブストップは正しく設定されていることを想定して構いません。
.PP
他のケーパビリティとして、
.BR is1 ,
.BR is2 ,
.BR is3
があり、これらは端末を初期化する文字列を指定します。また、
.BR iprog
があり、これは端末初期化用として実行するプログラムのパス名を指定します。
また、\fBif\fR があり、これは初期化文字列が長い場合、それを含むファイル
の名前を指定します。これらの文字列により、terminfo の残りの記述と矛盾な
く動作するモードに端末が設定されることが求められます。通常、ユーザが
ログインするたびに、
.IR tset
プログラムがこれらの文字列を端末に対して送出します。送出は以下の順序で
行われます: まず
.BR is1 ;
次に
.BR is2 ;
そして
.B tbc
.BR hts
でタブを設定;
次に
.BR if ;
そして
.BR iprog
でプログラムを実行;
最後に
.BR is3
で終わります。初期化のほとんどは
.BR is2
で行われます。
共通のシーケンスを
.B is2
に置き、特殊な場合を
.B is1
.BR is3
とに置くことで、文字列をそれぞれに複製して持たせなくても、特殊な端末
モードを設定することができます。
まったくわけのわからない状態から復帰するための、よりハード寄りのリセット
を行うためのシーケンスの組を、
.BR rs1 ,
.BR rs2 ,
.BR rf ,
.BR rs3
で指定することができます。これらは
.B is2
.BR if
と良く似たシーケンスです。
端末がハマったときに使うプログラムである、
.IR reset
がこれらのシーケンスを出力します。
コマンドを
.B rs2
.B rf
とに置くのは、普通、ユーザを混乱させる効果を産み出し、かつ
ログインの際に必要ない場合に限ります。
例えば、vt100 を 80 桁モードに設定するコマンドは、普通なら
.BR is2
に含めるはずですが、
このコマンドは画面に混乱させるゴミを作り出しますし、端末は既に 80 桁モードに
なっているのが普通ですので、このコマンドを含める必要ありません。
.PP
タブストップの設定、クリアを行うコマンドがある場合、それらを
.B tbc
(全タブストップのクリア)
.B hts
(現在桁にタブストップを設定)
に指定することができます。
タブ設定に関して、ここで説明したものより複雑なシーケンスが必要な場合、そ
のシーケンスを
.B is2
や、
.BR if
に置いても構いません。
.PP
遅延
.PP
端末ドライバのパディングを制御するケーパビリティがいくつかあります。まず
第 1 に、ハードコピー端末で必要となります。さらに
.IR tset
プログラムが、端末ドライバのモードを適切に設定する際にこれらを使用します。
以下のケーパビリティ
.BR cr ,
.BR ind ,
.BR cub1 ,
.BR ff ,
.B tab
に遅延を組み込んでおくと、端末ドライバ内部の遅延ビットが適切な値に設定さ
れます。
.B pb
(パディングボーレート)
を指定することで、ボーレートが
.BR pb
の値より低い場合、これらの遅延指定を無視させることができます。
.PP
.B その他
.PP
ナル(0)文字以外のパディング文字を必要とする端末の場合、それを
\fBpad\fR で指定することができます。
.B pad
文字列の最初の文字のみが使用されます。
.PP
端末が、通常のソフトウェアでは使用されない追加の「ステータス行」を持つ
場合、そのことを表すことができます。ステータス行が最下行より下に余分な
行として見え、通常のカーソル位置指定でそこにカーソルを移動させることが
できる場合(Heathkit h19 の 25 行目や、スクロール領域を 23 行に設定した
ときの vt100 の 24 行目などのような場合)、ケーパビリティ
.B hs
を指定する必要があります。
ステータス行の先頭に移動するための特殊な文字列と、ステータス行から戻る
ための特殊な文字列は、それぞれ
.B tsl
.BR fsl
で指定します
.RB ( fsl
は、
.BR tsl
以前にカーソルがあった位置にカーソルを戻さねばなりません。この効果を出す
ために、必要があれば、
.B sc
.B rc
文字列を
.B tsl
.B fsl
とに含めても構いません。)
.B tsl
はパラメータを1つ取ります。それは、ステータス行で、カーソル移動先の桁
数です。ステータス行内部でエスケープシーケンスや、他の特殊なコマンド
(タブなど)が動作する場合、フラグ
.B eslok
を指定することができます。
ステータス行をオフにする文字列(または、オフにしないまでもステータス行
の内容を消去する文字列)を、
.BR dsl
で指定する必要があります。
カーソル位置の保存および回復を行うコマンドを持つ端末の場合、それらを
.B sc
.BR rc
とで指定します。
通常、ステータス行は、画面の他の行の幅、つまり、
.BR cols
と同じ幅であると仮定されます。
他の行とステータス行の幅が異なる場合(端末がロードされた行全てに移動を許し
ていない場合など)、その桁単位の幅を、数値パラメータ
.BR wsl
で表すことができます。
.PP
端末が半行だけ上下移動できる場合、それを
.B hu
(半行上)と
.B hd
(半行下)とで指定することができます。
これは、まず第 1 に、ハードコピー端末で上付き文字、下付き文字を使うた
めに用いられます。
ハードコピー端末が用紙を排出し次のページに行くこと (フォームフィード)
ができる場合、それを
.B ff
(通常は control L)で指定します。
.PP
(同じ文字を極めて多数回繰り返し送信する際の時間節約のため)指定した文字を
指定した回数だけ繰り返すコマンドが存在する場合、パラメータ化文字列
.BR rep
を用いてそれを指定することができます。
1 番目のパラメータは繰り返し送信される文字で、2番目のパラメータは繰り返し
回数です。ですから、tparm(repeat_char, 'x', 10) は `xxxxxxxxxx' と同じこ
とです。
.PP
\s-1TEKTRONIX\s+1 4025 のように、 コマンド文字を設定可能な端末の場合、
.BR cmdch
を用いてそれを表すことができます。
全てのケーパビリティで使用されるプロトタイプコマンド文字を指定できます。
この文字は
.B cmdch
ケーパビリティで指定され、それが識別されます。
いくつかの UNIX システムでは以下の約束にしたがって処理がなされます: すな
わち、まず環境変数
.B CC
を検査し、それが設定されている場合は、ケーパビリティ中にあるプロトタイプ
文字の全てがその環境変数で指定された文字と置き換えられます。
.PP
.IR switch ,
.IR dialup ,
.IR patch ,
.IR network
などのような、特定の端末の種類を表さない端末記述には、プログラムが
その端末とどう通信すればよいかが分からないと表明できるようにするた
め、
.B gn
(一般的)ケーパビリティを指定しなければなりません。(このケーパビリティは、
エスケープシーケンスがわかっている
.I 仮想
端末の記述には適用されません。)
.PP
端末がフロー制御のための xon/xoff ハンドシェークを使用する場合、
.BR xon
を指定します。
プログラムがコストに関してよりよい見積もりを立てることができるように、こ
の場合でもパディング情報を指定すべきです。しかし、実際はパディング文字は
送信されません。
.PP
端末が、シフトキーとして動作し、文字全ての8ビット目を立てて送出する
「メタキー」を持つ場合、このことを
.BR km
により表すことができます。
この指定がない場合、ソフトウェアは、8ビット目はパリティで、通常はクリア
されていると想定します。この「メタモード」をオンオフする文字列が存在す
る場合、それを
.B smm
.BR rmm
とで指定することができます。
.PP
端末が画面1枚分より多い行数のメモリを持つ場合、メモリの行数を
.BR lm
で指定できます。値
.BR lm #0
は、行数は固定でないものの、1画面分以上のメモリを持つことを表します。
.PP
端末が \s-1UNIX\s+1 の仮想端末プロトコルをサポートしている場合、その端末
番号を
.BR vt
で指定できます。
.PP
端末に接続された外部プリンタを制御するメディアコピー文字列は、次のように
指定できます。すなわち、
.BR mc0 :
画面内容の印字、
.BR mc4 :
プリンタオフ、
.BR mc5 :
プリンタオンです。
プリンタがオンのとき、端末に送出されたテキストの全てはプリンタに送られま
す。プリンタがオンの状態でもなお端末画面が表示されているか否かは未定義で
す。変種である
.B mc5p
はパラメータを1つ取り、そのパラメータの値だけの文字を送る間
プリンタをオンにし続け、そのあとオフにします。
このパラメータは 255 を越えてはなりません。
.BR mc4
を含む全てのテキストは、
.B mc5p
が有効な間、透過的にプリンタに渡されます。
.PP
プログラムファンクションキーに対する文字列は、
.BR pfkey ,
.BR pfloc ,
.BR pfx
で指定できます。
これらの文字列それぞれは、2つの引数を取ります:
それぞれ、プログラム対象のファンクションキー番号 (0 から 10 まで) と、
そこにプログラムする文字列です。この
範囲外のファンクションキー番号を使うと未定義のキーに対してプログラムして
しまうかもしれず、これは端末依存の動作となります。これらのケーパビリティ
の違いは以下の通りです:
.B pfkey
は、そのキーの押し下げを生じ、ユーザが指定した文字列をタイプしたのと同じ
動作になります。
.B pfloc
は、端末内部でローカルにその文字列が実行されることになります。
.B pfx
は、その文字列がコンピュータに送出されることになります。
.PP
.B ゴミ機能、困った機能(Glitches and Braindamage)
.PP
Hazeltine 端末は `~' 文字を表示できません。これには \fBhz\fR を指定する
必要があります。
.PP
Concept や vt100 のように、\fBam\fR 直後の改行文字を無視する端末の場合、
\fBxenl\fR を指定する必要があります。
.PP
強調モードを取り除くため(単に通常のテキストを上に書くだけで済まず)
.B el
が必要な場合、\fBxhp\fP を指定する必要があります。
.PP
Teleray 端末は、タブでカーソル移動した下にあった文字を全て空白にしてしま
いますので、この端末では \fBxt\fR (タブは破壊的) を指定する必要があります。
注意: これに対応する変数は、現在は `dest_tabs_magic_smso' ですが、以前の
バージョンでは、teleray_glitch でした。このふざけた機能は、「魔法のクッキー」
の先頭にカーソルを置けないことと、強調モードを消去するために、行削除と
行挿入が必要であることも意味します。
.PP
Beehive の Superbee 端末は、エスケープ文字や control C 文字を正しく送信
できません。これには
.BR xsb
を指定し、
f1 キーをエスケープとし、f2 キーを control C として使用することを表します
(この問題が現れるのは特定の Superbee に限られ、その
ROM に依存します)。注意: terminfo の古いバージョンでは、このケーパビリティ
は `beehive_glitch' と呼ばれていましたが、現在では `no_esc_ctl_c' と呼ば
れています。
.PP
なにか特定の端末に固有の他の問題を解決したい場合、\fBx\fIx\fR の形式で新
しいケーパビリティを追加して使っても構いません。
.PP
.B 似た端末
.PP
2 つの非常によく似た端末がある場合、いくつかの例外を除いて一方は他方と似
ているという定義を行うことができます。文字列ケーパビリティ \fBuse\fR で、
そのよく似た端末の名前を指定することができます。
.B use
の指定より前に与えたケーパビリティは、
.BR use
により得られる端末タイプの中のケーパビリティに優先します。
ケーパビリティ定義の左側に \fBxx@\fR を置くことにより、そのケーパビリティ
をキャンセルできます。ここで xx はそのケーパビリティです。例えば、エントリ
.PP
2621-nl, smkx@, rmkx@, use=2621,
.PP
は、\fBsmkx\fR\fBrmkx\fR も持たない 2621-nl を定義します。つまり、こ
の端末は、ビジュアルモードでもファンクションキーラベルを有効にしません。
この機能はある端末の種々の機能や、ユーザの種々のプリファレンスを表す際に
有用です。
.SH 関連ファイル
.TP 25
\*d/?/*
ファイルに端末記述が含まれています。
.SH 関連項目
tic(1), curses(3), printf(3), term(5).
.SH 作者
Pavel Curtis, Zeyd M. Ben-Halim
.\" Translated by Norihiro Kumagai (kuma@slab.tnr.sharp.co.jp), 98-5-24
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
.\"# mode:nroff
.\"# fill-column:79
.\"# End: