A NetBSD konzol magyarítása

Erről a témáról már olvashattunk egy írást Hajdú Zoltán
barátunk tollából. Ő a kernel inzultálásának útját választotta.
Ez a leírás egy másik utat mutat be. Mielőtt azonban rátérnénk a
részletekre, fontos megjegyezni, hogy ezt a megoldást csak a -current
ág 1.6T verzióján próbáltam ki. Valószínűleg 1.6-tól fölfelé
működik. Visszajelzéseket szívesen látnék.
   Már elég régóta bosszantott egy kissé, hogy nem tudok a NetBSD
konzolos felületén ékes magyar betűkkel írni. Zavart a kalapos ű és ő
betű is, valahogy nem az igazi. Ezért nekiveselkedtem, hogy megoldást
találjak a problémára. Először is körülnéztem a rendszerrel
szállított fontok területén. A /usr/share/wscons/fonts alatt
található fontok IBM CP437 alapján készültek, ezért az A0 kódtól
fölfelé nem felelnek meg a magyar igényeknek. A neten találtam egy
szimpatikus delikvenst - sajnos már nem tudom, hogy hol - és a fed
nevezetű font editorral kezelésbe vettem. A fed egyébként
feltelepíthető a pkgsrc/sysutils/pcvt-utils könyvátban kiadott make
install paranccsal. A kezelés célja az volt, hogy egy teljes
ISO8859-es karakter táblát hozzak létre, és ez keüljön betöltésre
lehetőleg már boot időben. Még nem teljes a karakter tábla, mert
hiányzik jónéhány nem magyar nemzeti karakter, de úgy gondoltam,
hogy az eddigi eredmény is többünk számára használható lesz a
anpi munka során. A fontot 8x16hun.iso2 névre kereszteltem, és
letölthető innen:<ide jöhet a href>. 
   A konzol magyarításának időigényes részével ezzel már meg is
volnánk. Az ékes magyar fontot a /usr/share/wscons/fonts könyvtárba
helyezzük, és már jöhet is a következő lépés. 

(Ez a rész a türelmetlenebbeknek szól!
Aki ki akarja próbálni, hogy magyarul beszél-e a konzol, a
következő két paranccsal - és megfelelő jogosultsággal - teheti meg:
wsconsfontload -N hun -h 16 -e iso /usr/share/wscons/fonts/8x16hun.iso2
wsconsctl -f /dev/ttyEx -dw font=hun
                      ^ ide jön a konzol "száma" 
Már lehet is próbálkozni!)

A /usr/share/wscons/keymaps alatt található magyar billentyűzet
kiosztás, amit még kora NetBSD-s gyermekkoromban ütöttem össze
pckbd.hu.iso8859-2 néven. 
Ennek egy szépséghibája van: Unicode kódolás szerint készült, ezért a
Hajdú Zoltán által említett problémával kell szembesülnünk: az
odoubleacute és udoubleacute "fantázianevű" kis és nagy betűk nem
tudnak előjönni. Rejtőzködésüknek kisebb oka a Zoli által
említett definiálatlanság, nagyobb gond, hogy jelenleg a NetBSD
konzol - kernel - szinten még nem támogatja a multibyte karaktereket,
ami azért probléma, mert a Unicode-ok jó része nem jeleníthető
meg. Ha összevetjük az ISO8859-2 és a Uicode táblát, azt látjuk,
hogy A0 kódtól fölfelé mutatkoznak eltérések, így ami bennünket érint:

        Latin2          Unicode
ő       xF5             <U0151>                   
Ő       xD9             <U0150>
ű       xFB             <U0171>
Ű       xDB             <U0170>

Bang Jun-Young barátunk uwscons nevű kiterjesztése ígéretesnek
mutatkozik, csak még nem jelent meg a -current ágon sem, és utolsó
levélváltásunk alkalmával sem biztatott közeli eredménnyel.
Egy kis kitérő után vissza a lényegre. A kernel tud dolgozni IBM és
ISO8859-1 kódlappal, ezért kell egy kis becsapás. A négy kritikus
magánhangzónk ISO-8859-1-es becenevét használva célhoz érünk. Át
kell írnunk a következő sorokat a pckbd.hu.iso8859-2 nevű fájlban:

keycode 26=odoubleacute Odoubleacute division

és 

keycode 43=udoubleacute Udoubleacute currency

az alábbi két sorra:

keycode 26=otilde Otilde division

és

keycode 43=ucircumflex Ucircumflex currency

Most már csak azt kell megmagyarázni kedvenc rendszerünknek, hogy
mind a négy virtuális konzol magyarul tudjon beszélni közvetlenül a
bootolás után, ezért két konfigurációs fájlt kell editálnunk.
Evezzünk a /etc könyvtára, és kezdjük a wscons.conf-fal.

A

# fonts to load
#     name  width  height enc   file

szekcióba írjuk be:

font   hun   -     16     iso   /usr/share/wscons/fonts/8x16hun.iso2

majd pedig az utolsó sorba:

mapfile /usr/share/wscons/keymaps/pckbd.hu.iso8859-2 

Azt hiszem, a két bejegyzés magáért beszél. Először megadtuk a
betöltendő fontot, ezt követően a billentyűzetet inicializáltuk.

A második konfigurációs fájl azt hiszem lehet alternatív, én a
rc.local-t módosítottam. Négy sorral gyarapodott:

wsconsctl -f /dev/ttyE0 -wd font=hun
wsconsctl -f /dev/ttyE1 -wd font=hun
wsconsctl -f /dev/ttyE2 -wd font=hun
wsconsctl -f /dev/ttyE3 -wd font=hun

Ezt követően reboot, és már jönnek is az ékes magyar betűk.

Kulcsár Ferenc