📚 LinuxDocs
Topics:
All Pages8021X HOWTOACP ModemACPI HOWTOADSL Bandwidth Man..ATA RAID HOWTOATM Linux HOWTOAX25 HOWTOAccessibility Dev ..Accessibility HOWTOAdv Bash Scr HOWTOAdv Routing HOWTOAntares RAID sparc..Apache Compile HOWTOApache WebDAV LDAP..Assembly HOWTOAstronomy HOWTOAthlon Powersaving..Authentication Gat..Autodir HOWTOAviation HOWTOAvr Microcontrolle..BRIDGE STP HOWTOBTTVBackspaceDeleteBandwidth Limiting..Bangla HOWTOBash Prompt HOWTOBattery PoweredBelarusian HOWTOBelgian HOWTOBeowulf HOWTOBocaBogoMipsBootdisk HOWTOBridgeC++ dlopenC C++Beautifier HO..C editing with VIM..CDROM HOWTOCDServer HOWTOCable ModemCaudium HOWTOClone HOWTOCompaq Remote Insi..Compaq T1500 HOWTOConexant+Rockwell ..Cryptoloop HOWTODB2 HOWTODHCPDSL HOWTODVD Playback HOWTODebian Binary Pack..Debian JigdoDebian and Windows..Disk Encryption HO..Disk on Chip HOWTODocBook Demystific..DocBook InstallDocBook OpenJade S..Ecology HOWTOEmacspeak HOWTOEncourage Women Li..Encrypted Root Fil..Euro Char SupportEvent HOWTOFedora Multimedia ..Finnish HOWTOFirewall PiercingFlash Memory HOWTOFont HOWTOFramebuffer HOWTOGCC HOWTOGIS GRASSGlibc Install HOWTOHOWTO HOWTOHOWTO INDEXHP HOWTOHandspring VisorHard Disk UpgradeHardware HOWTOHighQuality Apps H..Home Electrical Co..IBM7248 HOWTOIO Perf HOWTOIP AliasIP Masquerade HOWTOIRCImplement Sys Call..Indic Fonts HOWTOInfrared HOWTOIngresII HOWTOInstall StrategiesInstallation HOWTOInstallfest HOWTOIntkeybItalian HOWTOJabber Server Farm..JavaStation HOWTOKerberos Infrastru..Kernel HOWTOKerneldKodak Digitalcam H..LDAP HOWTOLDP Reviewer HOWTOLILO crash rescue ..LVM HOWTOLeased LineLegoLinksys Blue Box R..Linux+Win95Linux+Win9x+Grub H..Linux+Windows HOWTOLinux Complete Bac..Linux Crash HOWTOLinux Gamers HOWTOLinux Modem SharingLinux Promise RAID..Linux i386 Boot Co..LinuxGL QuakeWorld..Lotus DominoR5MILO HOWTOMMBase Inst HOWTOMP3 CD BurningMail User HOWTOMajordomo MajorCoo..Man PageMasquerading Simpl..Medicine HOWTOMindTerm SSH HOWTOMobile IPv6 HOWTOMock MainframeModule HOWTOModulesMotorola Surfboard..Mozilla OptimizationMulti Distro DevNCURSES Programmin..NFS HOWTONFS Root Client mi..NIS HOWTONetMeeting HOWTONetwork boot HOWTONvidia OpenGL Conf..OLSR IPv6 HOWTOOnline Troubleshoo..Oracle 9i Fedora 3..PA RISC Linux Boot..PCTel MicroModem C..PHP Nuke HOWTOPPP HOWTOPagerPalmOS HOWTOPartitionPartition Mass Sto..Partition Mass Sto..Partition RescuePine ExchangePortSlavePost Installation ..Postfix Cyrus Web ..Pre Installation C..Print2WinPrinting HOWTOProcess AccountingProgram Library HO..Proxy ARP SubnetQmail ClamAV HOWTOQmail VMailMgr Cou..Querying libiptc H..RPM HOWTOReading List HOWTORedHat CD HOWTOReliance HOWTORemote BridgingRemote Serial Cons..SCSI 2.4 HOWTOSCSI Generic HOWTOSLIP PPP EmulatorSRM HOWTOSSL Certificates H..Scanner HOWTOScientific Computi..Scripting GUI TclTkSecure CVS PserverSecure Programs HO..Security HOWTOSecurity Quickstar..Security Quickstar..Serial Laplink HOWTOSerial Programming..Slovak HOWTOSmall MemorySmart Card HOWTOSoftware Proj Mgmt..Software Release P..Sound HOWTOSpam Filtering for..Speech Recognition..SquashFS HOWTOSybase ASA HOWTOSybase ASE HOWTOSybase PHP ApacheTCP Keepalive HOWTOTamil Linux HOWTOTimePrecision HOWTOTimeSys Linux Inst..Token RingTraffic Control HO..Traffic Control tc..UPS HOWTOUnix Hardware Buye..Unix and Internet ..UpgradeUsenet News HOWTOUser Authenticatio..VB6 to TclVMS to Linux HOWTOVPN HOWTOValgrind HOWTOVideoLAN HOWTOVim HOWTOVirtual WebWebcam HOWTOWikiText HOWTOWindows Newsreader..Wireless Link sys ..Wireless Sync HOWTOXDM XtermXDMCP HOWTOXFree Local multi ..XFree86 HOWTOXFree86 R200XFree86 Second MouseXFree86 Video Timi..XML RPC HOWTOXWindow Overview H..XWindow User HOWTOXinerama HOWTOXterminalsHtml singleI810 HOWTOLibdc1394 HOWTOOpenMosix HOWTOPhhttpd HOWTOPpp sshText

3. Nastavenia konzoly

Tto kapitola by mala čtavou, poučnou a zroveň zbavnou formou pojednvať o veciach medzi prstom a okom. Zkladnou otzkou nech nm je „Zmysel života, vesmru a vbec.“

3.1. Slovenčina na vstupe textovej konzoly

3.1.1. Fonty

Keď zobudte o polnoci hocikoho, kto vo svojom živote videl počtač a optate sa ho, ako rozbehať slovensk znaky, určite spomenie niečo ako fonty. Na zobrazovanie znakov na obrazovku -- či už v textovom alebo grafickom režime -- slžia skutočne fonty. Fonty pre konzolu a programy určen na manipulciu s nimi sa nachdzaj v balku kbd. Po jeho nainštalovan s sbory s fontami umiestnen v adresri /usr/lib/kbd/consolefonts/.

Pre ns s dležit najm sbory, ktor maj v mene iso02, lat2, latin2 alebo čslo 852. To naznačuje, že ide o fonty s podporou ISO-8859-2 (latin2), prpadne DOS codepage 852, čo s štandardy aj pre slovensk diakritiku.

Pozor, pvodn balk sa vol kbd, ale existuje jeho rozšren verzia, ktor sa objavuje v distribcich -- .:: kemono.im ::. console-tools. Rozdiely medzi nimi s minimlne, pre kbd budeme použvať prkaz setfont, pre console-tools zase consolechars. Taktiež, nzvy dodvanch fontov sa trochu odlišuj, takže budem uvdzať ekvivalenty pre oba balky.

3.1.2. Ako fonty funguj

Existuje niekoľko sborovch formtov na ukladanie fontov, princp je však rovnak -- sbor obsahuje 256 obrzkov (glyphs), z ktorch všetky maj rovnak rozmer (napr. 8x16 bodov -- veľkosť fontu) a každ zobrazuje jeden znak.

Aby nm tch 256 obrzkov bolo na niečo dobrch, je treba font zo sboru zaviesť do znakovho genertora videokarty. Na to slži jeden z prkazov

kbd:

setfont meno-fontu

console-tools:

consolechars -f meno-fontu

meno-fontu mže byť absoltna alebo relatvna cesta k sboru s fontom, alebo meno sboru, pokiaľ sa nachdza v adresri .:: mindef.gov.bn ::. /usr/lib/kbd/consolefonts/, či už s prponou, alebo bez.

Pre ľahšie pochopenie tch obrzkov, skste nahradiť meno-fontu reťazcom t850 a sledujte vsledok na všetkch virtulnych konzolch.

Naspť k štandardnmu fontu sa vždy dostanete jednm z prkazov

kbd:

sh$ setfont
		
console-tools:

sh$ consolechars -d
		

Čo sa presne deje? Program setfont/consolechars zavedie všetkch 256 obrzkov do znakovho genertora EGA/VGA karty. Od tohto momentu sa na všetkch konzolch bude znak s ASCII kdom napr. 65 vykreslovať ako šesdesiaty piaty obrzok z našeho sboru s fontom. Ešte raz pripomnam a dvakrt podčiarkujem, že font je vždy rovnak pre všetky virtulne konzoly, na ktorch zobrazuje znaky ten ist znakov genertor EGA/VGA karty.

Dležit je uvedomiť si, že interne ide naozaj len o obrzky a tvar niektorho znaku vo fonte nem nič spoločnho s jeho ASCII kdom. Ak by ste si sami vytvorili nejak font (v dokumentcii ku kbd/console-tools mte informcie o všetkch formtoch), v ktorom by mal ten šesdesiaty piaty obrzok tvar psmena z, po jeho natiahnut sa vm bude pri zadan Alt-6-5, čo je ASCII kd psmena A, zobrazovať znak z. Ale ak tento znak uložte do sboru, v tomto sa bude nachdzať bajt s hodnotou 65, teda psmeno A.

3.1.3. Fonty ISO-8859-2

Toto využva štandard ISO-8859-2 (a in) - spoločn znaky s ASCII vykresl rovnako a znaky špecifick pre t ktor abecedu „namapuje“ na menej použvan znaky ASCII tabuľky. Kam presne ktor norma umiestňuje znaky s diakritikou, ns zaujmať nemus (pokiaľ nevytvrame vlastn fonty), hlavn je, že napr. anglick text je nezmenen (angličtina m všetky znaky spoločn so slovenčinou) a slovensk text už viac neobsahuje hlpe znaky, ktor so slovenčinou nemaj nič spoločn.

Slovensk (ISO-8859-2) fonty, ktor s sčasťou balkov kbd a console-tools:

kbd:

lat2-{08,10,12,14,16}, lat2a-16, iso02.{08,14,16}

console-tools:

lat2-{08,10,12,14,16}, lat2u-16, iso02.f{08,14,16}

Na zavedenie fontu použite prkaz

kbd:

sh$ setfont meno-zo-zoznamu
		
console-tools:

sh$ consolechars -f meno-zo-zoznamu
		

Odporčam použvať lat2a-16, resp. lat2u-16. Ostatn fonty maj bezchybn zobrazovanie slovenskch znakov, problm však nastva pri aplikcich, ktor využvaj znaky na kreslenie rmčekov (napr. mc).

Čo sa tka fontov iso02.* z balka kbd, treba pri nich použiť argument prkazu setfont -m latin2u.trans. Takže cel prkaz na zavedenie niektorho z tchto fontov je:

kbd:

sh$ setfont iso02.16 -m latin2u.trans
		
console-tools:

sh$ consoletrans -f lat2u-16 -m iso02
		

V sbore latin2u.trans (iso02.acm) sa nachdza tzv. Aplication-Charset Map (ACM), aksi prevodn tabuľka, ktor obsahuje riadok pre každ znak fontu a jeho podobu v kdovan UTF-8.

3.1.4. Automatick zavdzanie fontov

Ak ste si našli svoj font, ktor chcete použvať a mať ho automaticky zaveden vždy pri štarte, nie je nič ľahšie. Inicializačn skript rc.sysinit rob asi toto: skontroluje, či existuje sbor /etc/sysconfig/i18n a program (skript) /sbin/setsysfont. Ak no, spust setsysfont. Ten načta /etc/sysinfo/i18n a podľa premennch definovanch v tomto sbore prkazom consolechars alebo setfont zavedie font.

Takže stač nastaviť sprvne premenn v sbore /etc/sysconfig/i18n a skript /sbin/setsysfont urob všetko za ns. Tento skript možno spustiť kedykoľvek chcete zaviesť font nastaven ako štandardn pre systm.

Premenn v sbore /etc/sysinit/i18n s (použvajte len men sborov bez cesty a bez prpony!):

kbd:

SYSFONT=lat2a-16
		
console-tools:

SYSFONT=lat2u-16
SYSFONTACM=iso02
		

Skriptk setsysfont obsahuj oba balky a kedykoľvek mžete zaviesť font nastaven ako systmov v sbore /etc/sysinit/i18n jednoduchm zadanm

sh$ /sbin/setsysfont
	

Podľa toho, čo sme si hovorili o tom, že pre všetky virtulne konzoly mže byť nastaven len jeden spoločn font, nem veľk zmysel zavdzať nastavovanie fontu zvlšť pre každho užvateľa. S tm svis aj fakt, že nastavenie fontu sa vzťahuje k danmu počtaču, pri ktorom prve sedte a nie k tomu, ku ktormu ste pripojen napr. cez ssh.

Predsa len si viem predstaviť prpad, keď niektor z viacerch použvateľov jednho počtača potrebuje odlišn font. V tom prpade mže vložiť prkaz na zavdzanie fontov do svojich skriptov, ktor vykonva shell pri prihlsen a odhlsen. Pre bash by to mohlo vyzerať takto:

~/.bash_profile:

if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && ! [ -f ~/.font ]; then
	setfont -o ~/.font gr928a-8x16
fi
		
~/.bash_logout:

if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && [ -f ~/.font ]; then
	setfont ~/.font
	rm -f ~/.font
fi
		

Vonkoncom to nie je idelne riešenie, ale svoj čel spln (minimlne po moment prvho odhlsenia). Trochu sa s tm pozabvajte, aby sa font (a rozloženie klves) menilo len pri prvom prihlsen a poslednom odhlsen, tiež setfont pod iXami nem veľmi zmysel a tak... V Tips-HOWTO je uveden spsob, ako zistiť, na koľkch virtulnych konzolch je ešte užvateľ prihlsen.

Inč, aby bolo jasn, toto vm bude fungovať len na loklnom stroji - zamyslite sa, prečo asi setfont (aj loadkeys) nefunguje cez vzdialen terminl a či by ste z toho niečo mali, keby to tak nebolo.

Ak to s takmto riešenm myslte vžne, tak skr uvažujte nad modifikciou skriptu /etc/profile.d/lang.sh, kde by sa kontroloval aj obsah užvateľskho sboru ~/.i18n a podľa toho by sa zaviedol skript, popis rozloženia klves, prpadne nejak premenn...

3.2. Slovensk klvesnica na textovej konzole

Keď je slovensk font na konzole rozbehan a naše nrodn znaky sa zobrazuj sprvne, mme so slovenčinou problm čslo dva - ako tam tie znaky dostať? Keby ste si chceli tento sbor len prečtať bez potreby nslednej navštevy psychiatra, stačilo by zaviesť nejak font so slovenskou podporou. Ale keďže ste uvedomel linuxk/uvedomel linuxčka, hneď chcete do Slovak-HOWTO prispieť a pomocou klvesnice psať slovensk text. Na to potrebujete s tou klvesnicou niečo urobiť.

3.2.1. Popis rozloženia klves (keymap)

Adresre /usr/lib/kbd/keymaps/i386/qwertz/ a qwerty/ obsahuj po nainštalovan balka kbd/console-tools aj popisy slovenskho rozloženia klves. Pre ns s zaujmav sbory

sk-prog-qwerty.map.gz
sk-qwerty.map.gz
sk-prog-qwertz.map.gz
sk-qwertz.map.gz

Tieto sbory obsahuj defincie rozloženia klves pre slovensk jazyk, pričom rozdiely medzi nimi s v umiestnen klves Y a Z a počte slovenskch znakov, ktor pomocou nich možno napsať priamo (bez mŕtvych klves). Najviac sa na slovensk psac stroj podob sk-qwertz, najmenšie zmeny oproti americkej klvesnici s zase v sk-prog-qwerty.

Sbory v adresri /usr/lib/kbd/keymaps/i386/include/ obsahuj popis zkladnch rozložen klves (azerty , qwerty, qwertz ), prdavnch klves (keypad, windowkeys), prpadne problmovch klves ( delete, backspace, ctrl ). Sbory linux-*.inc.gz s špecifick pre linux (teda nie pre jazyk). S to napr. kľče (F1-F12, kombinovanm s Ctrl a Shift až po F48), Shift-PgUp a Shift -PgDown, atď.

Keymapy *.inc.gz nepopisuj kompletn rozloženie klvesnice, ale len niektorch jej čast. Využvaj sa pri pripjan (include) zo sborov *.map.gz, čo je vhodn z dvodu jednoduchšej konfigurcie klvesnice. Naprklad zmenou jednho riadku v sbore s rozloženm sk-qwerty mžme dostať rozloženie qwertz, prpadne (to asi využijete) jednoducho odstaviť znaky euro a cent, ktor (zatiaľ?) nepotrebujeme a zbytočne nm zaberaj znaky .:: telegra.ph ::. E a C.

Na zavedenie sboru s popisom rozloženia klves slži nasledovn prkaz:

loadkeys nazov

kde nazov mže byť absoltna alebo relatvna cesta ku keymap sboru, alebo meno sboru, pokiaľ sa nachdza v adresri /usr/lib/kbd/keymaps/, či už s prponou, alebo bez.

Štandardn slovensk popisy rozloženia klves njdeme vo vyššie spomnanch *.map.gz sboroch. Ak sa chcete vrtiť k štandardnmu rozloženiu, prkaz

sh$ loadkeys -d
	
zavedie pvodn, ktor je uložen v sbore defkeymap.map.gz niekde medzi ostatnmi keymap sbormi. Predtm ale nikdy nezabudnite zmeniť režim slovenskej klvesnice na .:: podcasts.apple.com ::. US znaky, tzn. 1 dva 1 a nie + atď. Ak by ste predsa zabudli, je možn, že klvesy, kde sa nachdzali slovensk znaky, nebud fungovať sprvne (v skutočnosti bud fungovať sprvne, ale vm sa to nebude pčiť). Vtedy znovu zaveďte predchadzjcu keymapu (na nefunkčn klvesy použite AltGr - prav Alt) a klvesou Pause/Break všetko napravte. Potom mžete znova zaviesť defkeymap.

Pokiaľ sa vm nepči ani jeden zo štandardnch keymap sborov pre slovenčinu, čo je pravdepodobn vďaka riadku

include "euro"
	
v include sboroch qwerty-layout.inc.gz aj qwertz-layout.inc.gz, mžete kľudne pozmeniť existujci sbor s popisom rozloženia klves, prpadne vytvoriť nov. Nebojte sa, je to zložit! Nebudem to tu rozpisovať všetko, prezrite si zopr kmap sborov, prečtajte manulov strnku keymaps(5) a mali by ste to ľahko pochopiť.

My si povieme len o zkladnch veciach, ktor nm pomžu pozmeniť existujce kmap sbory s popismi slovenskch klvesnc, aby ste si poradili s (mne znmymi) komplikciami, alebo upravili rozloženie klves podľa svojho gusta.

3.2.2. Include a nesprvna funkcia klves E a C

Problm s E a C je spsoben zavedenm jednotnej meny v eurpskej nii. Na vine nie je ani tak EU, ale niekto, kto symboly pre euro a cent umiestnil na AltGr-E a AltGr-C, čo s naše obyčajn E a C. Totiž, nrodn klvesnice s včšinou riešen tak, že po zaveden sboru naďalej funguje americk rozloženie a na prepnanie do nrodnho režimu sa použva klvesa Pause, alebo mžme zadvať nrodn klvesy pri sčasnom držan klvesy AltGr (prav Alt). Sbor euro.inc, ktor definuje tieto dva problmov symboly, je pripojen zo sboru qwerty-layout.inc, ktor zase pripjaj samotn slovensk keymapy (sk-qwerty, sk-prog-qwertz, …).

Riešenie je veľmi jednoduch - zeditujete qwerty-layout.inc (alebo qwertz-layout.inc) a odkomentujete znakom # riadok

include "euro"
	

3.2.3. Keycode a definovanie klves

Predchdzajci problm s eurom možno vyriešiť aj definovanm znakov E a C v samotnom sbore sk-qwerty.kmap.gz (alebo inom, ktor použvate) pomocou slova keycode:

keycode 18 = e
keycode 46 = c
	

V keymap sboroch je pre každ klvesu (alebo aspoň pre každ, ktor chceme predefinovať) jeden riadok približne tohto razenia:

keycode 3 = two at lcaron two nul nul nul nul Meta_two Meta_two...
	

Čslo za keycode označuje určit klvesu a reťazce za = hovoria o tom, ak znak m ovldač klvesnice generovať pri stlačen tejto klvesy, a to buď samotnej, alebo v kombincii so špecilnymi klvesmi Shift, AltGr, Control, Alt, ShiftL, ShiftR, Ctrl a CtrlR. To nm dva 256 možnch znakov na každ klvesu.

Včšinou sa pozmeňuje len prvch 16 kombinci modifiktorov. To je vznam riadku

keymaps 0-15
	
na začiatku kmap sborov.

V nasledujcom zozname je tchto 16 kombinci (po riadkoch):

žiadnyShiftAltGrShift-AltGr
ControlShift-ControlAltGr-ControlShift-AltGr-Control
AltShift-AltAltGr-AltShift-AltGr-Alt
Control-AltShift-Control-AltAltGr-Control-AltShift-AltGr-Control-Alt

Z hľadiska slovenskej klvesnice s dležit len prv štyri - prv dva s zvyčajne nezmenen americk znaky, napr. two at, čo je 2 @, a druh dva s znaky slovenskej abecedy, ktor bude ovldač klvesnice posielať aplikcim ak pri stlačen tejto klvesy budeme sčasne držať klvesu [Wiki: WebSocket] AltGr (prav Alt), napr. lcaron two, čo je naše ľ 2.

Aby ste mohli vkladať slovensk znaky, nemuste cel čas pridržiavať AltGr nosom, ale mžete použiť Pause/Break, ktor v kontexte s nrodnmi klvesnicami funguje ako AltGr Lock. Chpte to tak, že keď sa prepnete do slovenskho režimu stlačenm Pause/Break, prv a druh dva reťazce v každom riadku keycode sa vymenia, napr. .:: rysowanie.phorum.pl ::.

two at lcaron two -> lcaron two two at
	

Vtedy mžete použiť AltGr na zadvanie znakov americkej klvesnice, alebo sa optovnm stlačenm Pause/Break prepnť spt do US režimu.

Riadok pre klvesu s kdom 41 (znaky ` a ~), m v sbore sk-qwerty.map.gz nasledovn tvar:

keycode 41 = grave asciitilde dead_diaeresis dead_circumflex ...
	

Mne osobne sa nepči, že s tu umiestnen mŕtve klvesy dead_diaeresis (dve bodky nad znakom) a dead_circumflex (mkčeň), pretože ich nepotrebujem --- aj na slovenskej klvesnici predsa je. A keby aj nebolo, na ich psanie mžem kľudne použiť mŕtvy klves mkčeň. O tom si bližšie povieme v časti o compose sekvencich. Teraz chcem mať na tomto mieste znaky ; (semicolon) a (degree) tak, ako je to na popiske mojej klvesnice. Zmenm teda riadok takto:

keycode 41 = grave asciitilde semicolon degree ...
	

Inč, ten stupeň asi nie je stupeň, ale mŕtvy znak kržku nad psmenom, napr. v češtine nad u, ale tak klves je nm fakt nanič. Radšej budeme psať stupne.

Nzvy znakov, ktor sa použvaj pri definovan jednotlivch klves si mžete pre znaky ASCII zistiť v sbore us.map.gz. Čseln kdy všetkch klves vm vypľuje program

showkey

Pravidl pre nzvy znakov špecifickch pre slovenčinu v kmap sboroch:

  1. Prv psmeno v nzve určuje ASCII znak, pre ktor chceme použiť diakritiku.

  2. K nemu pridme identifiktor diakritickho znamienka:

    caron --- mkčeň
    acute --- dĺžeň
    diaeresis --- dve bodky nad
    circumflex --- vokň

    Naprklad:

    scaron = š
    uacute =
    Ocircumflex =

Nzvy ďalšch znakov špecifickch pre slovenčinu:

0xa7 --- (paragraf)
degree --- stupeň

Pre sprvnu interpretciu identifiktorov znakov s diakritikou je nutn na začiatku kmap sboru určiť kdov strnku, pre ktor bude určen tento popis rozloženia klves. Ide o to, že ten ist znak mže mať v rznych kdovch strnkach in ASCII kd. Implicitn hodnota je iso-8859-1, teda pre slovensk keymapy je nutn vložiť riadok:

charset "iso-8859-2"
	

Ešte jeden prklad: ak chcete použvať slovensk rozloženie qwertz a americk rozloženie qwerty, potrebujete vymeniť znaky Y a Z:

keycode 21 = y Y z Z
keycode 44 = z Z y Y
	

Na prv pohľad to mže fungovať dobre, ale problm sa prejav pri zapnutom [HTTP Community] Caps Lock - znaky Y a Z sa stle pšu malmi psmenami. Pri psan popisov rozložen znakov možno takto problm ošetriť pridanm psmena + pred každ psmeno v keycode riadku danej klvesy. Psmeno + určuje nasledovnmu psmenu atribt letter, teda sa bude pri stlačenom Caps Lock psať veľk psmeno. Všetky psmen a-z, A-Z maj tento atribt priraden automaticky, ale to len v prpade, že maj keycode riadok tvaru:

keycode 21 = y
	

V našom prpade teda musme priradiť tento atribt všetkm znakom explicitne. Takže, konečn prava keymapy bude:

keycode 21 = +y +Y +z +Z
keycode 44 = +z +Z +y +Y
	

Pre vmenu psmen toto riešenie funguje spoľahlivo, bohužiaľ, ešte stle neexistuje spsob, ktorm by sa dalo dosiahnuť naprklad psanie veľkch psmen s diakritikou pri zapnutom Caps Lock jednoduchm stlčanm ich klves, ako je to v slovenskom popise rozloženia klves pre X Window System.

3.2.4. Mŕtve klvesy a sekvencie compose

S mŕtvymi klvesami svisia v kmap sboroch riadky tvaru

compose 'c1' 'c2' to 'c3'
	

Predstavme si mŕtve znaky ako plne obyčajn znaky s tm rozdielom, že ovldač klvesnice ich neposiela aplikcim, ale zostan niekde „visieť“, km z klvesnice neprde ďalš znak. Ovldač klvesnice nepošle ani tento, ale poksi sa spojiť ho s predchdzajcim mŕtvym znakom a až vsledok spojenia pust ďalej. No, a ako m to spojenie uskutočniť, to mu presne hovoria riadky compose v keymap sboroch.

V nasledujcej tabuľke je zoznam mŕtvych znakov použvanch v slovenčine, spolu s vznamom a znakom, ktorm sa označuj v compose sekvencich.

Tabuľka 2. Mŕtve klvesy

NzovVznamCompose
dead_acutedĺžeň\'
dead_circumflexmkčeň^
dead_diaeresisdve bodky nad"

Postup pri psani compose sekvenci

  1. Každ compose sekvencia sa začna kľčovm slovom compose.

  2. Nasleduje compose znak mŕtvej klvesy (podľa tabuľky Mŕtve klvesy), naprklad \'.

    Druh je znak, s ktorm chceme mŕtvu klvesu kombinovať, naprklad A.

    Za kľčovm slovom to nasleduje vsledok spojenia mŕtvej klvesy a znaku bez diakritiky, teda .

Je praktick mať pri vytvran compose sekvenci zaveden slovensk font, aby ste vsledok mohli hneď kontrolovať. Veľkou pomocou je tiež možnosť prkazu loadkeys čtať zo štandardnho vstupu. Naprklad:

sh$ loadkeys
include "/usr/lib/kbd/keymaps/i386/include/windowkeys.map.gz"
keycode 41 = grave asciitilde semicolon dead_diaeresis
compose '"' 'a' to ''
# ukončenie zadvania:  EOF  -  Ctrl-D
sh$
	

Popis aktulneho rozloženia klves mžete uložiť do sboru prkazom

sh$ dumpkeys > subor
	

Ak nemte zaveden slovensk popis rozloženia klves, muste zadvať tieto znaky ako .:: www.annunciogratis.net ::. Alt sekvencie, poprpade vkladať ich hex kdy v tvare 0xed pre . Vpis znakov aktulneho fontu spolu s ich hex kdmi vm urob program

kbd:

showfont

console-tools:

showcfont

Ešte raz naša compose sekvencia a nejak navyše:

compose '\'' 'A' to ''   # dlh A cez dĺžeň
compose '^'  'O' to ''   # O s vokňom cez mkčeň
compose '^'  'a' to ''   # širok a cez mkčeň,
compose '^'  'A' to 0x84  # ...preto nepotrebujeme dead_diaeresis
	

Mimochodom, v sbore /usr/lib/kbd/keymaps/compose/compose.latin2 mte zoznam compose sekvenci pre normu ISO-8859-2.

3.2.5. Automatick zavdzanie keymap sboru

Na nastavenie rozloženia klvesnice, ktor chceme zaviesť pri štarte systmu, nm slži sbor /etc/sysconfig/keyboard. Pre Slovka ako repa by mal vyzerať minimlne takto:

KEYTABLE=sk-qwerty     # zavedie rozloženie klves sk-qwerty
KBCHARSET=iso-8859-2   # ...a spomnan sbor compose.latin2
	

Nastavenie klvesnice pri štarte m na starosti skript .:: www.mindmeister.com ::. keytable, ktor je volan priamo z rc.sysinit, takže netreba vytvrať linky v adresroch pre runlevel 3/multiuser, prpadne 5/X.

V dokumentcii k initscripts sa pše: „Ak uložte popis rozloženia klves (použitm dumpkeys) do sboru /etc/sysconfig/console/default.kmap, zavedie sa pri štarte systmu ešte pred pripjanm/kontrolou sborovch systmov. To mže byť užitočn, ak potrebujete zadať heslo roota v prpade problmov. Mus to byť ‚dumpnut‘ popis rozloženia klves a nie skoprovan sbor z /usr/lib/kbd/keytables/, pretože tie často ešte vkladaj (include) in popisy z tejto adresrovej štruktry.“

Po pripojen sborovch systmov, v prpade, že existuje spustiteľn sbor /etc/rc.d/init.d/keytable a adresr /usr/lib/kbd/keymaps/, vykon sa prkaz

sh# /etc/rc.d/init.d/keytable start
	

Tento už zavedie popis rozloženia klves tak, ako to mte určen premennmi v sbore /etc/sysconfig/keyboard, preto nemuste vytvrať odkazy v jednotlivch rc[1-5].d/ adresroch.

To, čo sme si hovorili o zmene fontu pri prihlsen nejakho užvateľa na virtulnej konzole, sa d aplikovať aj na rozloženie klves. plne najjednoduchšie riešenie (ktor sa pri prvom odhlsen pošle do krkov) je asi takto:

~/.bash_profile:

if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && ! [ -f ~/.keymap ]; then
	dumpkeys > ~/.keymap
	loadkeys gr.map
fi
		
~/.bash_logout:

if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && [ -f ~/.keymap ]; then
	loadkeys ~/.keymap
	rm -f ~/.keymap
fi
		

3.3. Zhrnutie nastaven konzoly

Pokiaľ som sa niekde nesekol, tak minimlne v distribcich RedHat a Mandrake by po tchto zmench mala do pohody zašlapať slovensk podpora (fonty + klvesnica).

/etc/sysconfig/i18n:

kbd:

SYSFONT=lat2a-16
		    
console-tools:

SYSFONT=lat2u-16
SYSFONTACM=iso02
		    
/etc/sysconfig/keyboard:

KEYTABLE=sk-qwertz
KBCHARSET=iso-8859-2
	      

Tiež, ak zadvate rootovsk heslo s použitm inho rozloženia klves ako je štandardn (us), vložte si jeho popis do sboru /etc/sysconfig/console/default.kmap. Pozor, nesmiete len tak skoprovať sbor, alebo vytvoriť link! Ak chcete použiť naprklad rozloženie sk-qwertz, urobte to takto:

sh$ loadkeys sk-qwertz
sh# dumpkeys >/etc/sysconfig/console/default.kmap
      

Ak chcete nastaviť slovensk font a klvesnicu len jednorazovo, tieto prkazy by to mali dokzať:

kbd:

sh$ setfont lat2a-16
sh$ loadkeys sk-qwertz
	      
console-tools:

sh$ consolechars -f lat2u-16 -m iso02
sh$ loadkeys sk-qwertz
	      

...a naspť na štandardn nastavenia:

kbd:

sh$ setfont
sh$ loadkeys -d
	      
console-tools:

sh$ consolechars -d
sh$ loadkeys -d
	      

Share or Research:

Share on FB Post to X LinkedIn 🤖 Ask AI about this