PCVT(4) FreeBSD/i386 カーネルインタフェースマニュアル PCVT(4)
名称
pcvt, vt − PC コンソール仮想スクリーンシステム |
書式
options ‘‘ |
PCVT_FREEBSD = version | PCVT_NETBSD = version’’ [options ‘‘PCVT_NSCREENS = number’’] [options ‘‘PCVT_XXXX’’] ( 設定 の項目を参照してください。) device vt0 at isa? tty
説明
概要 |
pcvt ドライバは、伝統的なコンソールドライバには無いいくつかの機能を持った 仮想スクリーンシステムを提供します。複数の仮想スクリーンを扱えるほか、お そらく最も重要なものは広範囲にわたる DEC VT-220 (TM) エミュレーションで す。詳細は 特徴の項目を参照してください。 pcvt ドライバを使用するには atkbd キーボードドライバがカーネルで設定され ていることが必要です。 |
特徴 |
• ほぼ完全な DEC VT220 (TM) の機能 ( VT320 (TM) へ移行中) 。
• MDA/HGC/CGA/EGA および VGA のための完全に独立な仮想端末。 • それぞれの仮想スクリーンに対する 25, 28, 35, 40, 43 あるいは 50x80 の スクリーン解像度。 • 各国のキーボードをサポートするための、完全に再マップ可能なキーボー ド。 • すべての VT220 文字集合に加え、ISO Latin-1 と DEC technical をサポー ト。 • EGA/VGA 使用時における VT220 のダウンロード可能な文字集合の利用。 • それぞれの仮想端末に対する VT220 ユーザ定義キー。 • Hewlett-Packard のオプショナルなファンクションキーラベルのサポート。 • ファンクションコードの表示機能。 • MDA, CGA, EGA および VGA ディスプレイアダプタのサポート。 • VGA チップセットにおける 132 カラムのサポート。 • XFree86 バージョン 1.2 以上では pccons
モデル、2.0 以上では syscons モデルを用いた X
ウィンドウシステムのサポート ( できないこと: • 2 倍角文字は扱えません。 • softscroll はありません。 • 背景の反転はできません。 • VT220 のプリンタ出力はサポートしません。 • VT52 の機能のサポートは全くありません。 • 8 ビットコントロールは使えません。 • AT キーボード (84 キー) に対しては、 (未だに) 限定されたサポートしか ありません。 • お金を稼ぐのを助けることはできません... 設定 PCVT_FREEBSD = 102 のように定義しなければなりません。 NetBSD では、NetBSD 0.9 の場合、このバージョン番号は 9 と表現されなければ ならず、 NetBSD-current (1.0 以前) の場合は 9 より大きい任意の値になりま す。 NetBSD 1.0の場合は ( FreeBSD と同様に) 100 を、NetBSD-current では 999 を使うことが推奨されます。例えば NetBSD 1.0 release の場合、 PCVT_NETBSD = 100 と定義すべきです。 pcvt ドライバは、すべての人の要求を満足させるため、高度に設定可能であるよ うに設計されてきました。望ましい設定方法は、おそらくデフォルト値を上書き するような形で、設定ファイルに適切な options 行を書き込むことです。こうす ることで、それぞれ異なる振る舞いをするドライバを持つ別個のカーネルを 1 台 のマシン上でコンパイルすることが可能です。 利用可能な設定オプションの通覧を次のリストに示します。詳細はカーネルソー スツリーの i386/isa/pcvt/pcvt_hdr.h を参照してください。 ノート: すべてのブール値オプションについて、次のような約束をします。もし あるオプションが値なしで与えられた場合、1 という値 (有効) になります。オ プション値として 0 が与えられた場合、そのオプションは無効になります。それ 以外の値では 1 になります。オプションが省略された場合、デフォルトの動作が 仮定されます。 PCVT_NSCREENS PCVT_VT220KEYB PCVT_SCREENSAVER PCVT_PRETTYSCRNS PCVT_CTRL_ALT_DEL PCVT_USEKBDSEC PCVT_24LINESDEF PCVT_EMU_MOUSE PCVT_META_ESC 主にデバッグやハードウェアの問題に対処するために、さらにオプションが用意 されています。 i386/isa/pcvt/pcvt_hdr.h に説明があります。 内部機能 #include <machine/pcvt_ioctl.h> 以下に引用されたパラメータの定義は、このファイルの中に見つけることができ るでしょう。 キーボードに関連する機能 基本的なキーボードのハードウェアに関係する機能が 3 つあります。 KBDRESET 適切な定数を表すシンボル値が利用できます。キーリピート遅延時間の初期値を 指定するのは、 250 ミリ秒を表す KBD_TPD250 から、1000 ミリ秒を表す KBD_TPD1000 までの 250 ミリ秒刻みの値です。キーリピート速度は、毎秒 30.0 文字を表す KBD_TPM300 から、毎秒 2.0 文字を表す KBD_TPM20 までの値があり ます。中間値は、毎秒 30.0, 26.7, 24.0, 21.8, 20.0, 18.5, 17.1, 16.0, 15.0, 13.3, 12.0, 10.9, 10.0, 9.2, 8.6, 8.0, 7.5, 6.7, 6.0, 5.5, 5.0, 4.6, 4.3, 4.0, 3.7, 3.3, 3.0, 2.7, 2.5, 2.3, 2.1, 2.0 文字が指定できま す。 KBDGREPSW これらも値を格納する int 型変数へのポインタをパラメータとして受け取り、ド ライバ内部のキーリピートフラグを操作します。可能な値は KBD_REPEATOFF ある いは KBD_REPEATON です。 KBDGLEDS 引数であるポインタの指す int 型変数は KBD_SCROLLLOCK, KBD_NUMLOCK, KBD_CAPSLOCK という値をとり、これらは論理和の組み合わせの形で使われるで しょう。 KBDGLOCK これらも、ドライバが持つ LED フラグの状態を設定したり取得したりするのと同 じ方法で使われるべきです。 キーボードの再マップ pcvt ドライバの重要な機能の一つとして、内蔵のキー定義を再定義できる機能が あります。 KBDGCKEY これらがその機能を構成します。これらは次に述べる struct kbd_ovlkey へのポ インタを引数として受け取ります。加えて、次のような関数があります。 KBDRMKEY struct kbd_ovlkey /* キーの完全な定義 */ type フィールドの適切な値は次の通りです。 |
KBD_NONE
機能なし。キーは無効。 サブタイプフィールドは次のうちの どれか 1 つの値を保持します。 KBD_SUBT_STR マウスエミュレーション マウスエミュレータは (もし設定されていれば) Mouse Systems プロトコルを 使って 3 ボタンマウスの振りをします。仮想スクリーンによって使われていな い、最初の pcvt デバイスノードがマウスデバイスです。例えば、デフォルト値 である 8 つの仮想スクリーンの場合、 /dev/ttyv0 から /dev/ttyv7 までが仮想 スクリーンを表わし、 /dev/ttyv8 がマウスエミュレータデバイスとなるでしょ う。マウスエミュレーションは 〈NumLock〉 キーを押すことによりオンになりま す。マウスポインタは数字キーパッドにより、そのキーが示す方向へ動きます。 始めは 1 ステップずつ動き、調整可能な時間 (デフォルトは 500 ミリ秒) の 後、約 6 倍まで加速します。マウスボタンは 3 つの通常のキーによりエミュ レートされ、デフォルトではこれらは 〈F1〉, 〈F2〉, および 〈F3〉 のファンクショ ンキーに割り当てられています。ここで 2 種類の動作が選択できます: 通常ボタ ンと、 ‘‘stickey’’ ボタンです。通常ボタンは、期待通りの振舞いをします。 ‘‘stickey’’ ボタンは、最初の押下のときに、押されていることが通知され、そ のキーがもう一度押されるか、他のボタンをエミュレートしているキーが押され るまで、 ‘‘押されたまま’’ の状態になっています。ボタンの押下と離しは、PC 内蔵スピーカにより、それぞれ ‘‘ピリッ’’ とか ‘‘ピロッ’’ という音でユーザ に通知されます。 次のコマンドにより、エミュレーションを制御します。 KBDMOUSEGET どちらも mousedefs 構造体へのポインタを ioctl 呼び出し時の 3 番目の引数と して受け取ります: struct mousedefs { ダウンロード可能な文字集合のインタフェース EGA および VGA ビデオアダプタは、ダウンロード可能なソフトウェアフォントを 扱うことができます。どの IBM 互換 PC ビデオボードの ‘ネイティブな文字集 合’ も、DEC 多国籍文字集合や ISO Latin-1 (ISO 8859-1) の完全な表現は不可 能なので、これは U**X 環境にとって有用です。 |
VGASETFONTATTR
フォント属性を設定します。 これらはダウンロードフォントに関する情報を扱います。 struct vgafontattr へのポインタを引数としてとります: struct vgafontattr { それぞれのフォントのそれぞれの文字は、次の関数によりダウンロードされま す。 |
VGALOADCHAR
vga 文字をロードする。 struct vgaloadchar へのポインタを引数としてとります: struct vgaloadchar { EGA あるいは VGA において、 character_set フィールドは CH_SET0, CH_SET1, CH_SET2, CH_SET3 という値をとります。VGA では、最大 8 つのフォントをロー ドして持つことができますので、CH_SET4, CH_SET5, CH_SET6, CH_SET7 という値 もとることができます。 フォントサイズと、表示可能なスクリーンの (行単位の) 高さの関係は、使われ るビデオカードに依存することに注意してください: スクリーンの大きさ (行の数) EGA VGA フォントサイズ 8 x 8 43 50 8 x 10 35 40 8 x 14 25 28 8 x 16 利用不可 25 一般的なスクリーン操作コマンド |
VGACURSOR
カーソルの形を設定します。 以下の構造体へのポインタを引数としてとります: struct cursorshape { |
VGASETSCREEN
スクリーンの情報を設定します。 これらは、いくつかの一般的なドライバ内部変数へのインタフェースを提供しま す。それらの内部変数は、スクリーンの振舞いを変更したり、単にドライバをあ る一つのスクリーンへ強制的に切り替えたりするものです。以下の構造体へのポ インタを引数としてとります: struct screeninfo { pure_vt_mode フィールドは、ファンクションキーラベルとステータスラインを伴 う VTxxx と HP Mode の混成に対しては M_HPVT という値を取り、ラベルを伴わ ない VTxxx シーケンスのみが認識されるものに対しては M_PUREVT を取ります。 |
VGASETCOLMS
現在のスクリーンに対してカラムの数を設定しま す。 これのパラメータは、80 あるいは 132 のどちらかの値を保持する int 型変数へ のポインタです。カラム数 132 がサポートされるのは VGA アダプタ使用時のみ です。サポートされないカラム数では ioctl は失敗し、 errno (intro(2) を参 照) に EINVAL が設定されます。 VGA カラーパレットインタフェース VGA アダプタにおいてのみ、出力にカラーパレットレジスタが存在します。 256 種類の内部カラーコードのそれぞれに対する 赤、緑、青の出力電圧を保持し、0 から 63 までの値を取ります (63 はベースカラーについてもっとも明くなる値で す)。すなわち、これらのアダプタはそれぞれのカラーコードを、 262144 色の中 から取り出した ‘‘パレット’’ の色へマップします。 VGAREADPEL これらのコマンドは、パレットレジスタに対するインタフェースを確立します。 引数は以下の構造体へのポインタです: struct vgapel { ドライバの判別 |
VGAPCVTID
現在ドライバの中にコンパイルされているのが pcvt であるかどうかの情報と、そのメジャーリビ ジョンおよびマイナーリビジョン番号を返しま す。引数として以下の構造体へのポインタをとり ます: struct pcvtid { |
int rmajor; |
||||
/* メジャーリビジョン番号 */ |
#define PCVTIDMAJOR 3 |
#define PCVTIDMINOR 00 |
}; |
VGAPCVTINFO
現在ドライバの中にコンパイルされているのが pcvt であるかどうかの情報と、そのコンパイル時 オプションを返します。引数として以下の構造体 へのポインタをとります: struct pcvtinfo { |
#define CONF_UNKNOWNOPSYS |
0 |
#define CONF_386BSD 1 /* サポートされていません !!!
*/ /* 設定ブール値 */ |
u_long compile_opts; |
|||||
/* PCVT_xxxxxxxxxxxxxxx */ |
}; スクリーンセーバ pcvt の設定によっては、シンプルなスクリーンセーバが利用できるかもしれませ ん。これは次のコマンドにより制御します。 |
VGASCREENSAVER
スクリーンセーバのタイムアウトを秒単位で設定 します。 0 はスクリーンセーバをオフにします。 これは整数へのポインタを引数としてとります。コマンドの名前とは関係なく、 config(8) の ‘‘PCVT_SCREENSAVER’’ オプションにより設定されていれば、 どの ような種類のアダプタでも利用できます。 USL スタイル VT のための互換コマンド この pcvt ドライバのリリース 3.00 では、仮想端末インタフェースを制御する のに使われる USL スタイルのコマンドのサブセットをサポートします。この機能 は、主に XFree86 のリリース 2.0 以降で、X サーバが動いている時でも仮想ス クリーンを切り替えることができるようにと意図されています。それらは、暗黙 のセマンティクスに関して醜く (つまり、Berkeley セマンティクスを破っていま す) 、したがって一般的な利用については推奨されません。それらのドキュメン テーションについては、 i386/include/pcvt_ioctl.h を参照してください。 ファイル |
/usr/include/machine/pcvt_ioctl.h
ioctl(2) ファンクションコールのための 定義。 /dev/ttyv? /dev/console i386/isa/pcvt/pcvt_hdr.h 歴史 |
pcvt ドライバは 386BSD リリース 0.1 のために開発され、提供されてきまし た。リリース 3.00 から、NetBSD 0.9 に対する明示的なサポートが提供されてい ます。リリース 3.00 以降は、pcvt において 386BSD 0.1 向けのさらなる開発は ないと予想され、実際、リリース 3.20 では 386BSD のサポートは打ち切られま した。 |
作者
Brian Dunford-Shore 〈brian@morpheus.wustl.edu〉
および |
関連項目
intro(2), ioctl(2), atkbd(4), keyboard(4), screen(4), config(8), ispcvt(8) |
バグ
もちろん存在します。最新のバグリストは、ドキュメントディレクトリの BugList ファイルを参照してください。 |
検証済みのビデオボード |
製造者 チップセット モニタ 2theMax (?) ET4000 VGA Color Video7 Inc. Video 7 VGA Color Diamond Stealth VRAM S3 NEC 3FGx Trident TVGA 8800CS NEC 3D Data General C&T P82C604 VGA Color NoName Hercules W86855AF Mono |
Kyocera (Mainboard) |
WD90C11 |
Sony Color |
|||||||
unknown |
ET3000 |
NEC 3D |
検証済みのキーボード |
製造者 タイプ レイアウト Cherry MF II US Cherry/Tandon MF II German Hewlett-Packard MF II US Hewlett-Packard MF II German Tatung AT German 古い PC キーボードは全くサポートされておりません (それらは 83 個のキーが あります) 。 F9 から F12 までは機能の制御のためにエミュレータが必要としているので、 AT キーボード (84 個のキーとそれとは別の数字キーパッドがあり、F11 と F12 は ありません) に対するサポートは制限されています。また現在のキーボードドラ イバの設計のゆえに ALtGr キーを持たない各国のキーボードに対する (完全な) サポートはありません。 MF キーボードは、101 キーおよび 102 キーのバージョンについて完全にサポー トされております。 FreeBSD 10.0 February 27, 1994 FreeBSD 10.0 |