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