``端末へエスケープシーケンスを送る''という次の小節を除いて、本章では主 に、端末の前でメニューを使って手作業によるセットアップの詳細について述 べます。まだやったことがないのなら、 端末セットアップ (設定)の概要を読んでください。端末のマニュア ルがあれば一番いいのですが、それさえも設定する必要のある多くのオプショ ンについての情報が載っているわけではありません。
ボーレートのような通信パラメータは、もし設定されなかったら端末との通信 がうまくいかないので、端末で常に設定されてなければなりません。一度通信 が確立したら、端末の設定を保存させるために 2 つの選択肢があります。端 末で手作業の設定を繰り返して端末の不揮発性メモリに書き込んでおくか、あ るいは端末の電源が入るたびに (あるいはそれに似た状態になると)、コンピ ュータから端末へエスケープシーケンスを送るようにすることです。
もし、端末のセットアップと良好な設定を端末に保存する方法を知っているな ら、それが最善のやりかただと思います。その方法を知らないのなら、端末を 使う度に terminfo の初期化文字列を端末に送ることでしょう。多分何もしな くても端末は使いやすいものだと思いますよ。あなた (かアプリケーションプ ログラム) は、端末にあるエスケープシーケンスを送ることでいつでも設定を 変更することができます。
一度通信インターフェースが確立すると、端末の設定はコンピュータから端末 へエスケープシーケンスを送ることで保存します。かなり多くの端末があるの なら、自動的に実行するシェルスクリプトを書く価値があると思います。それ は端末の不揮発性メモリに正しいセットアップを保存するように指示するコマ ンドなので (そうじゃないかもしれない)、次に端末の電源が入ったときに設 定が反映しているでしょう。
エスケープシーケンスを送るには簡単な方法と複雑な方法があります。簡単な 方法を使うと、terminfo データベースから適切なエスケープシーケンスを見 つけてきて自動的にコマンドを発行し、送信してくれるので、エスケープシー ケンスを探す必要はありません。残念ながら、送りたいエスケープシーケンス が全て terminfo データベースにあるとは限りません。従って、より複雑な (でも、より良い) 方法はエスケープシーケンスを直接送ることです。
複雑な方法を使うには高度なマニュアルが必要になります。かつて古い端末の マニュアルにはエスケープシーケンスの詳細な表が含まれていましたが、新し いものには普通は記載されていません。それを見つけるために、端末には付い てこない ``プログラミングマニュアル'' (またはそれに類するもの) と呼ぶ 別なマニュアルを購入する必要があるかもしれません。幾つかの端末のために エスケープシーケンスリストがインターネッ トにありますが、簡潔なもので、不備な点もあります。
マニュアルかそれに類するものがなくても、``tput'' と ``setterm'' プログ ラムを使って端末の設定をするためのコマンドを送ることができますよ。 端末の設定の変更をご覧ください。初期化文字 が端末に対して希望の設定を行なうなら、terminfo のエントリにある初期化 文字を端末へ送るにちがいありません。 初期化 文字をご覧ください。端末の電源が入る度にコンピュータから端末にエスケー プシーケンスを送るようにしなくても、端末の不揮発性メモリにどうにかして 保存しておけばよいのです。
古い端末の数字キーの最高列のすぐ上のラベルを見てください。もしあれば、 このラベルはセットアップモードで使用できます。幾つかの古い端末では、`` セットアップ'' メニューが一つだけかもしれません。なお古いものには物理 的なスイッチがついています。いくつかの場合では、全てのスイッチにラベル があるわけではないのですが、隠されてるかもしれません。もちろん、スイッ チで何かを設定したら、それは ``保存'' されており、不揮発性メモリなどに 設定を保存する必要はありません。
端末でオプション (設定) を選択するためには、最初に ``セットアップ'' モ ードにしなければならず、それから端末に記憶され画面に表示されたメニュー を使ってオプション (すなわち設定) を選択します。設定時には、端末はコン ピュータに接続される必要はありません。いかにセットアップモードにするか については端末のマニュアルに記載されていますが、ここで幾つかのヒントを 挙げておきます。
``セットアップ'' キーがあるなら押してみてください。そしてまたそのモー ドに移ってみてください。
セットアップメニューで移動するには矢印キーを試してみてください。選択す るには リターンキー か スペースバー または特殊キー (古い端末なら ``tog gle'' キー) を使います。セットアップモードから抜けるにはメニューで終了 を選択します (あるいは古い端末なら再びセットアップキーを押します)。
端末で完全に動くようにするには、通信速度、パリティ、データ長や通信モー ドが正しく設定されてないといけません。不正なフロー制御は、データの欠落 や画面で文字化けの原因となります。必須の通信オプションは他の章 (端末と コンピュータの両方共) で扱います 。 通信インターフェイスのオプションをご覧ください。以下のリストは 他の章へのリンクであり、加えて付加的な通信オプションは端末側でのみ設定 します。
セットアップした内容が次回端末の電源を入れたときに有効となるように、不 揮発性メモリに保存しておけなければなりません。もしセーブし損なったら、 端末の電源を落としたときに新しいセットアップの内容が消えてしまいますよ。 端末のセットアップでトラブルを起こす前に、セットアップ内容の保存方法を 確認しておきましょう。最近の端末では、メニューを使って保存します。古い 端末には手作業で保存するのもがあります。ほとんどが Ctrl-S キーを押して 保存します。
端末エミュレーションで使用するこれらのパラメータの多くは Teemworld の Set-Upを参照してください。エミュレーションは本当の端末と少し違 いがあります。
本章で続いて述べることは、多くの端末のセットアップメニューで設定可能な オプションについてです。オプションはパラメータや特性などとも呼びます。 多くのオプションは ``モード'' と呼ばれます。設定オプションは ``設定'' とも呼んでいます。多くのオプションは、端末へあるエスケープシーケンスを 送ることで設定できるでしょう。端末の型式やメーカの違いで様々なオプショ ンがありますが、同じオプションは異なる名称で呼ばれています (ここで全部 は示しません)。Wyse 端末の略称は {...} で囲み、ほとんどの VT 端末は { {...}} で囲みます。
最近のほとんどの端末は各種の端末をエミュレートできます。端末は自分自身 もエミュレート出来ますが、エミュレートしないほう {native personality} が、多くのことができるでしょう。時々、同じ端末のモデルに対して 2 つの 異るエミュレーションがあります。例えば、VT220-7 は 7 ビットコードの VT 220 をエミュレートし、VT220-8 は 8 ビットコード (256 文字表現が可能) の VT220 をエミュレートします。
普通、端末の古い機種には新しい機種ほどの機能はありません。古い端末をエ ミュレートしたいが、最近の機種の高度な能力の一部も使いたいこともあるで しょう。これは (ある程度) 可能ですよ。この機能は {Enhance} (あるいは Enhanced ??) と呼んでいます。
文字に適したセルのサイズのことです。単位はピクセル (= 小さなドット) で、 ドットより解像度は良いです。10x16 は 幅 10 ドット、高さ 16 ドット (16 行 10 列) となります。行 (高さ) が最初にある行列の次元の表記と比べると、 この表現は逆になってることに注意してください。また、文字サイズには隣り 合う文字間のスペースに割当てられた行と列のピクセルも含まれるので、実際 の文字境界を定義するセルサイズはもう少し小さくなります。
普通は 80 列で 24 か 25 ラインです。これは、画面上の 1 行 (ライン) 当 り 80 文字という意味です。多くの端末のオプションには 132 列があります {{Set 132 column mode}} が、大きな画面じゃないと小さな文字は読みにくい かもしれません。25 ラインにするなら、terminfo にあることを確認してくだ さい。それと、/etc/profile に ``export LINES=25'' を追加しなければなり ません。そうしなかったら、スクロールに問題が起きますよ ( 端末でスクロールしないをご覧ください)。
カーソルは長方形 (= ブロック) で表示されます {Blk}。他のオプションで下 線 {Line} にしたり点滅させたりできます。非点滅の {Steady} ブロックモー ドを気にいってるのは、惑わせるような点滅がないために,すばやく見つけら れるからです。もし非表示 (幾つかのオプションにあります) の設定にすると、 表示されませんが、非表示カーソル上でタイプした新たな文字は画面上に表示 します。
表示属性はマジッククッキーか各文 字に割当てる属性バイトのどちらかになります。マジッククッキーなら、影響 範囲には限界があります。行の終わりまでか、ページの終わりまでにしたいで すか ? もっともいいのは、属性バイト (実際は 半バイト = ニブルになりま す) を使うことです。
``表示制御'' のような名前で呼ばれたりもします。オフ (通常) なら、``制 御文字を解釈しなさい'' ということです。オンなら、ホストから送られたエ スケープシーケンス (普段は決して画面上で見ることはない) を表示します。 エスケープシーケンスは 1 行に並んで表示され、端末では実行 (解釈) され ません。改行を指示する CR LF シーケンスは除きます。 制御コードをご覧ください。
幾つかの端末には 2 倍幅と、2 倍高さの文字があります。この特性はめった に必要ありませんが。1 行を 2 倍幅 (DW) に変えると、右半分 (RH) が画面 から押しだされて削除される (消える) のではとの疑問が浮かびます。``保存'' は DW 行の RH をキープしておくことを意味します。2 倍高さモードでは、 画面上で 2 倍高を表示するために、各行を 2 度 (2 度目は下の行) 送る必要 があります。
通常のビデオは、暗い (黒) 背景に明るい (白、緑、黄色) 文字 (前景)です。 反転は {Display Light} は、反対に明るい背景に黒字となります。これは目 に優しいと思います (部屋が暗くなければ)。
ステータス行は画面の先頭か最終行にあり、動いているアプリケーションプロ グラムの情報などを表示します。しばしば何らかの方法でハイライト表示され ます。ステータス行が有効な状態で、アプリケーションは、続くテキストをス テータス行に表示することを意味する特別なエスケープシーケンスを送ること ができます。しかし、多くのアプリケーションはステータス行の機能を使うか わりに、ステータス行が表示されている位置にカーソルを移動させて、文字を 表示させています。普通のユーザはその違いに気付きません。
桁数を 80 から 132 (あるいは逆) に切り換えるとき、前回の形式の表示デー タを消すべきか (クリアーする)、残すべきか ? {80/132 Clr} {{Screen Widt h Change}} どちらに設定しても違いのないようにすべきですが、アプリケー ションプログラムが 132 桁を使うなら、制御シーケンス経由で適切に設定す べきです。
Wyse 端末が表示メモリの複数ページにアクセスできるように、{Multipage} をオンにしなければなりません。
端末メモリはページ単位で分割されます。ページの説明は、 ページと ページ (定義) をご覧くだ さい。選択した長さでページメモリを仕切ることもできます。現在のところ、 Linux アプリケーションはページを使わないと思われますので、この設定をし てもあまり効果はありません。
カーソルが現在は表示されていない (他のページや、同じページの画面に現わ れていない個所) ビデオメモリに移ったとき、表示も新しいカーソルの位置へ 切り変えるべきでしょうか ? そうだとすればこれは``結合'' と呼ばれるもの です。同じページ内のカーソルの移動は、``垂直結合'' と ``水平結合'' で す。他のページへの移動は ``ページ結合'' です。
端末はあるエスケープシーケンスに対して、それ自身とその状態を認識するか、 あるいは事前に記録されたメッセージを送るでしょう。
端末の電源が入ったときや、ホストからの要求 (たぶん ENQ (要求) 制御文字 です) に応じてホストに送る短かいメッセージをセットアップで書いてもいいです。
設定したら、ホストが求めなくても電源投入で応答メッセージを送ります。あ る ``getty'' プロセスはこれを待ってるのでしょうか ??
設定したら、誰にも応答メッセージを見せません (もちろんホストコンピュ ータを除いてですが)。変更が必要なら ``応答キャンセル'' を再度選択しま す。そうすると前の応答キャンセルメッセージは破棄されるので、新たなメッ セージを入力してもよいでしょう (でも、古いメッセージはもう見られません よ)。
端末は識別情報の要求に答えてこの返事を送ります。
設定したとき、キーを押せばクリック音が鳴ります (キーボードの小さなスピ ーカから発する)。クリック音を聞いていらいらする人もいるので、私はオフ にしておく方が良いと思います。
Caps-Lock キーが押されたら、アルファベットキーだけに文字の入れ替えが起 るべきなのでしょうか ? もし {Caps} か大文字のみの設定なら、Caps-Lock がオンで数字キーが押されたときに数字がタイプされます。数字キーの上の記 号をタイプするにはシフトキーを押しながら数字キーを押します。もし {Shif t} が設定されていたら、全てのキーは Caps-Lock がオンの時にシフトを押し ながらタイプしたのと同じ文字になります (5 のキーを押したらシフトキーな しでも % をタイプします。他も同じ)。
キーを押し続けるとそのキーを繰り返し *タイプ* します。これはページ境界 線を書くために同じ文字を繰り返しタイプする際に便利です。
カーソルがディスプレイの右端から 8 列離れるとベルが鳴ります (古いタイ プライタのように)。ほとんどのエディタは必要に応じて自動で改行できる (リターンキーを押す必要がない) ので、この機能はめったに必要ありません。
キーが押されたときにホストに送られるコードは、通常は ASCII コードです (シフトキーやコントロールキーにもよりますが)。幾つかの端末では、キーが 押された時にお望みのコードをホストに送るようにすることができます。つま り、端末を設定することで、キーの再配置を行なうことができるのです。これ は、他国語やドボルザークのキーボードレイアウトをすばやく変更するのに便 利です。
Wyse 端末には、左下隅の近くに様々なことをするために設定できるキーがあ ります。そのキーには ``Funct''、``Compose''、``Character''、``Alt''、 ``Hold''あるいは ``Scroll Lock'' などのラベルを貼っておけます。初期の モデルには次のオプションの全てがあるわけではありません。{Hold} が設定 されると端末へのデータの流れが止ります (フロー制御を使います)。キーを もう一度押すとデータフローを再開します。{Compose} が設定されると、制限 された数の事前に定義してある非ラテン文字を発生することを許します。メタ に設定されると、各バイトの上位ビットがセットされたメタシフトキーになり ます。{Funct} が設定されると (そして押せば)、どんな英数字キーもヘッダ ー (SOH) とトレイラー (CR) バイトが加った ASCII バイトコードのフレーム となります。{Kpd Compose} が設定されると (そして押せば)、数字キーで 10 進数を押したら 16 進数を送ります ??
数字キーパッド (キーボードの主部の右側にあるほとんが数字キーの長方形の 部分) は、あるアプリケーションプログラムで特別な役目をするために特別な コードを送るよう設定できます。矢印キーも同上。このように、キーキャップ に印刷してある文字 (または、矢印キーのためのノーマルコードシーケンス) を送る ``ノーマル'' モードと、特別なエスケープシーケンスを送る ``アプ リケーション'' モードがあります。いくつかの場合では、6 つの非数字キー が A から F の文字を送るのを除いて、ほぼノーマルな数字モードである ``16 進'' モードがあります。したがって、数字キーパッド上で、例えば ``B36F'' をタイプできるでしょう。
どのように設定されているかにもよりますが、Shift + Delete は制御文字 CAN を送り、Shift + Backspace は DEL を送ります。
新しい端末は、ASCII コードの代りに PC 走査コードを送ることで PC キーボ ードをエミュレートできます (Keyboard-and-Console-HOWTO をご覧ください)。 Dos/Windows が走っている PC に直接接続した場合に使います。 {Keycode} を {Scan} に設定してください。DEC の ``PCTerm'' をエミュレートするな らこの設定をすべきです。Linux のシリアルポートは、このような走査コー ドに対処できません。
キーのいくつかはそれを代替する文字があります。キーが ``タイプライター'' として設定されたら、タイプライタに送る文字を送ります。キーが他の何か に設定されると、代替文字が送られます。
この場合、``ニューライン'' は現在行の下の左マージンで新しい行を開始す ることを意味します。Linux と C 言語での ``ニューライン'' には別な意味 があり、ラインフィード制御文字 LF もまたニューラインとか NL と呼びます。 Linux のテキストファイルでは、LF 文字は ``新しい行をここから開始する'' という意味なので、NL ラベル付けしてあるのです。通常、LF (NL) は 1 行 下へカーソルを飛ばすためだけに端末へ送られるもので、カーソルを ``新し い行'' の先頭に移動させるものではありません。
自動ニューラインが設定されると、上述の ``ノーマル'' な状況は取り消され て、ホストから LF を受信することで画面に物理的なニューラインを生成しま す。これはまさに Linux で必要なものです。ただし、(自動ニューラインが設 定された時に) Return (か、Enter) キーがホストに CR LF シーケンスを送る ことを除いては (Wyse と VT100 ではそうなんですが、VT420 は違う ??)。 L inux はファイル内の ``ニューライン'' マーカとして LF を使うので、LF だ け (CR LF ではなくて) を送ってもらいたいのです。したがって、``ニューラ イン'' オプションはめったに使用されません。代りに、シリアルポートデバ イスドライバが、必要な変換をデフォルトで行います。まるで ``stty onlcr icrnl'' コマンドを実行したようです。しかし、デフォルトの動作なのでそん なことをする必要はありません。
これは ``自動ニューライン'' の別なタイプです。CR 文字 (復帰) を受信し たら、新しい行の表示の時に LF (改行) 動作を付加します。Linux では LF が行の終わりなので、このオプションは使われていません。
オフなら端末で DEL 文字を受信しても無視し、オンなら DEL は消去式のバッ クスペースとなります。NULL 文字はどんなケースでも普通は無視されます。D EL と NULL は両方共、パディング文字として時々使用されます。 パディングをご覧ください。
``オートラップ'' とも呼ばれています。画面の右端に行き着いて (80 桁目な ど)、ホストから改行文字 (かそれに類するもの) が送られなければ何が起る でしょうか ? 行ラップが設定されているなら、次の行に残りの文字を表示し ます。そうでなければ、行の残りは消えて画面では見えないでしょう。どんな 良いアプリケーションでも (行ラップがどう設定されているかを把握する terminfo が提供される) 状況を正確に捉えるべきです。従って、行ラップが設定 されてなくても、アプリケーションは長い行を折り返すか、(矢印キーなどを 使って) 長い行のカットされた端を見せるような方法をとるべきです。しかし、 生のコピーコマンド (及び別の状況) ではこのようなことは起らないので、普 通は行ラップを設定しておくのが良いでしょう。
80 桁の画面では、ホストからの 81 番目の文字がグラフィック (印字可能) 文字ならほとんどの端末はラップだけとなります。これはホストからの 81 番 目の文字が ``復帰'' か ``ニューライン'' である場合に許します。ニューラ インは、アプリケーションがラップすることができ、端末による介入が必要で ないことを意味します。
スクロール {Scrl} とは、画面の全ての行が上や下に動くことです。横方向の 移動も含むものは ``パン'' とも呼ばれます。普通のスクロールでは、行が画 面の最下行か先頭行をめくることで見えなくなり、ホストからの新しい行が反 対側の端 (先頭か最下行) に現れます。スクロールには、スムース、ジャンプ そしてバーストの 3 つのタイプがあります。バーストは、新しい画面で古い 画面を瞬時に塗り変えるので、本当のスクロールとは言えません (けれど新し い画面の数行は古い画面のものです)。ジャンプは一度に画像を新しい行にジ ャンプします。スムース {Smth} はテキストを滑かなスピードで上下に移動し ます。スムーススクロール率がとてもゆっくりなら、まだスクロールしている 最中 (動作中) に新しい行を見ることができるでしょう。
遅い端末でのスムーススクロールは、画面がスクロール中でも読んでいられる のでかつては役に立つものでした。しかし、高速のボーレートではジャンプス クロールはすごく速いので、新しい表示に変るのに少しの時間しかかかりませ ん。スクロールしながらテキストを読むには、停止したテキストの場合より時 間がかかるので、スムーススクロールを選ぶと無駄な時間が増えるかもしれま せん。
もし (自動) スクロール {Autoscrl} が無効なら、ホストからの新しいテキス トは画面の先頭になるので、どこかへ行ってしまうにちがいありません。古い テキストが消えなければ、新しいテキストは古いものと (無意味に) 混在して しまいます。古いテキストが消えるなら、新しいテキストは内容から外れるの で (自動) スクロールを有効にしておきましょう。
ページの説明は ページと ページ (定義) をご覧ください。現在のページが一杯 (最終行が終了 した) なら、ページスクロールするか、新しいページが生成されるべきです (端末の表示メモリ内に記憶された全ページは消える)。もし {Autopage} が設 定されていれば新しいページが生成されます。おそらくページを使わないので、 これはオフにしておくべきです。
F1 や F2 などとラベルのついたキーがあります。古い端末では、PF1 や PF2 などであり、P はプログラム可能ということです。幾つかのキーボードでは両 方あります。ユーザが定義した文字を送るようにプログラム (再定義) できま す。あるセットアップメニュー {FKey} を使えば簡単にプログラムできること が多いです。幾つかの端末でも、キーが押されたときに文字列を送るよう指定 できます。``ノーマル'' モードでキーを押すと、キーボードで文字をタイプ したように見えます。``ローカル'' モードでキーを押すと、端末に文字列を 送ります (端末がローカルモードであったかのように)。特別な方法で設定し て、端末にエスケープシーケンスを送るのに使います。``リモート'' モード では、文字列はシリアルポートからホストへいつも送られます (例え端末がロ ーカルモードであっても)。
幾つかのオプションは、 ブロックモードの場合だけ のものです。フォームを供給したり、まとめて送信することでホストコンピュー タの負荷を減らすので、このオプションは強力です。しかし、セットアップは かなり複雑なので、あまり使用されません。
ブロックモードで、いくつかの画面の領域はフォームの文字のためにあり、こ の部分は書き込み禁止 ``Prot'' {WPRT} となっています。この領域の文字を 薄暗くしたり、反転したり {WPRT Rev} 、また下線をつけたり {WPRT Undrln} 等の見え方を設定するオプションがあります。{WPRT Intensity} はグレー表 示やノーマルあるいは黒 (非表示)に設定されるでしょう。
書きこみ禁止のテキスト (フォーム内のオリジナルテキスト) は、ブロック単 位でホストに送られ {Send All} 、あるいは書き込み禁止テキストはまた読み 込み禁止であるかもしれません {Send Erasable}。
スクリーン全体か、あるいはスクロール領域が送られるべきですか ?{Send Ar ea} 現在のカーソル位置に達したら送信は停止するべきですか ? {Xfer Term} がカーソルに設定されたら、カーソルのところ迄の画面データだけを送りま す。
ブロックデータに追加される終端記号は何でしょう ? {Blk End} か、ページ の終わりに終端コードを送ります {Send Term}。
ロックには様々なタイプがあります。フロー制御のためのロックキーもその一 つです。 キーボードロックをご覧ください。 別なロック として {Feature Lock} は、ホストから端末にあるエスケープシー ケンスを送ることで、端末設定の変更を禁止します。端末が無視するようなエ スケープシーケンスをアプリケーションプログラムが送ることで、そのような ロック状態にすると予期せぬ結果となるでしょう。全ての設定パラメータがロッ クされるわけではありません。正当な理由の無いかぎりは、ロックを有効にす べきではありません。
ファンクションキーロックは、プログラム可能なファンクションキーが何を送 るかをコンピュータが再定義することを禁止します。ファンクションキーに何 か重要な機能を持たせた場合に、この機能を使いたくなるでしょう。
``CRT セーバ'' とも呼ばれます。これは端末がしばらく使用されなければ、 スクリーンの電源を落とす (あるいは薄暗くする) ことです。こうすることで スクリーンの寿命を長引かせ、節電できます。何かのキーを打つと、スクリー ンは復帰してそのキーを実行するので、シフトキーなどを押すのがベストでし ょう。
Wyse 端末では、プリンタがなければ {Printer Attached} をオフに設定して ください。必ず必要なことでもありませんが、プリンタに対するどんなエスケ ープシーケンスが送られても (端末の代りに)、無視するでしょう。
プリンタを設定するのは、主なポートの通信用の設定と同じようなものです (普通はもっと簡単)。プリンタには特定の一組のオプションがあります。プリ ンタはシリアルまたはパラレルのどちらですか ? もしパラレルなら設定でそ のことをセットして、端末のパラレルポート (もしあれば) に接続します。プ リントジョブの最後にプリンタに対して FF (フォームフィード) を送るので すか ? {Print Term} が FF にセットされているなら、そうなるでしょう。