The linux cyrillic howto (rus) кирилізації текстового режиму

# Linux HowTo (як зробити)
# Книги та керівництва
# Матеріали англійською мовою

Кирилізації текстового режиму - найпростіший спосіб відображати і вводити символи кирилиці.

Нижче я опишу спосіб, як "впоратися" з драйвером Linux консолі. Тому, якщо ви намагаєтеся русифікувати консоль в іншій системі, то не чекайте, що описані прийоми будуть у ній працювати. Натомість проконсультуйтеся з керівництвом по драйверу терміналу і пошліть мені будь-яку інформацію, яку ви знайдете. В цьому випадку я зможу включити її в подальші версії цього документа.

Для специфічної інформації, що стосується вашого дистрибутива, вам слід звернутися до розділу кирилізації дистрибутивів.

Консольний драйвер Linux - прекрасний зразок добре настроюється програмного забезпечення. Він може змінювати як шрифти, так і розкладки клавіатури. Для специфічної інформації, що стосується вашого дистрибутива, вам слід звернутися до розділу кирилізації дистрибутивів.

Щоб налаштувати консоль, ви можете скористатися одним з двох описаних нижче пакетів: consoletools (Див. Розділ consoletools) або kbd (Див. Розділ kbd).

У ранніх версіях Linux альтернативи kbd не було, але в свіжих дистрибутивах замість kbd зараз можна використовувати пакет consoletools. Цей пакет кардинально відрізняється від свого попередника - пакета kbd (наприклад, в ньому немає команди setfont - для сумісності використовується емулює скрипт).

Щоб перевірити, який з двох пакетів присутній у вашій системі, слід спробувати виконати команду consolechars. Якщо вона успішно виконалася - тоді у вас є пакет console-tools; якщо ж ні - у вас швидше за все є команда setfont і значить, встановлений пакет kbd.

Вам буде корисно знати загальну схему роботи консольного драйвера. Коли деяка призначена для користувача програма запитує консольний драйвер вивести на екран символ, який має код А, то консольний драйвер спочатку шукає код А в таблиці ACM (Application Charset Map). З таблиці він дізнається, який код Б згідно кодуванні Unicode відповідає коду А. Ви визначаєте використовувану вами кодування за допомогою таблиці ACM. Далі консольний драйвер шукає код Б в таблиці SFM Screen Font Map. Таблиця SFM визначає кодування використовуваного шрифту подібно до того, як ACM визначає вашу кодування. Від SFM консольний драйвер дізнається, який символ активного шрифту має код Б згідно Unicode і потрібно вивести на екран.

Існують дві важливі модифікації цієї схеми.

Апаратні обмеження сучасних комп'ютерів не дозволяють використовувати шрифти, які мають більше 512 символів. Звідси очевидно, що іноді консольний драйвер не зможе знайти код Б в SFM. Тоді йому на допомогу приходить так звана fallback таблиця. Ця таблиця визначає для коду Б можливі його апроксимації Б1, Б2. Наприклад, якщо Б є код символу "ліва подвійна кутова лапка", то можливо Б1 буде кодом символу "ліва одинарна кутова лапка", а Б2 буде просто кодом символу "<". Другим часто используемым применением fallback таблицы является аппроксимация псевдографических символов посредством других. Например, если используемый шрифт не имеет псевдографических символов, и вы заставите консольный драйвер использовать таблицу graph.fallback. то он начнёт чертить окна подобно следующей картинке:

На екрані це виглядає не так вже й погано.

Другою важливою модифікацією загальної схеми роботи консольного драйвера є режим Unicode. Описана вище схема відноситься до 8ми бітовому режиму роботи драйвера. Коли ж він знаходиться в режимі Unicode, то він очікує, що призначені для користувача програми використовують Unicode і очікує отримувати від них коди символів відповідно до Unicode. Тому в цьому режимі ACM не використовується. Ви завжди можете перемикати консольний драйвер з 8ми бітного режиму в Unicode і назад за допомогою команд unicode_start і unicode_stop.

Можливо, у вас з'явився наступне питання: а навіщо потрібна вся ця складна процедура? Що, якщо я буду використовувати шрифти, які мають використовувану мною кодування? Це можливо, але виникають деякі ускладнення. Вам потрібно сказати програмами, що псевдографічні символи в шрифті вже знаходяться на інших місцях. І навіть якщо ви примудрилися зробити це за допомогою спеціального термінального типу (як наприклад linux-koi8r), то з'явиться друга (вже нерозв'язна) проблема - через апаратних властивостей VGA, горизонтальна псевдографіка вийде з розривами, якщо символи псевдографіки в шрифті не схильні на тих же позиціях, що і в кодуванні cp437 (розташування псевдографіки в cp866 ідентично cp437). Тому рекомендується використовувати шрифти, які мають кодування на основі cp437 (cp866).

Перш ніж приступити до справи, розберемося з 8-бітовим режимом. Не завжди консольний драйвер Linux вмів працювати з Unicode. Звичайно, тоді не існували також і ACM, і SFM. Замість них використовувалася 8-бітова екранна таблиця перекодування (screen map). Це була просто таблиця для перекладу від одного кодування (використовуваною програмою) в іншу (кодування шрифту). Наприклад, koi2alt.trans переводить коди KOI8-R в коди cp866. Для сумісності тепер 8-бітовий screen map емулюється за допомогою спеціальної таблиці ACM.

Установка кирилиці за допомогою пакетів console-tools і kbd зазвичай складається з:

  1. Налаштування екранного шрифту і SFM. Це робиться за допомогою програми consolechars (пакет console-tools) або setfont і mapscrn (пакет kbd).
  2. Налаштування ACM (або 8-бітової екранної таблиці перекодування) та fallback-таблиці.
  3. Завантаження відповідної розкладки клавіатури за допомогою програми loadkeys.

Більшість дистрибутивів дозволяє встановлювати кирилицю за замовчуванням під час завантаження.

Файли шрифтів зазвичай знаходяться в каталогах / usr / share / consolefonts або / usr / lib / kbd / consolefonts, таблиці ACM, SFM і fallback в / usr / share / consoletrans, клавіатурні розкладки в / usr / share / keymap / i386 / qwerty.

Нижче описано, як встановити російську клавіатурну розкладку. Тут не використовується SFM і fallback таблиць, а замість ACM використовується 8-бітова екранна таблиця перекодування. Це робиться в основному з-за того, що у наявних в kbd і console-tools шрифтів для cp866 немає таблиць SFM. Якщо ви хочете скористатися всіма можливостями консольного драйвера Linux і радіти хорошим шрифтів, то використовуйте пакет console-tools-cyrillic Віктора Вагнера (Див. Розділ Cyrillic console tools).

У тому випадку, якщо ваш дистрибутив використовує пакет consoletools. вам необхідно виконати наступні дії (природно, ці команди не слід виконувати дослівно):

Після виконання цих команд і завантаження відповідних файлів ви можете перемикати розкладку клавіатури для введення кириличних символів за допомогою правого Control (іноді перемикання за замовчуванням "вішається" на Alt або Caps Lock).

На жаль, шрифти і клавіатурні розкладки, що поставляються разом з цими пакетами, не дозволяють скористатися всіма можливостями консольного драйвера. Тому я рекомендую вам використовувати пакет console-tools-cyrillic Віктора Вагнера (Див. Розділ Cyrillic console tools).

Для настройки слід насамперед слід прочитати файл README. який йде в поставці. Для роботи з пакетом необхідні утиліти consoletools (Див. Розділ consoletools), втім, екранні шрифти можна використовувати і з останніми kbd.

Всі шрифти зроблені на базі альтернативної кодування (CP866). Чому? Тому що використання будь-якої іншої кодування російських букв в якості фізичної в текстовому режимі VGA призводить до того, що горизонтальна псевдографіка виходить з розривами. Це апаратне властивість VGA, яке ніяк не лікується. Єдиний вихід - використовувати шрифти, у яких псевдографіка розташована на тих же позиціях, що і в cp437.

У пакет входять сім комплектів шрифтів різного ступеня придатності і функціональності. Всі шрифти містять в собі таблицю відображення в unicode.

У дистрибутив пакета включені кириличні таблиці перекодування з поширених кодувань російської, білоруської, болгарської, сербської та української мов в unicode. Використання цих таблиць перекодування спільно зі шрифтами, включеними в цей пакет, дозволяє вам налаштувати консоль в будь-яку необхідну кодування кирилиці.

У пакет включена комплект для генерації клавіатури, заснований на ідеях, запропонованих Кирилом Злобіним ([email protected]). Розкладки клавіатури виходять за допомогою обробки препроцесором C (/ usr / bin / cpp) файлу кодування і власне файлу розкладки. Використання макросів для описів клавіш дозволяє істотно повніше ніж в більшості поширених розкладок визначити комбінації Alt-клавіша, Ctrl-клавіша і т.д. як в російській, так і в латинській режимах.

Для настройки консолі я використовую команди:

Для створення розкладки console_russian.map виконую команду:

Це microsoft розкладка, перемикання здійснюється за допомогою додаткової клавіші Windows "клавіші системного меню".

P.S. Для українізації замість koi8-r.acm треба підставити koi8-u

Пакет kbd містить утиліти управління клавіатурою, крім цього, з ним поставляється широкий вибір шрифтів і розкладок.

Установка кирилиці за допомогою kbd зазвичай складається з:

  1. Завантаження відповідної розкладки клавіатури за допомогою програми loadkeys. Практично в кожному дистрибутиві можна встановити розкладку клавіатури, яку система завантажує за замовчуванням під час завантаження, за допомогою відповідної програми настройки (наприклад, для RedHat - це / usr / sbin / kbdconfig). Ви також можете просто запустити loadkeys з вашого
/.profile або зробити це руками.
  • Налаштування екранного шрифту. Це робиться за допомогою програми setfont. Файли шрифтів знаходяться в / usr / lib / kbd / consolefonts. УВАГА: У старих версіях Linux запуск програми setfont під X-Window міг завісити систему. Зараз в цьому випадку друкується повідомлення про помилку.
  • Якщо ви є прихильником програм, що працюють в текстовому режимі і використовують переваги псевдографіки PC (таких як Midnight Commander), то ви можете віддати перевагу використовувати шрифти з CP866 кодуванням і консольної розкладкою (console character map). Це означає, що ваша консоль відображає CP866 шрифти, але все кириличні символи, відповідні KOI8-R кодування, відповідним чином відображаються в CP866 і тому виглядають правильно. Перевага цього методу полягає в тому, що він дозволяє використовувати псевдографічні символи кодування CP866.

    Нижче перераховані команди, які дозволяють досягти цього ефекту.

    При русифікації всіх консолей при завантаженні системи замість рядка

    слід використовувати рядок

    -- це зросійщує все термінали.

    Магічна послідовність необхідна для перекодування виведення символів на екран, якщо ви використовуєте CP866 шрифти. Вона працює, і цього достатньо для спокійного життя. Однак, якщо вам цікаво, то подивіться документацію до пакету kbd.

    Тепер ви, ймовірно, хочете перевірити правильність кирилізації консолі.

    Відповідним чином налаштуйте bash (розділ bash) або tcsh (розділ tcsh) - цей крок необхідний. увійдіть або його, потім натисніть праву клавішу Control. Перевірки, що ви можете правильно друкувати по-російськи. Клавіша 'q' повинна відповідати "й", "w 'відповідає" ц ", і т.д (qwerty-> йцукен).

    З тієї причини, що на даний момент існує безліч самих різних дистрибутивів Linux. клавіша перемикання в консолі може бути інший. Зазвичай це правий Alt або Caps Lock - це залежить від розкладки клавіатури.

    Якщо у вас виникли непередбачені проблеми, то найкраще повернутися до рідної (тобто US) розкладці. Для цього виконайте такі дії:

    УВАГА: У старих версіях Linux консольний драйвер не здатний зберегти цей стан, коли передається управління X-Window. Отже, після того, як ви вийшли з X (або перемикаєтеся на консоль), ви повинні перезавантажити російський шрифт.

    Швидше за все, на консоль був скопійований якийсь двійковий файл, де випадково зустрілася перемикає ESC -послідовність. тоді:

    набрати наосліп, або з працюючою консолі:

    Перемикання на downloaded font

    (Можливо, ще доведеться перевантажити шрифти, але це дивлячись як консоль зірвало.)

    Якщо вивалилася якась програма, яка використовує curses, то простіше

    У RedHat все це роблять reset; setsysfont

    reset - з ncurses

    Див. 'Man console_codes' і 'man stty'

    Схожі статті

    Copyright © 2024