Тройная англо-русско-украинская раскладка

Практические рекомендации по настройке составных раскладок клавиатуры на примере настройки англо-русско-украинской раскладки. Настройка StarOffice 5.2 для работы с украинским языком.


Введение

Оговорюсь сразу - эта статья (я бы даже назвал её - памятка) не предназначена для глубокого изучения и понимания процессов настройки раскладок клавиатуры и локализации. Считайте её своим знакомым, у которого это работает. И вы пришли к нему подсмотреть всё это :-)

Одной из причин моей заинтересованности в этом вопросе стала необходимость настроить под Linux аналог MS Office с возможностью читать и писать документы в формате MS Word. На Украине это стало особенно актуальным после 1 сентября 2001 года, когда закон о защите авторских прав и интеллектуальной собственности вошел в силу в редакции, предусматривавшей конкретные виды достаточно сурового наказания за конкретные правонарушения.

На самом деле существует возможность по крайней мере ознакомиться со StarOffice 5.2 и OpenOffice.org, "не сходя с Windows" - они существуют и для этой платформы. При выборе офисного пакета рекомендуется рассмотреть оба этих варианта - OpenOffice [1] достаточно существенно доработан по сравнению со своим "предком" StarOffice (который также продолжает параллельно развиваться).

Всё, что описано далее, было проверено на двух российских дистрибутивах -- Linux Mandrake RE Spring 2001 (далее Spring 2001) [2] и ASPLinux 7.1 Standart Edition (далее ASPLinux) [3].

Почему только на них? Ничего другого под рукой не было -- да и ситуация с локализацией применительно к славянским языкам в них обстоит лучше, чем во многих других.

К сожалению, статья описывает практические рекомендации только по настройке англо-русско-украинской раскладки, но некоторые особенности будут общими и для других комбинаций.

В нашем случае упрощающим моментом является то, что рассматриваемые раскладки (точнее, генерируемые ими KeySym'ы) вполне умещаются в рамки принимаемых при локали uk_UA.KOI8-U; в других случаях может понадобиться применение уникодных локалей *.UTF-8 [4].

Если вы хотите более подробно узнать о методах настройки, то смотрите ссылки по этой теме [5-7]. В общем, не стоит обращать внимание на старый (англоязычный) вариант Cyrilllic-HOWTO; в подавляющем большинстве случаев имеет смысл использование современного XKB вместо устаревшего Xmodmap.

И ещё. Огромное спасибо Михаилу Шигорину за поддержку и объяснения по настройке клавиатуры. Без его помощи я бы не справился.

Настройка консоли

Проблем с настройкой en/ru/ua раскладки не возникает - она идёт "из коробки" в обоих дистрибутивах. Для правильного ввода и отображения символов в консоли вам нужно лишь настроить (проверить) два конфигурационных файла:

/etc/sysconfig/i18n
/etc/sysconfig/keyboard

Первый отвечает за вывод, второй за ввод данных. Вот примеры этих файлов (как в свежеустановленной "по-украински" системе):

/etc/sysconfig/i18n:
SYSFONT=UniCyr_8x16
SYSFONTACM=koi8-u
LANG=uk_UA
LANGUAGE=uk_UA


<!>Обратите внимание на следующее! $SYSFONT указывает на файл со шрифтами -- "$SYSFONT.psf.gz". Он располагается в каталоге /etc/sysconfig/console . Если вы хотите использовать другой шрифт, то скопируйте его сюда из каталога /usr/lib/kbd/consolefonts. <!>То же самое относится и к $SYSFONTACM. Эта переменная указывает на файл "$SYSFONTACM.acm.gz". Он тоже должен находится в каталоге /etc/sysconfig/console . Все acm-файлы расположены в каталоге /usr/lib/kbd/consoletrans .

/etc/sysconfig/keyboard:
KBCHARSET=koi8-u
BACKSPACE=Delete
KEYTABLE=ua


<!>Переменная $KEYTABLE указывает на файл с раскладкой клавиатуры и, в отличие от переменных $SYSFONT и $SYSFONTACM, подразумевает, что файл $KEYTABLE*map.gz должен распологаться в каталоге "/usr/lib/kbd/keymaps/i386/*/$KEYTABLE*map.gz".

Таблица ua.kmap.gz позволяет переключать раскладки при помощи правого Ctrl и Alt: Alt_R -> KOI8-U. Alt_R снова -> English. Ctrl_R -> KOI8-R. Ctrl_R снова -> English. Ctrl_R -> KOI8-R. Alt_R -> KOI8-U. Alt_R снова -> KOI8-R. Ctrl_R снова -> English.


Если вы привыкли к тому, чтобы у вас сообщения, пункты меню и т.д. выводились на другом языке, то добавьте в файл /etc/sysconfig/i18n следующую строку:

LC_MESSAGES=ru_RU.KOI8-R # сообщения на русском или
LC_MESSAGES=C # сообщения на английском

Минимальную информацию о переменных окружения LC_XXX, отвечающих за настройку локализации, можно получить, набрав команду

man -a locale

Вариант конфигурационного файла /etc/sysconfig/i18n, который предложил Михаил со словами "мне нужен англоязычный интерфейс для русскоязычного пользователя, регулярно работающего с украинскими документами", выглядит так:

SYSFONT=UniCyr_8x16
SYSFONTACM=koi8-u
LANGUAGE=ru_RU.KOI8-R
LANG=ru_RU.KOI8-R
RPM_INSTALL_LANG=ru_RU.KOI8-R:uk_UA:uk LC_CTYPE=uk_UA.KOI8-U
LC_NUMERIC=C
LC_TIME=C
LC_COLLATE=uk_UA.KOI8-U
LC_MONETARY=C
LC_MESSAGES=C
LC_ALL=

Настройка X Window

Теперь перейдём к настройке "иксов". Сразу отмечу, что воспользоваться программой kxkb для настройки раскладок клавиатуры в KDE не получится. Русский она поддерживает, а вот со всем остальным у неё проблемы. Это и к лучшему, т.к. в случае удачи позволило бы использовать этот метод только для KDE. Рассмотрим desktop-независимый 8-) вариант настройки клавиатуры.

Для настройки нам понадобятся файл раскладки клавиатуры под X. Либо <rua.tar.gz> - эту раскладку предоставил Михаил Шигорин [8]. Либо, если вы привыкли к ruwin-раскладке, <ru_UA.tar.gz> - эта раскладка поставляется с ASPLinux. Если вы воспользуетесь ею, то проверьте в ней строку, содержащую слово include. Эта раскладка содержит ошибку. Строку

include "ur(basic)"
надо заменить на
include "ru_UA(basic)"


<!>Тут важно, чтобы имя файла раскладки совпадало с тем, что прописано в строке include "...(basic)". <?>Интересно, в ASPLinux 7.2 эта ошибка исправлена или нет?

Далее нас будет интересовать один из следующих конфигурационных файлов:

/etc/X11/XF86Config
/etc/X11/XF86Config-4

Первый файл - это конфигурация XFree86-3.x, второй -- XFree86-4.x (определяется при помощи X -version).

В них нас интересует раздел "Keyboard" (Section "Keyboard") и переменная XkbLayout.

Пропишите следующее:

XkbLayout "rua"
или
XkbLayout "ru_UA"

Кроме этого проверьте каталог /etc/X11/xkb . Если в нём находится файл с именем X0-config.keyboard (думаю, X0 может менятся на X1,X2 и т.д.), то в нём пропишите (замените) строку:

Layout = "rua"
или
Layout = "ru_UA"

Кто именно сгенерировал этот файл - не знаю. Он появился недавно на моей машине и я наткнулся на него, когда писал эту статью - почему-то не хотела корректно работать раскладка, хотя в /etc/X11/XF86Config и /etc/X11/XF86Config-4 я исправил значение XkbLayout. Кроме этого, если вы экспериментировали с настройкой клавиатуры в KDE и пробовали настроить kxkb, то для того, чтобы раскладка заработала, вы должны удалить файл

~/.kde/share/config/kxkbrc


<!>Это важно, т.к. даже если kxkb не запущен, то KDE всё равно перехватывает управление клавиатуры и не позволяет корректно работать вашей раскладке.

Сделали? Запускайте X.

Настройка KDE.

Запустите kcontrol (KDE Control Center). Выберите закладку "Индекс". Выберите пункт "Personalization->Country & Language". Обязательно укажите тип кодировки KOI8-U. Параметры "Страна" и "Язык" по вашему усмотрению. Перезапустите KDE.

Готово. Можно проверить. Запустите kwrite. Это простенький текстовый редактор. Попробуйте переключать клавиатуру при помощи Ctrl_R+Shift_R.


Кстати, многие рекомендуют переходить с комбинаций на Caps Lock в качестве удобного и быстрого переключателя раскладок. <!-- по крайней мере Лёня Кантер и я :) -- М.Ш. -->

Для визуального контроля за выбранной раскладкой используйте программу xxkb - она вешает на каждое окно флажок и при переключении раскладки меняет его; пакет xxkb идёт в поставке в обоих дистрибутивах. Установив его, положите файл /usr/share/doc/xxkb-<версия>/XXkb.ad в ваш домашний каталог под именем ".xxkbrc", исправив

XXkb.mainwindow.enable: yes
на
XXkb.mainwindow.enable: no

Замените su48.xpm и su15.xpm на ua48.xpm и ua15.xpm - это позволит выводить украинские флажки при выборе украинского языка. Если окажется, что при выборе русского языка у программа показывает украинский флажок, то поменяйте местами номера групп или ссылки на xpm-файлы.


<!>Если хочется, чтобы эти настройки были общесистемными, отредактированный файл нужно поместить в /usr/X11R6/lib/X11/<locale>/app-defaults/XXkb .

О более тонкой настройке xxkb читайте в документации о нём в каталоге /usr/share/doc/xxkb-<версия>.

Настройка StarOffice 5.2

StarOffice 5.2 "понимает" русский язык и корректно с ним работает. К сожалению, с украинским дела обстоят несколько иначе. В кодировке KOI8-U он позволяет набирать символы, присущие только украинской раскладке. Как это побороть? Обратимся к "Руководству по русификации StarOffice 5.1a" [9], автор - Леонид Кантер. Из всего того, что он предлагает мы воспользуемся только одним - в стартовом скрипте StarOffice (/opt/office52/program/soffice) допишем две строчки в начале (после комментариев):

LANG=ru_RU.CP1251
_XKB_CHARSET=MICROSOFT-CP1251


<!>Для большей функциональности можно скачать и установить ttf-шрифты со странички Microsoft Typography [10].

Теперь StarOffice, в отличие от других приложений, будет работать в кодировке CP1251. На его внешнем виде это никак не скажется, за исключением русских (украинских) букв в заголовке окна (если вы назовёте документ, используя кириллицу). Заголовок окна будет выводится в той кодировке, которая установлена в /etc/sysconfig/i18n - скорее всего, KOI8-U.


<!>Хотя никто вам не мешает выбрать кодировку для всей системы CP1251 и работать в ней. Это удобно в том случае, если вы подключены к сети, в которой много компьютеров с ОС Windows.

Настройка других wm

Т.к. я пользуюсь как рабочей средой только KDE, то подсказать, как заставить работать с украинским другие оболочки, не в состоянии. Теоретически, если программа корректно работает с локалью, то она должна без проблем вводить и отображать все символы. Если же за какой-либо из современных программ наблюдается обратное и вы уверены, что ничего сами не сломали - пользоваться программой следует с осторожностью, потому что такие моменты обычно "говорят" об общем качестве кода и широте использования.

Александр Куприн <ru_classic@mail.ru>

Мелкие правки -- Михаил Шигорин <mike@altlinux.ru>


Ссылки

[1] http://openoffice.org

OpenOffice.org -- открытый офисный пакет

[2] http://altlinux.ru

ALT Linux

[3] http://asplinux.ru

ASP Linux

[4] http://linuxdoc.org/HOWTO/Unicode-HOWTO

Unicode HOWTO

[5] http://step.kosnet.ru/Lib/Linux/MHOWTO/Intkeyb.html

Настройка интернациональных клавиатур в Linux (Unix)

[6] http://gazette.linux.ru.net/lg64/articles/rus-sipos.html

Juraj Sipos, Настройка международной клавиатуры с помощью Xmodmap

[7] http://www.tsu.ru/~pascal/other/xkb/

Страница Ивана Паскаля (автора xxkb) по XKB

[8] http://www.linux.kiev.ua/materials/archives/xkb-rua-0.2.tar.gz

en/ru/ua раскладка М.Ш.

[9] http://www.linux.kiev.ua/materials/archives/ru_UA.tar.gz

en/ru/ua раскладка из ASP Linux 7.1

[10] http://blackcatlinux.com/StarOffice/

Руководство по русификации StarOffice

[11] http://www.microsoft.com/typography/fontpack/

Microsoft Typography

Используются технологии uCoz