Next Previous Contents

3. Nastrojka tekstovoj mody

Nastrojka tekstovogo rezhima - samyj prostoj sposob pokazyvat' i vvodit' simvoly kirillicy.

Nizhe ya opishu sposob, kak "spravit'sya" s drajverom Linux konsoli. Poetomu, esli vy pytaetes' rusificirovat' konsol' v drugoj sisteme, to ne ozhidajte, chto opisannye priemy budut tam rabotat'. Vzamen prokonsul'tirujtes' s rukovodstvom po drajveru terminala i poshlite mne lyubuyu informaciyu, kotoruyu vy najdete. V etom sluchae ya smogu vklyuchit' eto v dal'nejshie versii etogo dokumenta.

Dlya specificheskoj informacii kasayushchejsya vashego distributiva vam sleduet obratit'sya v razdel Kirillizaciya distributivov.

3.1 Konsol'nyj drajver Linux

Konsol'nyj drajver Linux - prekrasnyj obrazec horosho nastraivaemogo programmnogo obespecheniya. On mozhet menyat' kak shrifty, tak i raskladki klaviatury. Dlya specificheskoj informacii kasayushchejsya vashego distributiva vam sleduet obratit'sya v razdel Kirillizaciya distributivov.

CHtoby nastroit' konsol', vy mozhete vospol'zovat'sya odnim iz dvuh opisannyh nizhe paketov: console-tools (Sm. razdel consoletools) ili kbd (Sm. razdel kbd).

V rannih versiyah Linux al'ternativy kbd net, no v svezhih distributivah vmesto kbd sejchas modno ispol'zovat' paket consoletools. |tot paket kardinal'no otlichaetsya ot svoego predshestvennika - paketa kbd (naprimer v nem net komandy setfont - dlya sovmestimosti ispol'zuetsya emuliruyushchij skript).

CHtoby proverit', kakoj iz dvuh paketov prisutstvuet v vashej sisteme, sleduet poprobovat' vypolnit' komandu consolechars. Esli ona uspeshno vypolnilas' togda u vas est' paket console-tools, ezhe li net, to u vas skoree vsego imeetsya komanda setfont i znachit installirovan paket kbd.

Nemnogo teorii

Vam budet polezno znat' obshchuyu shemu raboty konsol'nogo drajvera. Kogda nekotoraya pol'zovatel'skaya programma zaprashivaet konsol'nyj drajver vyvesti na ekran simvol imeyushchij kod A, to konsol'nyj drajver snachala ishchet kod A v tablice ACM (Application Charset Map). Iz tablicy on uznaet kakoj kod B soglasno kodirovki Unicode sootvetstvuet kodu A. Vy opredelyaete ispol'zuemuyu vami kodirovku posredstvom tablicy ACM. Dalee konsol'nyj drajver ishchet kod B v tablice SFM Screen Font Map. Tablica SFM opredelyaet kodirovku ispol'zuemogo shrifta podobno tomu kak ACM opredelyaet vashu kodirovku. Ot SFM konsol'nyj drajver uznaet kakoj simvol aktivnogo shrifta imeet kod B soglasno Unicode i nuzhno vyvesti na ekran.

Sushchestvuyut dve vazhnye modifikacii etoj shemy.

Apparatnye ogranicheniya sovremennyh komp'yuterov ne pozvolyayut ispol'zovat' shrifty imeyushchie bolee 512 simvolov. Otsyuda ochevidno, chto inogda konsol'nyj drajver ne smozhet najti kod B v SFM. Togda emu na pomoshch' prihodit, tak nazyvaemaya, fallback tablica. |ta tablica opredelyaet dlya koda B vozmozhnye ego approksimacii B1, B2,... Naprimer esli B yavlyaetsya kod simvola "levaya dvojnaya uglovaya kavychka", to vozmozhno B1 budet kodom simvola "levaya odinarnaya uglovaya kavychka", a B2 budet prosto kod simvola "<". Drugoe chasto ispol'zuemoe primenenie fallback tablicy yavlyaetsya approksimaciya psevdograficheskih simvolah posredstvom drugih. Naprimer esli ispol'zuemyj shrift ne imeet psevdograficheskih simvolah i vy skazhete konsol'nomu drajveru ispol'zovat' tablicu graph.fallback, to on nachnet chertit' okna podobno sleduyushchej kartinke:


+==================.
|   Glavnoe menyu   |
+------------------+
| 1. tekst         |
| 2. grafika       |
.==================.

Na ekrane eto vyglyadit ne tak uzh i ploho.

Vtoraya vazhnaya modifikaciya obshchej shemy raboty konsol'nogo drajvera yavlyaetsya rezhim Unicode. Opisannaya vyshe shema otnositsya k 8mi bitovomu rezhimu raboty drajvera. Kogda zhe on nahoditsya v rezhime Unicode, to on ozhidaet, chto pol'zovatel'skie programmy ispol'zuyut Unicode i ozhidaet poluchat' ot nih kody simvolov soglasno Unicode. Poetomu v etom rezhime ACM ne ispol'zuetsya. Vy vsegda mozhete pereklyuchat' konsol'nyj drajver iz 8mi bitovogo rezhima v Unicode i obratno posredstvom komandah unicode_start i unicode_stop.

Vozmozhno u vas poyavilsya sleduyushchij vopros: a zachem nuzhna vsya eta slozhnaya procedura? CHto esli ya ispol'zuyu shrifty imeyushchie tu zhe samuyu ispol'zuemuyu mnoyu kodirovku? |to vozmozhno, no voznikayut nekotorye oslozhneniya. Vam nuzhno skazat' programmam, chto psevdograficheskie simvoly v shrifte uzhe nahodyatsya na drugih mestah. I dazhe esli vy uhitrites' sdelat' eto posredstvom special'nogo terminal'nogo tipa (kak naprimer linux-koi8r), to poyavitsya vtoraya (uzhe nerazreshimaya) problema - iz-za apparatnyh svojstv VGA, gorizontal'naya psevdografika poluchitsya s razryvami, esli simvoly psevdografiki v shrifte ne raspolozheny na teh zhe poziciyah, chto i v kodirovke cp437 (Raspolozhenie psevdografiki v cp866 identichno cp437). Poetomu rekomenduetsya ispol'zovat' shrifty imeyushchie kodirovku na osnove cp437 (cp866).

Prezhde chem pristupit' k delu, v nachale razberemsya s 8-bitovym rezhimom. Ne vsegda konsol'nyj drajver Linux umel rabotat' s Unicode. Konechno togda ne sushchestvovali takzhe i ACM, i SFM. Vmesto nih ispol'zovalas' 8-bitovaya ekrannaya tablica perekodirovki (screen map). |to byla prosto tablicu dlya perevoda ot odnoj kodirovki (ispol'zuemoj programmoj) v druguyu (kodirovku shrifta). Naprimer koi2alt.trans perevodit kody KOI8-R v kody cp866. Dlya sovmestimosti, teper' 8-bitovyj screen map emuliruetsya s pomoshch'yu special'noj tablicy ACM.

Ustanovka kirillicy s pomoshch'yu paketov console-tools i kbd obychno sostoit iz:

  1. Nastrojki ekrannogo shrifta i SFM. |to delaetsya s pomoshch'yu programmy consolechars (paket console-tools) ili setfont i mapscrn (paket kbd).
  2. Nastrojki ACM (ili 8-bitovoj ekrannoj tablicy perekodirovki) i fallback-tablicy.
  3. Zagruzki sootvetstvuyushchej raskladki klaviatury s pomoshch'yu programmy loadkeys.

Bol'shinstvo distributivov pozvolyaet ustanavlivat' kirillicu po umolchaniyu vo vremya zagruzki.

Fajly shriftov obychno nahodyatsya v /usr/share/consolefonts ili /usr/lib/kbd/consolefonts, tablicy ACM, SFM i fallback v /usr/share/consoletrans, klaviaturnye raskladki v /usr/share/keymap/i386/qwerty.

Nizhe opisano kak ustanovit' russkuyu klaviaturnuyu raskladku. Zdes' ne ispol'zuetsya SFM i fallback tablic, a vmesto ACM ispol'zuetsya 8-bitovaya ekrannaya tablica perekodirovki. |to v osnovnom iz za togo, chto u imeyushchihsya v kbd i console-tools shrifty dlya cp866 net tablic SFM. Esli vy hotite vospol'zovat'sya vsemi vozmozhnostyami konsol'nogo drajvera Linux i radovat'sya horoshim shriftam, to ispol'zujte paket console-tools-cyrillic Viktora Vagnera.

consoletools

Sam paket mozhno najti po adresu console-tools.

V sluchae, esli vash distributiv ispol'zuet paket consoletools, to vypolnite sleduyushchie dejstviya (estestvenno, eti komandy ne sleduet vypolnyat' doslovno):


foo="/mesto/gde/lezhat/vashi/konsol'nye/shrifty"
loadkeys $foo/ru.map
consolechars -v -f $foo/Cyr_a8x16 -m $foo/koi2alt

Posle vypolneniya etih komand i zagruzki sootvetstvuyushchih fajlov vy mozhete pereklyuchat' raskladku klaviatury dlya vvoda kirillicheskih simvolov s pomoshch'yu pravogo Control (inogda pereklyuchenie po umolchaniyu "veshaetsya" na Alt ili ).

K sozhaleniyu shrifty i klaviaturnye raskladki postavlyaemye vmeste s etimi paketami ne pozvolyayut vospol'zovat'sya vsemi vozmozhnostyami konsol'nogo drajvera. Poetomu ya rekomenduyu vam ispol'zovat' paket console-tools-cyrillic Viktora Vagnera.

kbd

Dovol'no mnogo distributivov Linux ustanavlivayut kbd kak obyazatel'nuyu chast' sistemy. Sam paket dostupen po adresu kbd.

Paket kbd soderzhit utility upravleniya klaviaturoj, krome etogo, s nim postavlyaetsya shirokij vybor shriftov i raskladok.

Ustanovka kirillicy s pomoshch'yu kbd obychno sostoit iz:

  1. Zagruzki sootvetstvuyushchej raskladki klaviatury s pomoshch'yu programmy loadkeys. Prakticheski v kazhdom distributive mozhno ustanovit' raskladku klaviatury, kotoruyu sistema zagruzhaet po umolchaniyu vo vremya zagruzki, s pomoshch'yu sootvetstvuyushchej programmy nastrojki (naprimer dlya Redhat eto /usr/sbin/kbdconfig). Vy takzhe mozhete prosto zapustit' loadkeys iz vashego ~/.profile ili sdelat' eto rukami.
  2. Nastrojki ekrannogo shrifta. |to delaetsya s pomoshch'yu programmy setfont. Fajly shriftov nahodyatsya v /usr/lib/kbd/consolefonts. VNIMANIE: V staryh versiyah Linux zapusk programmy setfont pod X-Window mog zavesit' sistemu. Sejchas v etom sluchae pechataetsya soobshchenie ob oshibke.

Esli vy yavlyaetes' priverzhencem programm, rabotayushchih v tekstovoj mode i ispol'zuyushchih dostoinstva PC psevdografiki (takih kak Midnight Commander), vy mozhete predpochest' ispol'zovat' shrifty s Alt kodirovkoj i konsol'noj raskladkoj (console character map). |to oznachaet, chto vasha konsol' otobrazhaet Alt shrifty, no vse kirillicheskie simvoly, sootvetstvuyushchie KOI8-R kodirovki, sootvetstvennym obrazom otobrazhayutsya v Alt i poetomu vyglyadyat pravil'no. Preimushchestvo etogo metoda zaklyuchaetsya v tom, chto on pozvolyaet ispol'zovat' psevdograficheskie simvoly Alt kodirovki.

Nizhe perechisleny komandy, kotorye pozvolyayut dostich' etogo effekta.


loadkeys /usr/lib/kbd/keytables/ru.map
setfont /usr/lib/kbd/consolefonts/Cyr_a8x16
mapscrn /usr/lib/kbd/consoletrans/koi2alt
# nizhe idet magicheskaya posledovatel'nost'
echo -ne "\033(K"

Pri rusifikacii vseh konsolej pri zagruzke sistemy vmesto strochki

echo -ne "\033(K"

sleduet ispol'zovat' strochku

for i in 1 2 3 4 5 6 7; do echo -ne "\033(K" > /dev/tty$i; done

- eto rusificiruet vse terminaly

Magicheskaya posledovatel'nost' neobhodima dlya perekodirovki vyvoda simvolov na ekran, esli vy ispol'zuete Alt shrifty. Ona rabotaet, i etogo dlya spokojnoj zhizni dostatochno. Odnako, esli vam lyubopytno, to posmotrite v dokumentaciyu k paketu kbd.

Proverka pravil'nosti kirillizacii konsoli

Teper' vy, veroyatno, hotite proverit' pravil'nost' kirillizacii konsoli.

Skonfigurirujte sootvetstvuyushchim obrazom bash (razdel bash) ili tcsh (razdel tcsh) - etot shag neobhodim, peregruzite ego, zatem nazhmite pravuyu klavishu Control. Udostoverites', chto vy mozhete pravil'no pechatat' po russki. Klavisha 'q' dolzhna sootvetstvovat' "j", 'w' sootvetstvuet "c", i t.d (qwerty->jcuken).

Po toj prichine, chto na dannyj moment sushchestvuet mnozhestvo samyh raznyh distributivov Linux, to klavisha pereklyucheniya v konsoli mozhet byt' drugoj - obychno eto pravyj Alt ili Caps Lock - eto zavisit ot raskladki klaviatury.

Esli u vas voznikli nepredvidennye problemy, to luchshe vsego vernut'sya k rodnoj (to est' US) raskladke. Dlya etogo vypolnite sleduyushchie dejstviya:

loadkeys /usr/lib/kbd/keytables/defkeymap.map
setfont /usr/lib/kbd/consolefonts/default8x16

VNIMANIE: V staryh versiyah Linux konsol'nyj drajver ne sposoben sohranit' eto sostoyanie, kogda peredaetsya upravlenie X-Window. Sledovatel'no, posle togo, kak vy vyshli iz X (ili pereklyuchaetes' na konsol'), vy dolzhny perezagruzit' russkij shrift.

CHto delat', esli "sletela" konsol'?

Skoree vsego na konsol' byl skopirovan kakoj-to dvoichnyj fajl, gde sluchajno vstretilas' pereklyuchayushchaya ESC-posledovatel'nost'. Togda:

Sbros terminala :

$ echo -ne "\033c"

nabrat' vslepuyu, ili s rabotayushchej konsoli:

# echo -ne "\033c" >/dev/ttyX

Pereklyuchenie na downloaded font

$ echo -ne "\033(K"

(vozmozhno, eshche pridetsya peregruzit' shrifty, no eto smotrya kak konsol' sorvalo...)

Esli vyvalilas' kakaya-to programma, kotoraya ispol'zuet curses, to proshche

$ stty sane

V RedHat vse eto delayut reset; setsysfont <ctrl-j>

reset - iz ncurses

Sm. 'man console_codes' i 'man stty'


Next Previous Contents