訳註: これは作業してる最中のもので、本来、訳作業者以外は見えぬべきものです。 訳作業者以外は見ないでください。意味が反対になったりとか当然にあるから、 内容は利用しないでください。この言語への変換作業(翻訳作業)物に関しては、現在、オープンなライセンス条件ではありません。 十進240のコードのキャラクターを<240>に置換してる場合あり
Chapter8.Console drivers

Table of Contents

8.1. wscons
8.1.1. wsdisplay
8.1.2. wskbd
8.1.3. wsmouse
8.2. pccons

訳者註:誰がどう見ても作業中だってわかりますが、

ファイル無くさないようにここに置かれていることがあります。

消えたりちょっとだけ進んだのが置かれることがありますが、

すくなくても、ここの註書きが消えるまでは、いつの日にか更新されます。

訳者註おわり

NetBSD は versions 1.4 以前のものでは、キーボードとスクリーンのドライバーに 2種類から選べました。 pccons (i386 特有) と pcvt です。 NetBSD 1.4 で新しく wscons が multiplatform ドライバーとして登場し、以前のドライバーを 置換しています。 pccons は システムリソースの少ない場合や、そのためインストールフロッピーで使われていて、 まだサポートされています。

8.1.wscons

Wscons は NetBSD のプラットホーム-独立 のワークステーション コンソールドライバーです。 キーボードおよびマウスの完全な抽象概念化を扱います。 これが意味するところは 幾つかのキーボードまたはマウスを接続でき、それらは1つの端末上で多重化され、 しかし、また、1つの物理端末を幾つかの 仮想端末に多重化できます。

wscons の能力は port に非常に依存しています。 NetBSD 4.0 からは、ほとんど全ての ports が wscons が提供する能力のほとんどに完全対応しています。 non-mainstream アーキテクチャーを使っていて、 wscons が 機能欠落しているように見えるなら、 port-specific FAQ を御覧ください。

Wscons サポートはほとんどのアーキテクチャーで標準で enabled です。 これは、手作業で /etc/rc.confwscons=YES を加えることで可能です。 仮想コンソールの希望の数の設定は Section8.1.1.1, “Virtual consoles” に書かれてていて、 wscons を開始するには、 sh /etc/rc.d/wscons start 続いて、 sh /etc/rc.d/ttys restart を入力します。 Ctrl+Alt+Fn か何か プラットホームに依存して、を押して、仮想コンソールを切り替えることができます。

wscons は 3つのサブシステムから構成されていて: wsdisplay 、 wskbd および wsmouse です。 これらのサブシステムはそれぞれ すべてのディスプレイ、キーボードおよびマウス デバイスの抽象化を取り扱います。以下の節では サブシステムごとに wscons の設定を論じます。

8.1.1.wsdisplay

この節では、ディスプレイと スクリーン関係のオプションの設定法について説明します。

8.1.1.1.仮想コンソール

あらかじめ割り当てられた仮想コンソール数は次のオプションで コントロールされています

options     WSDISPLAY_DEFAULTSCREENS=4

他のコンソールは /etc/wscons.conf ファイルの関連する行を enabling することで追加でき: screen x で始まる行のコメントマーク (#) を外してください。 次の例では、 4つあらかじめ割り当てられているコンソールに 5 番目のを追加します:

# screens to create
#       idx     screen  emul
#screen 0       -       vt100
screen 1        -       vt100
screen 2        -       vt100
screen 3        -       vt100
screen  4       -       -
#screen 4       80x25bf vt100
#screen 5       80x50   vt100

rc.wscons スクリプトはコメント化されていない各行を wsconscfg コマンドを call するための変換をし: 列が call のパラメーターになります。 idx 列は index パラメーターになり、 screen 列は -t type パラメーター (スクリーンの type : 行数列数、色数 ... を定義するもの) に、そして emul 列は -e emul パラメーター、エミュレーションを定義するものになります。例えば:

screen 3       -       vt100

call はこうなり:

wsconscfg -e vt100 3

どうか注意なことに、 カーネルによってあらかじめ割り当てられているコンソールと、起動時に /etc/wscons.conf を通して割り当てられる コンソールが衝突(無害)することがあります。 boot 中に、既に割り当てられているスクリーンを割り当てようとすると、 次のメッセージが表示されるっしょ:

wsconscfg: WSDISPLAYIO_ADDSCREEN: Device busy

解決法は /etc/wscons.conf の offending 行をコメントアウトすることです。

註として、スクリーンの削除と異なる設定での追加は可能ですが、 それは、技術的にいえば、スクリーンの設定を 実際に変更することは不可能です。

screen 0 はシステムコンソールとして使うなら削除できません。 これが暗示するのは screen 0 の設定は、システムコンソールとして使っていると 動作中のシステムでは変更できないということです。

仮想コンソールも /etc/ttys の中で active にしてなければならず、 それで NetBSD はログインのため ask に getty(8) プログラムを runします。例えば:

console "/usr/libexec/getty Pc"         pc3     off secure
ttyE0   "/usr/libexec/getty Pc"         vt220   on secure
ttyE1   "/usr/libexec/getty Pc"         vt220   on secure
ttyE2   "/usr/libexec/getty Pc"         vt220   on secure
ttyE3   "/usr/libexec/getty Pc"         vt220   off secure
...

X サーバーは起動時に getty(8) プログラムが running していない仮想コンソールを探し、例えば、 console 1つは /etc/ttys に "off" のまま残しておかなければなりません。 /etc/ttys

ttyE3   "/usr/libexec/getty Pc"         vt220   off secure

の行は X サーバーが この目的で使います。 4 番以外のスクリーンを使うなら、 form vtn パラメーターは X サーバーに渡される必要があり、 ここで n は X の スクリーンを activate にするのに使われるファンクションキーの番号です。

例えば、 screen 7/etc/wscons.conf 中で設定でき、 X は vt8 で started できます。 もし xdm を使うなら、 /etc/X11/xdm/Xserver を編集することが必要です。 例えば:

:0 local /usr/X11R6/bin/X +kb dpms -bpp 16 dpms vt8

xdm3d ではパスは異なっていて: /usr/X11R6/share/xdm3d/Xservers

8.1.1.1.1.Getting rid of the message WSDISPLAYIO_ADDSCREEN: Device busy

このエラーメッセージは通常、既に存在するスクリーンを wsconscfg が追加しようとするときに 出ます。一度これが起こるのは、もし /etc/wscons.conf ファイルに screen 0 行があると、で、 カーネルは常に screen 0 をコンソールデバイスとして割り当てるからです。 この場合、エラーメッセージは無害で、 screen 0 行を削除 (またはコメントアウト)して 免れることができます。

8.1.1.2.wscons での 50行テキストモード

50 行テキストモードは version 1.4.1 の NetBSD から使うことができます。このモードは /etc/wscons.conf で活性化されます。 次の行をコメントから解除してください:

font ibm  -  8  ibm  /usr/share/pcvt/fonts/vt220l.808

それから次の行を必須で変更し:

#screen 0       80x50   vt100
screen  1       80x50   vt100
screen  2       80x50   vt100
screen  3       80x50   vt100
screen  4       80x50   vt100
screen  5       80x50   vt100
screen  6       80x50   vt100
screen  7       80x50   vt100

この設定ファイルは 8 スクリーンを enables し、 キーの組み合わせ Ctrl-Alt-Fn (ここで n 値は 1 から 8)で accessed でき; 対応するデバイスは ttyE0..ttyE7 です。それらを enable にし、そして login プロンプトを得るには、 /etc/ttys の変更が必要で:

ttyE0   "/usr/libexec/getty Pc"         vt220   on secure
ttyE1   "/usr/libexec/getty Pc"         vt220   on secure
ttyE2   "/usr/libexec/getty Pc"         vt220   on secure
ttyE3   "/usr/libexec/getty Pc"         vt220   on secure
ttyE4   "/usr/libexec/getty Pc"         vt220   on secure
ttyE5   "/usr/libexec/getty Pc"         vt220   on secure
ttyE6   "/usr/libexec/getty Pc"         vt220   on secure
ttyE7   "/usr/libexec/getty Pc"         vt220   on secure

VGA displays では、システムコンソールとしての screen 0 は 起動時に、他のスクリーン type に設定できます。 これはカーネル設定オプションです。もし 非-80x25 設定を選択するなら、 用いられるフォントはカーネルの中にコンパイルされているよう手配する必要があり、 80x50 には 8x8 のでしょう。

標準 VGA フォント切り替え回路のない多くの ATI graphics カードでは 問題があって: 非標準コンソールフォントが動作するように 他のカーネルオプションが必要です。

カーネル設定オプションの例セットとしては:

options VGA_CONSOLE_SCREENTYPE="\"80x50\""
options VGA_CONSOLE_ATI_BROKEN_FONTSEL
options FONT_VT220L8x8

8.1.1.3.Enabling VESA framebuffer console

多くのアーキテクチャーでは、 1種類のスクリーンモード: グラフィカルフレームバッファーモードだけです。 VGA グラフィックカードの機械では、 2つ目のモード: テキストモードがあります。これはテキストの表示のために 特別に作られた最適化されたモード。です。それゆえ、 グラフィックカードが 典型的な VGA カードのアーキテクチャー (i386 、 amd64) の GENERIC カーネルでは、これが default コンソールモードです。

しかしながら、 VESA BIOS 拡張 (VBE) に対応する VGA カードの machines では フレームバッファーを enable にできます。 この mode のサポートを enable するには、カーネル設定ファイルの次の行を uncomment してください:

# VESA framebuffer console
options 	KVM86			# required for vesabios
vesabios*	at vesabiosbus?
vesafb* 	at vesabios?
options 	VESAFB_WIDTH=640
options 	VESAFB_HEIGHT=480
options 	VESAFB_DEPTH=8
options 	VESAFB_PM		# power management support
wsdisplay*	at vesafb? console ?

VIA Unichrome capable graphics card を持っている場合は、代わりに次のを enable にでき:

# VIA Unichrome framebuffer console
unichromefb* 	at pci? dev ? function ?
wsdisplay* 	at unichromefb?

8.1.1.4.Enabling scrollback on the console

カーネルに WSDISPLAY_SCROLLSUPPORT オプションを入れて コンパイルすることで wscons で scrolling back が enable できます。 でも、 VGA_RASTERCONSOLE オプションを同時に enabled にしないように手配してください! カーネル構築指令については Chapter32, Compiling the kernel を 御覧ください。

WSDISPLAY_SCROLLSUPPORT オプションのついたカーネルを 走らせているなら、コンソールで LEFT SHIFT + PAGE UP/DOWN を押すことで scroll up できます。どうか注意として、これはあなたの システムコンソール(ttyE0) で動かないかもしれません!

8.1.1.5.Wscons and colors

8.1.1.5.1.Changing the color of kernel messages

カーネル設定ファイルの次のオプションの設定で カーネルメッセージの foreground 色および背景色を変更できます:

options WS_KERNEL_FG=WSCOL_xxx
options WS_KERNEL_BG=WSCOL_xxx

WSCOL_xxx color 定数は src/sys/dev/wscons/wsdisplayvar.h に定義されています。

NetBSD 3.0 からは、 ディスプレーにあらわれる多くの aspects様相 が簡単にカスタマイズできます: normal messages の表示に使われる色、 カーネルメッセージの表示に使われる色 および スクリーン周りの境界を描くのに使われる色。

これら details の全ては カーネルオプションでも wsconsctl(8) ユーティリティーを通してでも変更できます; もし自分固有なカーネルをコンパイルしたくなければ後者が望ましいでしょうて、 この tip[情報/示唆] を働かせるには GENERIC の default オプションが適切です。

以下のオプションが wsconsctl(8) でセットできます:

  • border: スクリーン border の色。 それのカーネル オプションは WSDISPLAY_BORDER_COLOR

  • msg.default.attrs: normal コンソールメッセージの表示に使われる attributes 。それの カーネルオプションは WS_DEFAULT_COLATTRWS_DEFAULT_MONOATTR (前者は color displays で用いられ、後者は monochrome displays で用いられます)。

  • msg.default.bg: normal コンソールメッセージの表示に使われる背景色。 それのカーネルオプションは WS_DEFAULT_BG.

  • msg.default.fg: normal コンソールメッセージの 表示に使われる foreground color 。 それのカーネルオプションは WS_DEFAULT_FG.

  • msg.kernel.attrs: カーネルメッセージおよび warnings の表示に使われる attributes 。 それのカーネルオプションは WS_KERNEL_COLATTR および WS_KERNEL_MONOATTR (前者は カラーディスプレイで使われ、後者は モノクロディスプレイで使われる)。

  • msg.kernel.bg: カーネルメッセージおよび warnings の表示に使われる背景色。それのカーネルオプションは WS_KERNEL_BG.

  • msg.kernel.fg: カーネルメッセージおよび warnings の表示に使われる foreground color 。それのカーネルオプションは WS_KERNEL_FG.

色として受け付けられるのは: black, red, green, brown, blue, magenta, cyan および white です。 attributes は フラグが1つ以上で、コンマで区切られたリストで: reverse, hilit, blink および/または underline.

例えば、 one of those old Amstrad machines の look を emulate するには:

wsconsctl -d -w border=blue msg.default.bg=blue msg.default.fg=white msg.default.attrs=hilit

または、カーネルメッセージを red であらわれるようにするには:

wsconsctl -d -w msg.kernel.fg=red

註として、 NetBSD の古い versions では、この機能の subset だけで ; more specifically, 上に説明した カーネルオプションの変更による方法で カーネル colors だけが変更できます。 。 また註として、全てのドライバーがこれらの機能に対応していなくて、 それで、全てのアーキテクチャーで正しい結果が得られないかもしれません。

8.1.1.5.2.Getting applications to use colors on the console

NetBSD は、アプリケーションが現在の terminal端末の能力を訊ねるのに termcap データベースを使います。 例えば、幾つかの terminals では colors をサポートしてなく、幾つかは アンダーラインをサポートしません (PC VGA terminals はできません、例えば) 等。 TERM 環境変数で termcap ライブラリーに terminal の type を教えます。そうするとオプションのために、 それのデータベースを参照します。

TERM の標準設定は、 interest な terminal 上で echo $TERM と typing することで点検できます。大抵、これは vt220 のようなものです。この terminal type は colors に対応していません。一般的な PC console は 25 行で、 to get colors 為に この値を wsvt25 に変更できます。 C シェル (csh) ではこう入れられて:

setenv TERM wsvt25

Bourne-compatible シェル (sh, ksh) ならこう入れられて:

export TERM=wsvt25

これが動かなかったら、 ANSI カラーコードに対応した ansi terminal type を試せます。 がしかし、この terminal type では他の機能が 失うmissing でしょう。 あなたのコンソール type にマッチし実用的な物を探すには /usr/share/misc/termcap ファイルを 眺めることができます。

8.1.1.6.Loading alternate fonts

/usr/share/wscons/fonts に 幾つかのフォントがあってコンソールフォントとしてロードできるす。 wsfontload(8) コマンドでできます。例えば: wsfontload -N ibm -h 8 -e ibm /usr/share/wscons/fonts/vt220l.808 。 このコマンドで vt2201.808 ファイルの IBM-encoded (-e ibm) フォントの高さが 8 ピクセル (-h 8) がロードされます。 ibm と名づけているのは、後の参照のためです##訳注-意## (-N ibm)。

実際にコンソール上でフォントを表示するには、コマンド wsconsctl -dw font=ibm です。

フォントを edit したいなら、 old pcvt ユーティリティーが使えて sysutils/pcvt-utils パッケージの中にあります。

8.1.2.wskbd

8.1.2.1.Keyboard mappings

Wscons では、さまざまな国のキーボードのキーを正しい characters に map する keymap を設定できて、 例 keymap を Italian keymap にセットするなら、 run:

# wsconsctl -k -w encoding=it
encoding -> it

この設定は次の reboot までのものです。 permanent にするには、 encoding 行を /etc/wscons.conf 加え: 次回のリブートで 自動実行されるでしょう。

# cp /etc/wscons.conf /etc/wscons.conf.orig
# echo encoding it >>/etc/wscons.conf

> characters を2つ type するということにどうか注意してください。 もし > を1つだけしか type しなかったら、行の追加ではなくファイルの上書きになります。 んが、そーゆーことで、 critical なファイルを触る前には常にバックアップを取るんです!

キーボード mappings の完全リストは /usr/src/sys/dev/wscons/wsksymdef.h にあり:

  • be - Belgian

  • de - German

  • dk - Danish

  • es - Spanish

  • fi - Finnish

  • fr - French

  • gr - Greek

  • hu - Hungarian

  • it - Italian

  • jp - Japanese

  • no - Norwegian

  • pl - Polish

  • pt - Portuguese

  • ru - Russian

  • sf - Swiss French

  • sg - Swiss German

  • sv - Swedish

  • ua - Ukrainian

  • uk - UK-English

  • us - US-English

また幾つかの "variants" もあって map の変更に使え:

  • declk

  • dvorak

  • iopener

  • lk401

  • metaesc

  • nodead

  • swapctrlcaps

dvorak は Dvorak キーボード配列に使います。 swapctrlcaps は Caps Lock キーと Left Control キーの機能を切り替えます。 iopener は the Netpliance i-opener の非標準 キーボード配列のためのもので、 F1 を Escape に、 F2 から F12 を F1 から F11 にします。 これらは他の map と、 dot を付け variant name と続けることで組み合わせることができます。例えば、 us.iopenerus.dvorak.swapctrlcaps のように 多様な変形が組み合わせできます。註として、 全ての組み合わせが許されているわけではありません。

options PCKBD_LAYOUT=KB_encoding ここで encoding は上の list から 大文字のエントリー、を追加することで、コンパイルされ込んだ カーネル default を変更できます (例: PCKBD_LAYOUT=KB_FR)。 変形は ビット方式の or でできます (例: PCKBD_LAYOUT=KB_US|KB_SWAPCTRLCAPS)。

X での キーボード layout の設定は 他の所 に記述されています。

8.1.2.1.1.Hacking wscons to add a keymap

もし favourite keymap がサポートされてなかったら、 src/sys/dev/wscons/wsksymdef.h および src/sys/dev/pckbport/wskbdmap_mfii.c をあなた自身で作るために digging in 始められます。 あなたの作業を send-pr a change-request PR ( Be sure to (=してくれっ))、 それで、他の人がそれを使えるようになります!

キーボード mapping ファイルを直接 hacking する代わりに、 wsconsctl を使って keymap を 試すことができます。例えば, keycode 51 の、 modifiers なしを comma に割り当て、 shift となら question マークに割り当て、 alt となら semicolon に割り当て、 alt と shift 両方なら colon に 割り当て を say させるには、issue the 次のコマンド:

wsconsctl -w "map += keycode 51=comma question semicolon colon"

8.1.2.2.Changing the keyboard repeat speed

キーボードリピートスピードは wsconsctl(8) ユーティリティーで tuned できます。 2つの値に興味あり: repeat.del1 、これはキャラクターリピートを始める前の delay を指定し、 そして repeat.deln 、 これはキャラクターリピート間の delay (いったん始まれば)をセットします。

例として キーボード スピードを accelerate したいとしましょう。 コマンドラインからできて:

wsconsctl -w repeat.del1=300
wsconsctl -w repeat.deln=40

か、システムを起動するたびに自動で行われるようにしたいなら、 /etc/wscons.conf に次の行を加え:

setvar repeat.del1=300
setvar repeat.deln=40

8.1.3.wsmouse

8.1.3.1.シリアルマウス support

wsmouse デバイス ( wscons の一部) ではシリアルマウスに直接対応していません。 moused(8) デーモンが シリアルマウスデータを読み、 wsmouse イベントに変換し そしてそれらを wscons のイベントキュー に注入するために提供されていて、それで マウスは wsmouse が提供した抽象概念層(abstraction layer)を通して使えます。

典型的な利用法: moused -p /dev/tty00 。 最初のシリアルポートにつながれているマウスの type を 決定し、そのデータを読み始めようと試みます。 moused(8) man page にもっと例があります。

8.1.3.2.Cut&paste on the console with wsmoused

wscons コンソールでマウスが使え、 マウスの one ボタンでテキストをマーク(カット)、他のボタンでふたたび インサート(ペースト)できます。

これをするために /etc/rc.conf 中の "wsmoused" を enable し、そして start させ:

# echo wsmoused=yes >>/etc/rc.conf
# sh /etc/rc.d/wsmoused start 

その後マウスが使え、左ボタンでテキストのマークを、右ボタンでペーストができます。 wsmoused(8) の挙動の tune には、それの manpage を御覧ください。 また、 wsmoused.conf(5) 設定ファイルのフォーマットも記述しています。 その例は /usr/share/examples/wsmoused にあります。

8.2.pccons

このコンソールドライバーは仮想コンソール も 設定ユーティリティープログラムも offer しやせんが、しかし、非常に少ない space ですみます。このため、 i386 インストールフロッピーで見つけることができます。 ほとんど i386 派生の少数のアーキテクチャーにあるだけです。

有効にするために、 次の行をカーネルコンフィグファイルに put し:

pc0 at isa? port 0x60 irq 1 # pccons generic PC console driver

非-英語 keymap でコンパイルの為に幾つかのオプションから1つを set することができ:

# Keyboard layout configuration for pccons
#options        FRENCH_KBD
#options        FINNISH_KBD
#options        GERMAN_KBD
#options        NORWEGIAN_KBD

対応するキーマップを有効にするために これらの1つの前のコメント文字を取り除き Chapter32, Compiling the kernel の instructions で カーネルの再構築をします。

一般的に、 pccons は不要で、 wscons がニーズ全てを満たすでしょう。