Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ termcap(5) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ex(1)

more(1)

tset(1)

ul(1)

vi(1)

curses(3X)

printf(3S)

term(7)

TERMCAP(5)  —  UNIX Programmer’s Manual

名称

termcap − 端末機能データベース

形式

/etc/termcap

解説

termcap は端末に関することを記述したデータベースで、 vi(1) や curses(3X) などによって使用されます。 端末の持っている機能のセットや、その操作がどのように実行されるのかが termcap 内に示されています。また、パディング要求および初期設定シーケンスも termcap 内に収められています。

termcap 内のエントリは、コロン(:)で区切られた数多くのフィールドから 構成されます。各端末の最初のエントリには、その端末に付けられ ている複数の名称が ‘|’ 文字で区切られて収められます。最初の 名称は、常に2文字の長さで、システム単位のデータベース内に 16ビットワードで端末タイプを格納する古い形式のシステムによって 使用されます。2番目の名称は、その端末に対する最も一般的な略号 であり、最後の名称は、その端末を完全に示す長い名称でなくては なりません。その他の名称はすべて、その端末名の同義語と みなされます。最初と最後の名称以外は、すべて小文字でなくては ならず、ブランクを入れることもできません。最後の名称には、読み 易くするために大文字やブランクを含めることができます。

(最後の、冗長なエントリを除いた)端末名の選択は、次の規則に従って 行われます。端末を構成する特定のハードウェア要素は、決められた基本となる 名前を持っていなくてはなりません(例えば “hp2621”)。この名称には ハイフンを入れてはなりません。ハードウェアがとることのできるモード とユーザの選択は、そのモード名にハイフンを付けることによって示されます。 従って、132カラムモードの “vt100” は “vt100−w” になります。 可能なものであれば、以下のサフィックスを使用しなければなりません。

サフィックス 意味実例
−w(80カラムよりも広い)ワイドモードvt100−w
−am自動マージンを使用する(普通はデフォルト値)vt100−am
−nam自動マージンを使用しないvt100−nam
−nスクリーン上の行数aaa−60
−na矢印キーなし(矢印キーをローカルとして残す)concept100−na
−npnページ分のメモリconcept100−4p
−rv反転ビデオconcept100−rv

諸機能

テーブル内にある「注意」欄内のそれぞれの文字には以下のような 意味があります(1つの機能に複数の意味を当てることができます)。

N     (1つあるいは複数の)数値パラメータを示します。
P     パディングが指定できることを示します。
∗     行単位でパディングが指定できることを示します。
o     機能が廃止されたものであることを示します。

「廃止された」機能は、不要なものと判断されたか、または他の機 能に統合されているため、 terminfo と同等な機能を持っていません。新しいソフトフェアは「廃止され た機能」をまったく必要としません。

名称タイプ注意内容
aestr(P)代替文字セットを終了
ALstr(NP∗)n 行の新しいブランク行を追加
alstr(P∗)新しいブランク行を追加
ambool端末は自動マージンを備えている
asstr(P)代替文字セットを開始
bcstr(o)^H でない場合にはバックスペース
blstr(P)Bell を鳴らすことができる
bsbool(o)端末は ^H によってバックスペースできる
btstr(P)バックタブがある
bwboolle(バックスペース)が 0 桁から最終桁に回り込む
CCstr端末による設定が可能なコマンド文字
cdstr(P∗)表示の最後まで消去
cestr(P)行末の終わりまで消去
chstr(NP)カーソルのカラム(水平位置)の設定
clstr(P∗)スクリーンの消去、カーソルのホームポジションへの移動
CMstr(NP)メモリ関連のカーソルアドレッシング
cmstr(NP)スクリーン関連のカーソル動作
conum1行当りの桁数(後述の"バグ"の項を参照)
crstr(P)復帰(キャリッジリターン)
csstr(NP)スクローリング領域の変更(VT100)
ctstr(P)すべてのタブストップのクリア
cvstr(NP)カーソルの行(垂直位置)の設定
dabool画面の上側にも内容を保持している
dBnum(o)必要とされる bs の遅延(ミリ秒単位、デフォルト値は 0)
dbbool画面の下側にも内容を保持している
DCstr(NP∗)n 個の文字を削除
dCnum(o)必要とされる復帰のための遅延(ミリ秒単位、デフォルト値は 0)
dcstr(∗)文字の削除
dFnum(o)必要とされるフォームフィードのための遅延(ミリ秒単位、デフォルト値は 0)
DLstr(NP∗)n 行分の削除
dlstr(P∗)行の削除
dmstr削除モードに入る
dNnum(o)必要とされる改行のための遅延(ミリ秒単位、デフォルト値は 0)
DOstr(NP∗)カーソルを下方向に n 行移動
dostr下方向に 1行移動
dsstrステータス行を使用しない
dTnum(o)必要とされる水平方向のタブ遅延(ミリ秒単位、デフォルト値は 0)
dVnum(o)必要とされる垂直方向のタブ遅延(ミリ秒単位、デフォルト値は 0)
ecstr(NP)n 個の文字を消去
edstr削除モードの終了
eistr挿入モードの終了
eobool端末は空白文字を重ね打ちして文字を消す
EPbool(o)偶数パリティ
esbool端末はステータス行においてエスケープ文字を使用できる
ffstr(P∗)ハードコピー端末のページ送り
fsstrステータス行からの復帰
gnbool端末は回線タイプ(例えば、ダイヤル呼び出し回線や交換回線など)
hcbool端末はハードコピー端末
HDbool(o)端末は半 2 重
hdstr半行下げ(順方向への 2分の 1の行送り)
hostr(P)カーソルのホームポジションへの移動
hsbool端末はステータス行を余分に備えている
hustr半行上げ(逆方向への 2分の 1の行送り)
hzbool端末は‘~’(チルダ)を表示できない(Hazeltine端末)
i1-i3str端末初期設定文字列(terminfo のみ)
ICstr(NP∗)n 個のブランク文字の挿入
icstr(P∗)文字の挿入
ifstr初期設定文字列を含んでいるファイルの名称
imstr挿入モードに入る
inbool端末は挿入モードでナル文字を区別する
iPstr初期設定用プログラムのパス名(terminfo のみ)
ipstr(P∗)挿入される文字の後にパッドを挿入する
isstr端末初期設定文字列(termcap のみ)
itnumn ポジションごとのタブの初期設定
K1strキーパッドの左上キーによって送出される
K2strキーパッドの右上キーによって送出される
K3strキーパッドの中央キーによって送出される
K4strキーパッドの左下キーによって送出される
K5strキーパッドの右下キーによって送出される
k0-k9str0〜9 ファンクションキーによって送出される
kAstrInsert-Line(行挿入)キーによって送出される
kastrClear-All-Tabs(全タブクリア)キーによって送出される
KBstrキーボードのタイプ
kbstrバックスペースキーによって送出される
kCstrClear-Screen(画面クリア)キーあるいは Erase(消去)キーによって送出される
kDstrDelete-Character(文字削除)キーによって送出される
kdstr下向きの矢印キーによって送出される
kEstrClear-To-End-of-Line(行末までクリア)キーによって送出される
kestr「キーパッド転送」モードから抜け出る
kFstrScroll-Forward/Down(スクロールアップおよびダウン)キーによって送出される
kHstrHome-Down(ホームダウン)キーによって送出される
khstrHome(ホーム)キーによって送出される
kIstrInsert-Character(文字挿入)キーあるいは Enter-Insert-Mode(挿入モードへ入る)
キーによって送出される
kLstrDelete-Line(行削除)キーによって送出される
klstr左向きの矢印キーによって送出される
kMstr挿入モード中で Insert(挿入)キーによって送出される
kmbool端末は「メタ」キーを備えている(シフト状態でパリティビットをオンにする)
kNstrnext-page(次ページ)キーによって送出される
knnum(o)(k0 〜 k9 の)ファンクションキーの数(デフォルト値は 0)
kostr(o)他のファンクションキーではないキーに対する Termcap エントリ
kPstrprevious-page(前ページ)キーによって送出される
kRstrScroll-Backword/Up(スクロール後方/アップ)キーによって送出される
krstr右向きの矢印キーによって送出される
kSstrClear-To-End-of-Screen(スクリーンの最後までクリア)キーによって送出される
ksstr端末を「キーパッド転送」モードに入る
kTstrSet-Tab(タブ設定)キーによって送出される
ktstrClear-Tab(タブクリア)キーによって送出される
kustr上向きの矢印キーによって送出される
l0-l9str“n”でない場合のファンクションキーのラベル
LCbool(o)端末は小文字のみ(の表示機能しか持っていない)
LEstr(NP)左に n ポジションだけカーソルを移動
lestr(P)左に 1 ポジションだけカーソルを移動
linumスクリーンあるいはページ上の行数(後述のバグの項を参照)
llstr最後の行の最初のカラム
lmnumli よりも多い行数のメモリ( 0 は変化することを意味する)
mastr(o)矢印キーのマップ(vi のバージョン 2 によってのみ使用される)
mbstrブリンキング(点滅)属性をオンにする
mdstrボールド体(高輝度)属性をオンにする
mestrすべての属性をオフにする
mhstr半輝度属性をオンにする
mibool挿入モードの場合の移動を確実にする
mkstrブランク属性(文字は見えなくなる)をオンにする
mlstr(o)カーソル上におけるメモリロック
mmstr「メタモード」( 8番目のビット)をオンにする
mostr「メタモード」をオフにする
mpstr保護属性をオンにする
mrstr反転ビデオ属性をオンにする
msbool強調モードにおいて移動を確実にする
mustr(o)メモリをアンロックする(メモリロックを解除する)
ncbool(o)正確に動作する cr がない(Datamedia 2500 および Hazeltine 2000)
ndstr破壊しないスペース(右方向へのカーソル移動)
NLbool(o)\n が、行送りではなく、復帰改行である
nlstr(o)\n ではない場合の復帰改行文字
nsbool(o)端末は CRT であるがスクロールしない
nwstr(P)復帰改行(cr の後に do がある場合と同じ挙動となる)
OPbool(o)奇数パリティ
osbool端末は重ね打ちする
pbnum遅延が必要とされる場合の最も低いボーレート
pcstrパッド文字(デフォルト値は NUL)
pfstrプリンタをオフにする
pkstr文字列 s をタイプするためのファンクションキー n をプログラムする
(terminfo のみ)
plstr文字列 s を実行するためのファンクションキー n をプログラムする
(terminfo のみ)
pOstr(N)n バイトに対してプリンタをオンにする
postrプリンタをオンにする
psstrスクリーンの内容を表示する
ptbool(o)端末はハードウェアタブを備えている(is によって設定される)
pxstr文字列 s を転送するためのファンクションキー n をプログラムする
(terminfo のみ)。
r1-r3str端末を正常なモードに完全にリセットする(terminfo のみ)
rcstr(P)最後の sc の位置にカーソルを復旧する
rfstrリセットコードを含んでいるファイルの名称
RIstr(NP)右方向に n ポジションだけカーソルを移動させる
rpstr(NP∗)文字 c を n 回繰り返す
rsstr端末を正常なモードに完全にリセットする(terminfo のみ)
sastr(NP)ビデオ属性を定義する
scstr(P)カーソル位置をセーブする
sestr強調モードを終了させる
SFstr(NP∗)順方向に n 行分スクロールする
sfstr(P)テキストをスクロールアップする
sgnumso あるいは se によって残されるゴミとなる文字の数(デフォルトは 0)
sostr強調モードを開始する
SRstr(NP∗)逆方向に n 行分スクロールする
srstr(P)テキストを下にスクロールする
ststrすべての行の現在のカラムにタブを設定する
tastr(P)8ポジション先にある次のハードウェアタブストップにカーソルを移動させる
tcstr(P)続くべき同じタイプの端末のエントリ
testrtermcap を使用するプログラムを終了させる文字列
tistrtermcap を使用するプログラムを開始させる文字列
tsstr(N)ステータス行の n カラムに進む
UCbool(o)端末は大文字のみ(の表示機能しか持っていない)
ucstr1 文字に下線を施しその文字の後ろに移動する
uestr下線モードを終了させる
ugnumus あるいは ue によって残されるゴミとなる文字の数(デフォルトは 0)
ulbool下線文字は重ね打ちによる
UPstr(NP∗)カーソルを上方向に n 行移動
upstr上方向に 1行移動
usstr下線モードを開始する
vbstrビジブルベル文字(カーソルは移動させない)
vestrカーソルを普通に見えるようにする(vs および vi の解除)
vistrカーソルを消す
vsstrカーソルをよりよく見えるようする
vtnum仮想端末番号(すべてのシステムにおいてサポートされるわけではない)
wistr(N)現在のウィンドウを設定する
wsnumステータス行の桁数
xbboolbeehive(ビーハイブ)(f1=ESC、f2=control-C)
xnbool80桁よりも後の改行復帰が無視される(Concept)
xobool端末は xoff/xon(DC3/DC1)ハンドシェーキングを使用する
xrbool(o)端末でリターンが ce cr nl と同じ働きをする(Delta Data)
xsbool重ね書きによって消去されないスタンドアウト(Hewlett-Packard)
xtboolタブ設定は崩壊する。マジック so 文字(Teleray 1061)
xxbool(o)Tektronix 4025 の Insert-line(行挿入)

エントリの見本

Concept-100 を記述する次のエントリは、本文書の作成時点のものであり、 実際は、さらに複雑なエントリと共に termcap ファイル内に収められているものです。

ca|concept100|c100|concept|c104|concept100-4p|HDS Concept−100:\
:al=3∗\E^R:am:bl=^G:cd=16∗\E^C:ce=16\E^U:cl=2∗^L:cm=\Ea%+ %+ :\
:co#80:.cr=9^M:db:dc=16\E^A:dl=3∗\E^B:do=^J:ei=\E\200:eo:im=\E^P:in:\
:ip=16∗:is=\EU\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E:k1=\E5:\
:k2=\E6:k3=\E7:kb=^h:kd=\E<:ke=\Ex:kh=\E?:kl=\E>:kr=\E=:ks=\EX:\
:ku=\E;:le=^H:li#24:mb=\EC:me=\EN\200:mh=\EE:mi:mk=\EH:mp=\EI:\
:mr=\ED:nd=\E=:pb#9600:rp=0.2∗\Er%.%+ :se=\Ed\Ee:sf=^J:so=\EE\ED:\
:.ta=8\t:te=\Ev    \200\200\200\200\200\200\Ep\r\n:\
:ti=\EU\Ev  8p\Ep\r:ue=\Eg:ul:up=\E;:us=\EG:\
:vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\
:ve=\Ew:vs=\EW:vt#8:xn:\
:bs:cr=^M:dC#9:dT#8:nl=^J:ta=^I:pt:

行の最後に \ を入れることによってエントリを複数の行にわたって続けるこ とができ、読み易さを考慮して空のフィールドを入れることもで きます(この例では、行の最後のフィールドと、次の行の最初の フィールドの間に空フィールドが挿入されています)。コメント は、“#” から始まる行に入れることができます。

機能のタイプ

termcap 内の機能は、ブール機能、数値機能、文字列機能の 3つのタイ プに分類されます。ブール機能は端末が備えている特定の機能を示 し、数値機能は表示のサイズや他の属性のサイズを与え、ストリン グ機能は特定の端末動作を実行する際に使用できる文字の並びを与 えます。すべての機能は 2文字のコードを持っています。例えば、 Concept が自動マージン(automatic margins)を備えている ということ(すなわち、行末に達すると改行復帰が自動的に行われる ということ)は、ブール機能の am という 2文字のコードによって表されます。従って、Concept の記述には am が含まれることになります。

数値機能は、‘#’ という文字とその数値が後ろに続きます。前の例 において、表示の桁数を示す co は、Concept に対して‘80’という値を与えます。

最後に、 ce (行末までクリアするシーケンス)などの文字列値機能は、 2文字のコード 、‘=’ 、文字列、 ‘:’ のシーケンスで記述されます。 こうした機能においては、‘=’ のあとにミリ秒単位で遅延を指定します。 これによって、残りの文字列の発送が終わると、 この遅延を提供するために tputs によってパディング文字が送られます。この遅延は、数値(例えば、‘20’)に することも、‘∗’ を伴う数字(例えば、‘3∗’)にすることもできます。‘∗’ は、 必要とされるパディングが、その動作によって影響を受ける行の数と共に 増加することを示すものであり、指定される量は、影響を受ける各行ごとに 必要とされるパディングの量を示します(文字挿入の場合、この要素は、これ までと同様、影響を受ける行数になります。端末が in を備え、ソフトフェアがそれを使用している場合以外には、この値 は常に1になります)。‘∗’ が指定されている場合には、‘3.5’ と いうように、1行当りの遅延を10分の1ミリ秒単位で指定するこ とが便利な時もあります(小数点以下は1桁しか指定できません)。

制御文字の符号化を簡略化するという目的から、文字列値機能 には多数のエスケープシーケンスが提供されています。 \E は ESC 文字にマップし、 ^X はすべての適切な X に対する control-X にマップし、 \n、 \r、 \t、 \b、 \f というシーケンスは、それぞれ、行送り、復帰、タブ、バックスペ ース、フォームフィードにマップします。さらに、文字は \ の後の 3つの 8進桁で表すことができ、^ および \ という 文字は \^ および \\ として示されます。機能に ‘:’ を入れる必要 がある場合には、8進数で \072 というようにエスケープしなければなりません。文字列機能に NUL 文字を入れる必要がある場合には、 \200 というように符号化しなければなりません (termcap を処理するルーチンは、C 文字列と同様に扱うため、出力の上位ビット は、結局マスク(無視)されます。そのため、 \200 は \000 と扱われます)。

個々の機能にコメントを付けなければならない時もあります。コメ ントを付ける場合には、機能名の前にピリオドを入れてください。 例えば、前の例における最初の cr と ta を参照してください。

記述の準備

次に、端末の記述を準備する方法を説明します。端末記述の最も効率的な作成方法は、 termcap 内の同じような端末の記述をまねることによって作成すること、 つまり、部分的な記述を利用して、それらが正しいものであるかどうかを vi によってチェックしながら徐々に記述を構築していくことです。 非常に珍しい種類の端末を記述する場合には、 termcap ファイルの記述能力の不足が明らかになったり、 vi 内にバグが生じることもあります。 新しい端末記述を簡単にテストするためには、 作成中の記述が含まれているファイルのフルパス名を環境変数 TERMCAP に設定します。そうすると、プログラムは、 /etc/termcap ではなく、そのファイルを見に行くようになります。 また、その termcap エントリ自体を TERMCAP に設定すれば、 termcap ファイルの読み取りを行わずにプログラムを立ち上げることができます。

(端末のメーカーが文書による説明を提供していない場合)挿入行 に関するパディングを正しく合わせるためには、9600 ボーで /etc/passwd の編集を vi によって行い、 画面の中央からおよそ 16行分ほどを削除した後に、‘u’ キーを 何度も素早く打つことによって、厳密なテストが行うことができます。 ディスプレイが乱雑になっている場合には、 普通、パディングを増やす必要があります。 挿入文字についても、同様のテストを行うことができます。

基本的な機能

ディスプレイの1行当りのカラム数は、 co 数値機能によって指定されます。ディスプレイが CRT である場合に は、スクリーン上の行数は、 li 機能によって指定されます。 カーソルが右マージンに達した時に次の行の先頭に移行した場合、 そのディスプレイは am 機能を備えています。端末が画面をクリアできる場合、 このクリアを行うコードは、 cl 文字列機能によって与えられます。(文字が重ね書きされた時 にそのポジションの字が消去されるのではなく)端末が重ね書き する場合、その端末は os 機能を備えています。 端末が、ソフトコピーデバイスを備えていないプリンティング端末である場合には、 その端末に hc および os を与えてください (os は、ハードコピーや APL 端末の他に、Tektronix 4010 シリーズなど のストレージスコープ端末にも適用されます)。現在の行の左端 にカーソルを移動させるコードが存在する場合には、これを cr として与えてください (これは普通、復帰文字 ^M になります)。可聴信号(ベル音やビープ音など)を生成するため のコードが存在する場合には、これを bl として与えてください。

カーソルを 1ポジション左へ移動させるための(バックスペースなどの) コードが存在する場合、 le としてその機能を与えます。同様に、右、上、下に移動するためのコードは、 それぞれ、 nd、 up、 do として与えられます。こうした局所カーソル移動は、 通過したポジションにあるテキストを変更しません。例えば、端末が os 機能を備えていない限り、スペースは通過したポジションにある文字を消去するため、 通常は “nd=” を使用しません。

ここで非常に重要な点は、 termcap 内に記述されたローカルなカーソル移動は、CRT ディスプレイの左端およ び最上段における挙動を定義していないということです。プログラムは、 bw が与えられていない限り、左端付近において後退することや、ローカルな カーソル移動を使用して最上段よりも上に進むことは決してありません。

テキストを上にスクロールする場合、プログラムは画面の左下の隅に進み、 sf (インデックス)文字列を送ります。テキストを下にスクロー ルする場合、プログラムは画面の左上の隅に進み、 sr (逆インデックス)文字列を送ります。 sf および sr 文字列は、画面のそれぞれの隅にいない場合には、 定義されていない動作をします。 スクローリングシーケンスのパラメータ化されたものが、 SF および SR です。これらは、1つのパラメータを取るという点と、 多くの行をスクロールするという点を除いて、 sf および sr と同じ意味を持っています。また、これらも、画面の隅の正しい場所に いる場合以外は定義されていない動作をします。

am 機能は、テキストが画面の右端に出力された時に、 カーソルがそこで動かなくなるかどうかを通知しますが、 これは、必ずしも最後の桁からの nd に適用されるわけではありません。 左端からの左方向へのローカルな移動は、 bw が与えられている場合にのみ定義されます。左端からの le は、前の行の右端に移動します。 これは、例えば、画面の端付近に枠を描く際に役立ちます。 端末が切り替え可能な自動マージンを備えている場合には、 termcap 記述は、普通、この機能がオン(すなわち、 am) になっているものとみなします。 端末が、次の行の最初の桁にカーソルを移動させるコマンドを備えている場合、 そのコマンドは nw (改行復帰)として与えてやることができます。 このコマンドは現在行の残りをクリアしてもかまいません。 だから、端末が、正しく動作する CR や LF を持っていなければ、 CR および LF のうちの1つあるいは両方がなくても nw の動作をさせることができます。

これらの機能は、ハードコピーおよび グラス tty 端末を記述するに十分なものです。従って、Teletype モデル 33 は 次のように記述されます。

T3|tty33|33|tty|Teletype model 33:\
:bl=^G:co#72:cr=^M:do=^J:hc:os:

Lear Siegler ADM-3 は次のように記述されます。

l3|adm3|3|LSI ADM-3:\
:am:bl=^G:cl=^Z:co#80:cr=^M:do=^J:le=^H:li#24:sf=^J:

パラメータ化された文字列

カーソルアドレッシングおよびパラメータを必要とする他のストリ ングは、パラメータ化された文字列機能によって記述されます。すなわち、 printf(3S) のようなエスケープ文字 %x が使われます(他の文字は変更されること がありません)。例えば、カーソルのアドレスを指定する場合には、2つ のパラメータ(移動先の行および桁)と共に cm 機能を指定します(行および桁はゼロから数えられ、それらは見る ことのできないメモリではなく、ユーザに表示される物理的なスク リーンを指します。端末がメモリ相対カーソルアドレッシングを備 えている場合には、アナログ CM 機能によってこのことを示すことができます)。

% エンコードは次のような意味を持っています。

%%% を出力します。
%dprintf の %d という形で値を出力します。
%2printf の %2d という形で値を出力します。
%3printf の %3d という形で値を出力します。
%.printf の %c という形で値を出力します。
%+x 値に x を加えたた後、%. を行います。
%>xy値>x であればy を追加し、出力は行いません。
%r2つのパラメータの順番を逆にし、出力は行いません。
%i+1し、出力は行いません。
%nすべてのパラメータに対して 0140との排他的論理和をとります(Datamedia 2500)。
%BBCD(16∗(値/10))+(値%10)、出力は行いません。
%D逆コーディング(値 − 2∗(値%16))、出力は行いません(Detla Data)。

Hewlett-Packard 2645 を例にとって考えると、第3行の第12桁に 進ませるためには、“\E&a12c03Y” に6ミリ秒間のパディングを つけて送信する必要があります。 ここでは、行と桁の座標の順番が逆にされ、 行および桁は2桁の整数として送られます。従って、その cm 機能は、“cm=6\E&%r%2c%2Y” となります。

Microterm ACT-IV の場合は、^T から始まる2進符号化された現在の行 および桁、すなわち “cm=^T%.%.” だけを送る必要があります。 “%.” を使用する端末は、カーソルを後退させる 機能(le)および画面上でカーソルを 1行上に移動させる 機能(up)を備えている必要があります。これは、 \n、 ^D、 \r の転送が必ずしも確実に行われるわけではない(システムによって変更 あるいは無視される恐れがある)ためです (termcap を使用するプログラムは、タブが拡張されずに \t の送信が確実に行われるように、端末モードを設定しなければなりません。 Ann Arbor 4080 の場合には、このことが重要な条件となります)。

最後の例は、ブランク文字(例えば、“cm=\E=%+ %+”) によって行 および桁をオフセットする Lear Siegler ADM-3a です。

行あるいは桁の絶対カーソルアドレス指定は、1つのパラメータ機能 ch (水平位置絶対アドレス)あるいは cv (垂直位置絶対アドレス)として指定することができます。こうし たパラメータシーケンスは、(Hewlett-Packard 2645 の場合のよう な)2つのパラメータを備えた一般的なシーケンスよりも短くなる ことが時々あり、 cm に優先して使用されます。(例えば、右方向に n ポジションだけ移動するというような)パラメータ化された局所移動が存在する場合、 こうした移動は、移動するポジション数を示す 1つのパラメータと共に、 DO、LE、 RI、UP として指定することができます。こうした機能は、主に、cm を 備えていない端末(Tektronix 4025 など)の場合に有用です。

カーソル移動

端末がカーソルをホームポジション(画面の最上段の左隅)に素早 く戻すことができる場合には、この機能は ho として与えることができます。同様に、最下段の左隅に素早く移動させる機能は、 ll として与えることができます。この ll は、 up によってカーソルをホームポジションから上に移動させる動作を伴うかも 知れませんが、 (ll がそうしない限り)プログラムが勝手にこの動作を行うことは決してありません。 ホームポジションから上への移動を行なったらどうなるかがることが プログラムには仮定できないためです。 ホームポジションは、メモリではなく、画面の最上段の左端であり、 カーソルアドレス(0,0)と同じです (従って、Hewlett-Packard 端末における “\EH” シーケンスを ho に使用することはできません)。

領域のクリア

端末が、カーソルを現在位置にとどめたまま、現在位置からその行 の終わりまでをクリアすることができる場合、これは ce として与えます。端末が現在位置からその画面の終わりまでをクリア することができる場合、この機能は cd として与えます。 cd は、各行の最初の桁からしか起動することができません(従って、本当の cd が利用できない場合、多数行の削除を要求することによってこれを シミュレートすることができます)。

行の挿入および削除

端末が、カーソルのある行よりも前に新しいブランク行を入れるこ とができる場合、この機能は al として与えます。この機能は、行頭でのみ起動することにします。 その場合、カーソルは新たなブランク行の左端に現れます。端末 が、カーソルのある行を削除することができる場合、この機能は dl として与えます。この機能は、削除する行の先頭でのみ使用することにします。 al および dl の類型として、1つのパラメータで多くの行を挿入あるいは削除するものは、 AL および DL として与えます。 (VT100 のように)端末がスクローリング領域を設定できる場合、 これを設定するためのコマンドは、 cs 機能で記述することができます。この機能は、2つのパラメータ、 すなわちスクローリング領域の最上行と最下行を取ります。 ただし、このコマンドを使用した場合、その後のカーソル位置は定義 されません。このコマンドを使用すれば、行の挿入および削除と同 じ効果を得ることができます。その場合には、sc(カーソル のセーブ)および rc(カーソルの復元)コマンドも有用 です。sr あるいは sf を使用すれば、本当の 行挿入および行削除機能を備えていない多くの端末においても、 画面の最上段および最下段において複数の行を 挿入することができます。この方法は、行挿入および行削除機能を 備えた端末においてさえ、往々にしてより高速です。

端末が、すべてのコマンドを適用できるメモリの一部としてウィン ドウを定義する機能を持っている場合、パラメータ化された文字列 wi を与えます。この機能には、メモリ内の開始行および終了行、メモ リ内の開始カラムおよび終了カラムという 4つのパラメータが(この順番 で)指定されます (この terminfo 機能は万全を期して記述されるものです。このため、 termcap 機能を使用するすべてのプログラムがこの wi 機能をサポートするわけではありません)。

端末が画面の上にディスプレイメモリを保持することができる場合、これは da として与えます。端末がディスプレイメモリを画面の下に保持することができる場合、 db を与えます。これらの機能は、行の削除あるいはスクローリングが 非ブランク行を引き上げるかどうか、あるいは、 sr によるスクロールバックが非ブランク行を引き下げるかどうかを示します。

文字の挿入および削除

 
termcap を使用して記述することができる文字挿入および文字削除の機能に 関しては、2種類の基本的なインテリジェント端末が存在します。最も一般的 な文字挿入および削除操作は、現在行にある文字にしか影響を与えず、行末 に対して文字を正確にシフトします。Concept-100 や Perkin Elmer Owl など の他の端末は、画面上の、タイプされたブランクとタイプされていないブランク とを区別し、挿入あるいは削除が行われた時に、(削除あるいは 2つのタイプ されていないブランクに拡張される)タイプされていないブランクに対して のみシフトを行います。画面のクリアを行い、テキストをカーソル移動で 区切ってタイプすることにより、使用している端末の種類を判断することが できます。“abc” と “def” の間に(スペースではなく)局所カーソル移動を 使用して “abc   def” とタイプしてください。次に、“abc” の前にカーソル を戻し、端末を挿入モードにしてください。文字をタイプした時に、後ろの 文字が正確にシフトし、文字が行末から落ちてしまった場合には、使用中の 端末は、ブランクとタイプされていないポジションを区別しないもの です。“abc” が “def” のすぐ隣までシフトしてから、一緒に現在行の 終わりまで移動し、次の行に押し出された場合は、使用している端末は別の 種類の端末なので、 in (insert null:ナル挿入)機能を与えなくてはなりません。 これらは、論理的に異なる 2つの属性(1行あるいは複数行挿入モードと、 タイプされていないスペースの特殊処理)ですが、 1つの属性で挿入モードが記述できないような端末は今のところありません。

termcap は、挿入モードを備えている端末を記述することも、現在行におい てブランクポジションを入れるために簡単なシーケンスを送る端末 を記述することもできます。挿入モードに入る場合には、そのシー ケンスを im として指定してください。挿入モードから出る場合には、そのシーケンスを ei として指定してください。挿入したいそれぞれの文字の直前に送る 必要のあるシーケンスを ic として指定してください。本当の挿入モードを備えているほとんどの端末は ic を与えません。画面のポジションを開けるためにシーケンスを使用する 端末は、ここで ic を指定します (ユーザの使用している端末が挿入モードと ic を両方備えている場合には、普通、挿入モードの方が ic に優先して使用されます。両方を組み合わせて使用しなければなら ない端末でない限り、両方を一度に与えてはなりません)。 挿入後にパディングが必要とされる場合には、(文字列 オプションの1つである) ip 内にこれをミリ秒単位で指定してください。また、1つの文字の挿 入後に送る必要のある他のすべてのシーケンスについても、 ip 内に指定することができます。端末を 挿入モードに入れる必要があり、かつ、各挿入文字の前に特殊コー ドを付ける必要がある場合には、 im/ei と ic の両方を指定して、その両方を使用することができます。 IC 機能が n というパラメータを備えている場合、 ic の動作を n 回繰り返します。

挿入モード時に、同じ行にある文字を削除するために、カーソルを 別の場所に移動させたい時もあります(例えば、挿入位置の後にタ ブがある場合など)。こうした場合、端末が挿入モード時の移動を 認めるものであれば、 mi 機能を利用して挿入のスピードを早めることができます。 mi を省くことによって影響を受けるのは挿入スピードだけです。一部 の端末(Datamedia 社の端末などが有名)は、その挿入モードの仕組みから、 mi を備えていません。

また、 dc を指定すれば、1つの文字を削除することができ、 n というパラメータと共に DC を指定すれば、 n 個の文字を削除することができ、 dm および ed を指定すれば、削除モード (dc を機能させることのできるモード)の切り替えが行えます。

強調、下線、ビジブルベル

端末が 1つあるいは複数の種類のディスプレイ属性を備えている場 合、これらの属性は多くの異なる方法で表すことができます。エラ ーメッセージおよび他の表示情報を強調するために、適切なハイコ ントラストの見やすいフォーマットを示すことによって、1つのデ ィスプレイ形式を standout mode (強調モード)として選択するとよいでしょう(選択で きる場合には、反転ビデオと半輝度を併用するか、反転ビデオだけ を使用することをお勧めします)。強調モードに入るた めのシーケンスおよびこのモードから出るためのシーケンスは、そ れぞれ、 so および se として与えられます。TVI 912 や Teleray 1061 のように、強調 モードの切り替えを行うコードが 1つあるいは 2つのブランクス ペースあるいはゴミ文字を画面に残す場合には、残された文字数を知 らせるように、 sg が与えられるべきです。

下線の開始および終了を行うコードは、それぞれ、 us および ue として与えることができます。下線モード変更文字は、 sg に類似した ug によって指定されます。現在文字に下線を引いてカーソルを右に 1 ポジション移動させるためのコードを備えた(Microterm Mimeなど のような)端末の場合には、これを uc として与えることができます。

さまざまな強調モードに入るためのその他の機能には、 mb(点滅)、md(ボールドあるいは強輝度)、 mh(弱あるいは半輝度)、mk(ブランクおよび見えないテキスト)、 mp(保護)、mr(反転ビデオ)、me(すべての属性モードのオフ)、 as(代替文字セットモードへ入る)、 ae(代替文字セットモードから抜け出る)があります。 こうしたモードのいずれかを単独でオンにすると、他のモードがオフになる場合 も、そうでない場合もあります。

モードの任意の組み合せを設定するシーケンスが存在する場合、こ れは、9つのパラメータを取る sa (set attributes:属性設定)として与えることができます。それぞれの パラメータは、0 か 1 のいずれかになり、対応する属性がオンあるいは オフになります。この 9つのパラメータは、強調、下線、反転、点滅、弱 輝度、ボールド、ブランク、保護、代替文字セットの順番で示されます。 sa によってすべてのモードがサポートされるわけではなく、対応する 属性コマンドが存在するものだけがサポートされます (termcap を使用するプログラムが、 terminfo との互換性を保つように定義されている sa 機能をサポートすることはまずありません)。

マジッククッキーグリッチ(sg および ug)を備えた端末は、 それぞれの文字セルのために余分な属性を維持する代わりに、モード設定 シーケンスを受けた時に、ディスプレイアルゴリズムに影響を与える特殊な クッキーあるいはガーベッジ文字を設けています。

Hewlett-Packard 2621 などの一部の端末は、改行時あるいはカーソ ルのアドレス指定時に、自動的に強調モードから抜け出します。 強調モードを使用するプログラムは、こうした 端末においては、カーソルの移動あるいは改行文字の送出以前に 強調モードから抜け出します。これが問題にはならない端 末においては、このオーバーヘッドが不要なものであることを示すために ms 機能がなくてはなりません。

端末が、エラーを静かに知らせるために画面をフラッシュさせる機 能(ベルの代わりとなる機能)を備えている場合には、これは vb として与えることができます。この機能はカーソルを移動させることは ありません。

カーソルが最下行にない時に通常よりもカーソルをはっきり見える ようにしたい場合、例えば、非点滅アンダーラインを、目につきや すいブロックあるいは点滅アンダーラインに変更する場合には、こ のシーケンスを vs として与えてください。カーソルを完全に消してしまう方法がある場合には、 vi としてこれを与えてください。この2つのモードの効果を解除する ve も、与える必要があります。

端末が、重ね打ちしなくても(特別なコードを必要とせずに) 下線の施された文字を正しく表示する場合には、 ul 機能を与えなければなりません。重ね打ちした文字を空白 によって消去可能な場合には、 eo を与えることによってこれを示す必要があります。

キーパッド

端末が、キーが押された時にコードを転送するキーパッドを備えて いる場合には、この情報を与えることができます。キーパッドがロ ーカルモードでしか機能しない端末を扱うことはできません(例え ば、シフトの解除されている Hewlett-Packard 2621 キーなどがこれ に該当します)。キーパッドが転送を行うか否かついての設定が可 能な場合には、こうしたコードを ks および ke として与えてください。こうしたコードが与えられていない場合、 キーパッドは常に転送を行うものとみなされます。左向きの矢印、 右向きの矢印、上向きの矢印、下向きの矢印、ホームキーによって 送られるコードは、それぞれ、 kl、kr、 ku、kd、kh として与えることができます。f0、f1、...、f9 などのファンクショ ンキーが存在する場合には、それらが送るコードを k0、 k1、...、k9 として与えることができます。これらのキーが f0 から f9 までのデフ ォルト値以外のラベルを備えている場合には、そうしたラベルを l0、l1、l9 として与えることができます。 他の特定の特殊キーによって転送されるコードは以下のように示す ことができます。すなわち、 kH (ホームダウン)、kb (バックスペース)、ka (すべて のタブのクリア)、kt (この桁のタブストップのクリア)、kC (画面 クリアあるいは消去)、kD (文字の削除)、kL (挿入モードの 解除)、kE (行末までのクリア)、kS (画面の終わりまでの クリア)、kI (文字の挿入あるいは挿入モードの指定)、kA (行の 挿入)、kN (次ページ)、kP (前ページ)、kF (右/下方向 のスクロール)、kR (左/上方向のスクロール)、kT (この桁のタ ブストップの設定)です。さらに、キーパッドが、4種類の矢印キーを 含む 3 × 3 列のキーを備えている場合、他の 5つのキーは、 K1、K2、 K3、K4、K5 として示すことができます。これらのキーは、3 × 3 種類の方向指 示パッドの動作が必要とされる場合に有用です。 ko 機能は、以前その他のファンクションキーの表記に使用されていましたが、この 機能は古いものとなり、上記の諸機能によって完全に取って代わられています。

単一文字の矢印キーを備えている端末上の矢印キーを示すために、 ma エントリも使用されます。このエントリは古いものですが、メモリ の制約からいくつかのミニコンピュータにおいて実行しなければな らないバージョン 2 の vi では、まだ使用されています。このフィールドは、 kl、kr、 ku、kd と重複しています。 ma エントリは 2文字のグループから構成されています。それぞれのグ ループにおいて、最初の文字は矢印キーによって送られるものであ り、2番目の文字はそれに対応する vi コマンドです。 kl、kd、 ku、kr、kh に対応する vi コマンドは、それぞれ h、j、 k、l、H です。例えば、Mime は、矢印キー左(^H)、下(^K)、上(^Z)、 右(^X)を示す “ma=^Hh^Kj^Zk^Xl” を備えています (Mime にはホー ムキーはありません)。

タブおよび初期設定

これらの機能を使用するプログラムを走らせる際に端末を特別なモ ードに入れる必要がある場合、このモードの起動および解除を行う コードは、 ti および te として与えることができます。例えば、Concept のような 1ページ 以上のメモリを備えた端末には、こうしたことが必要とされます。 端末が、スクリーン相対カーソルアドレッシング機能を備えて おらず、メモリ相対カーソルアドレッシング機能しか備えていな い場合には、カーソルアドレッシングが正しく機能するように、 画面と同じサイズのウィンドウをディスプレイ内に設定しなけれ ばなりません。これは、Tektronix 4025 にも使用されます。その 場合、 ti は、そのコマンド文字が termcap によって使用されるコマンド文字になるように設定します。

他の機能には、端末に対する初期設定文字列 is と、長い初期設定文字列を含んでいるファイルの名前 if があります。 termcap 記述の他の部分と一貫したモードに端末を設定するためには、これ らの文字列が必要とされます。こうした文字列は、通常、 ユーザがログインするたびに tset プログラムによって端末に送られます。これらの文字列は、 is ; ct および st によるタブの設定; if の順番で表示されます (terminfo は、 is の代わりに i1 および i2 を使用し、プログラム iP を実行させ、他の初期設定の後に i3 を表示します)。まったく未知の状態からの強行なリセットを行う シーケンスのペアは、 rs および if として同じように与えることができます。こうした文字列は、 reset (リセット)プログラムによって出力されます。このプログラムは、 端末が身動きのできない状態に陥った時に使用されるものです (terminfo は rs の代わりに r1〜r3 を使用します)。 コマンドが画面上に厄介な影響をもたらし、ログイン時には不要な ものである場合、通常、こうしたコマンドは rs および rf 内に収められます。例えば、VT100 を 80桁モードに設定するコマンドは is の一部になっているのが普通ですが、このコマンドは、画面に厄介 なグリッチをもたらすものであり、VT100 端末は普通すでに 80桁モ ードになっているため、普通は必要とされません。

端末がハードウェアタブを備えている場合、次のタブストップに進 むためのコマンドは ta として与えることができます(普通は ^I)。前の タブストップに後退するための “backtab” (バックタブ)コマンドは、 bt として与えることができます。タブストップが端末に送られるので はなく、コンピュータによって拡張されていることが tty ドライバ モードによって示されている場合、たとえ ta あるいは bt が存在していても、ユーザがタブストップを正しく設定していない 可能性もあるため、プログラムは、規則によって、それらのコマン ドを使用することはできません。 端末が、端末の電源投入時に n ポジションごとに初期設定されるハードウェアタブを備えている場合、 タブストップ間のポジション数を示す数値パラメータ it が与えられます。この情報は、普通、 tset コマンドによって使用され、ハードウェアタブ拡張用のドライバモ ードを設定するかどうか、およびタブストップを設定するかどうか が決定されます。端末が、不揮発性メモリ内に格納できるタブスト ップを備えている場合、 termcap 記述は、そうしたタブストップが正しく設定されていると仮定する ことができます。

タブストップの設定および解除を行うためのコマンドが存在する場 合、それらのコマンドは ct(すべてのタブストップの クリア)および st(すべての行の現在桁におけるタブ ストップの設定)として与えることができます。これによって 記述が行えないほど複雑なシーケンスがタブの設定に必要と される場合には、そのシーケンスを is あるいは if に 収めることができます。

遅延

特定の機能は、端末ドライバ内のパディングを制御します。そうし た機能は、主に、ハードコピー端末に必要とされるものであり、端 末ドライバモードを適切に設定するために tset プログラムによって使用されます。 cr、sf、 le、ff、ta の各機能に埋め込まれる遅延は、端末ドライバ内に適切な遅延ビットを設定します。 pb (ボーレートのパディング)が提供されている場合、 pb の値を下回るボーレートにおいては、これらの値を無視することが できます。NEWS-OS 2.x (4.2BSD) tset の場合には、代わりに、数値機能 dC、dN、 dB、dF、dT として遅延が与えられます。

その他の機能

端末がパッドとして NUL(ゼロ)以外の文字を必要とする場合、これは pc として与えることができます。 pc 文字列の最初の文字だけが使用されます。

端末がカーソル位置のセーブおよび復元を行うためのコマンドを備 えている場合、それらを sc および rc として与えてください。

端末が、通常はソフトフェアによって使用されない「ステータス行」を 余分に備えている場合、このことを示すことができます。ステ ータス行が、最下段の行の下に追加行として表示される場合、 hs 機能を与えるべきです。ステータス行内の位置に進むための、およ びステータス行から戻るための特別な文字列は、それぞれ ts および fs として与えることができます (fs は、 ts の実行以前と同じ位置にカーソルを戻さなければなりません。必要 とされる場合には、 sc および rc 文字列を ts および fs に収めても、同じ効果が得られます)。 ts 機能は 1つのパラメータを取ります。このパラメータは、カーソル の移動先のステータス行のカラム数を示します。エスケープシーケンス および他の特殊コマンド(タブなど)がステータス行において機能 する場合、フラグ es を与えることができます。ステータス行をオフにする(あるいは、 その内容を消去する)文字列は、 ds として与えなければなりません。ステータス行は、通常、残りの画面と同じ幅 (すなわち、 co) になるものと仮定されます。(例えば、端末が 1行全体のロード を認めないという事情から)ステータス行が異なる幅をとる場合、 数値パラメータ ws によってステータス行の幅を桁単位で示すことができます。

端末が半行の上げ下げを行える場合、このことを hu (半行上げ)および hd (半行下げ)によって示すことができます。これは、主に、ハード コピー端末上のスーパースクリプトおよびサブスクリプトに有用で す。ハードコピー端末が、次ページに送ること(書式送り)ができ る場合、これを ff として与えてください (通常は ^L)。

(同じ文字を数多く送る際に時間を節約するために)特定の文字を 一定の回数繰り返すためのコマンドが存在する場合には、この機能 は、パラメータ化された文字列 rp によって示すことができます。最初のパラメータは、繰り返される 文字であり、次のパラメータは、その文字を繰り返す回数 です(これは、termcap を使用するプログラムによって サポートされることが少ない terminfo 機能です)。

Tektronix 4025 などのように端末が設定可能なコマンド文字を 備えている場合、この機能は CC によって示すことができます。すべての機能において使用 される、1つのプロトタイプコマンド文字が選択されます。この文字は、 CC 機能中で認識するために与えられます。次の規則は、いくつかの UNIX システム においてサポートされます。すなわち、環境の CC 変数が探索され、その変数が見つけ出されると、すべてのプロトタ イプ文字がその環境変数内の文字に置換されます。 CC 環境変数のこうした使用法は、 make(1) と矛盾するため、非常によくありません。

(switch、dialup、patch、networkなど) 特定種類の 既知の端末を表さない端末記述は、プログラムが 端末への情報の通知に困らないように、gn(総称) 機能 を含まなければなりません(この機能は、エスケープ シーケンスが既知の virtual (仮想)端末記述には適用されません)。

端末が、フロー制御のために xoff/xon(DC3/DC1)ハンド シェイキングを使用する場合、 xo を与えてください。処理ルーチンがより効果的な方法を選択できる ように、パディング情報も含める必要がありますが、実際のパッ ド文字は転送されません。

端末が、シフトキーのように機能し、転送されるすべての文字の 8 番目のビットを設定する「メタキー」を備えている場合、このことを km によって示すことができます。端末がメタキーを備えていない場合、 ソフトフェアは、8番目のビットをパリティビットとみなし、このビ ットは普通クリアされることになります。この「メタモード」をオン にする文字列が存在する場合、これらを mm および mo として与えることができます。

端末が、1度に画面に収まりきれないメモリ行を備えている場合、 メモリの行数を lm によって示すことができます。明示的な 0 の値は、行数が決められ ていないことを示すと共に、画面に表示される以外にもまだメモリ が存在することを示します。

端末が、UNIX システムの仮想端末プロトコルによってサポートされ ないものである場合、その端末番号を vt として与えることができます。

端末に接続されている補助プリンタを制御する媒体コピー文字列 は、ps(画面の内容のプリント)、pf(プリンタの オフ)、po(プリンタのオン)として与えることができます。プリンタがオン になっている場合、端末に送られるすべてのテキストが、そのプリ ンタに送られます。プリンタがオンの時に端末の画面にもそのテキ ストが表示されるかどうかは定義されていません。po の 変形である pO は、1つの パラメータを取るものであり、そのパラメータの値と同 じ文字数の間だけプリンタをオンの状態にしておきます。このパラ メータは 255 を超えてはなりません。すべてのテキストは、 pf を含めて、pO が効力を持っている間、 プリンタにトランスペアレント(透過的)に送られます。

ファンクションキーをプログラムするための文字列は、 pk、pl、px として与えることができます。こうした文字列のそれぞれは、 2つのパラメータを取ります。1つは、プログラムするファンクシ ョンキー番号 (0 〜 9) であり、もう 1つは、それをプログラムす るための文字列です。この範囲を超えたファンクションキー番 号を指定すると、端末によって異なる形で未定義キーがプログラム されることになります。これらの機能の相違点を挙げると次のよう になります。まず、 pk の場合は、ユーザが特定のキーを押すと、特定の文字列をタイ プしたのと同じになります。 pl の場合は、文字列がローカルモードにおいて端末によって実行されます。 px の場合は、文字列がコンピュータに転送されます。残念なことに、 termcap 内には文字列パラメータに関する定義が欠落しているために、 terminfo だけがこれらの機能をサポートします。

不都合と障害点

Hazeltine 社の端末は、‘~’(チルダ)文字を表示できないため、 hz を示す必要があります。

以前に Datamedia 社の端末にみられた nc 機能は、すでに古くなった機能であり、改行復帰のために \r\n をエコーし、それ以後の改行を無視します。

am ラップ(回り込み)の直後にある改行を無視する端末(Concept など)は、 xn を示さなければなりません。

ce が(単に強調モードにおいて通常のテキストを書き込む のではなく)強調モードを解除しなければならない場合には、 xs を与えなくてはなりません。

Teleray 社の端末では、タブがすべての文字を消してしまうため、 xt (破壊的タブ)を示さなければなりません。この問題は、この 他にも、「マジッククッキー」の上にカーソルを置くことができな いことを示す場合や、強調モードを解除するために行の 削除および挿入を使用する必要があることを示す場合に使用されます。

Beehive Superbee は、エスケープ あるいは control-C 文字を正しく転送すること ができないため、ESC の代わりに “f1” キーが、^C の代わ りに f2“ が使用されることを示す xb を備えています (その ROM に応じて、特定の Superbee だけがこうし た問題を抱えています)。

端末に関する他の特定の問題は、xx という形を備えた機能を 追加することによって訂正することができます。

類似した端末

2つの非常に類似した端末が存在する場合には、特定の例外条件を 含めて両方の端末を同じように定義することができます。文字列機能 tc は、類似した端末の名称によって提供することができます。この機 能は続いていなければならず、その 2つのエントリの結合後の長さ は 1024 を超えてはなりません。 tc の前に与えられた機能は、 tc によって起動される端末タイプ内の機能を変更します。この機能の取り消しは、 tc の左側に xx@ (xx はその機能)を入れることによって行えます。例えば、

hn|2621−nl:ks@:ke@:tc=2621:

という文字列は、 ks あるいは ke 機能を備えていないため、ビジュアルモードにおいてファンクショ ンキーラベルをオンにしない “2621−nl” を定義するものです。こ れは、1つの端末に対して異なるモードが存在する場合、あるい はユーザの好みが異なる場合に有用です。

著者

William Joy
Mark Horton が下線およびキーパッドサポートの項を付け加えました。

関連ファイル

/etc/termcap 端末記述を含んでいるファイル

関連事項

ex(1), more(1), tset(1), ul(1), vi(1), curses(3X), printf(3S), term(7). 

警告およびバグ

注: termcap は、UNIX System V Release 2.0 の terminfo によってリプレースされました。 “obsolete(旧式)” というフラグの付けられた機能を排除すれば、 この移行は、比較的楽なものとなります。

行およびカラム情報は、 termcap ファイル内だけでなく、カーネルによっても格納されるようになっ ています。現在、大部分のプログラムは、主に、カーネル情報を使用します。 termcap ファイル内の情報は、カーネルが何も情報を持っていない場合にだけ使用されます。

vi は、文字列機能に 256 文字だけしか認めず、 termlib(3) ファイル内のルーチンはこのバッファのオーバーフローを検査しません。 1つのエントリの合計の長さは(拡張された改行文字を除いて)、 1024 を超えることができません。

すべてのプログラムがすべてのエントリをサポートするわけではありません。

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026