Руссификация консоли RedHat 9, работающей в utf-8 Версия для печати   


название статьи: руссификация utf-8 консоли в RedHat 9
версия: 0.1
ключевые слова для поиска: русский руссификация консоль utf-8 utf8 redhat red hat 9

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

1. Общие соображения.
При выборе во время инсталляции языком по умолчанию русского мы получаем русскоговорящую консоль. Т.е. те же шелл, MC, vi выводят читабельные русские сообщения. Однако при попытке ввести что-то по-русски на консоли появляется всякий мусор. Отсюда следует, что из рассмотрения можно удалить консольные шрифты (вместе с SFM) и ACM (хотя при работе в режиме utf драйвер клавиатуры использует свою собственную таблицу перекодировки utf-unicode - в unicode работает ядро). Остается только раскладка.

2. Файл раскладки клавиатуры.
Один из вариантов строки, обозначающей реакцию ядра на нажатие какой-либо клавиши имеет следующий формат:

keycode = num plain keysym keysym keysym ...

Здесь keycode - служебное слово, num - код клавиши (заметьте - это не то же самое, что сканкод), plain - сам символ или его код, keysym - это то, как нужно поступить ядру при обнаружении кода num - здесь может быть другой символ, строка или действие. keysym'ов может быть определено до 256, однако за каждый keysym'ом (точнее - за каждой позицией после num) закреплен модификатор. В данный момент в драйвере определено только 8 модификаторов - это Shift, AltGr (или правый Alt), Control, Alt, ShiftL, ShiftR, CtrlL CtrlR. Они перечислены в порядке соответствия их своим местам, т.е. первое место соответствует самому символу без модификаторов, второе место - нажатию клавиши num с клавишей Shift (любой), третье - с клавишей AltGr (правый альт), четвертое - с клавишей Control и т.д.

Я понял это так. Не претендую на корректность, поэтому если я все-таки не прав - поправьте пожалуйста.

3. Действия.
Вооружившись этими соображениями и списком кодов русских символов в utf-8, я открыл свой файл раскладки клавиатуры (/lib/kbd/keymaps/i386/qwerty/ru_win.map.gz). Выяснилось, что он оставлен без изменеий со времен использования koi8-r, т.е там прописаны старые коды, которые отображаются как раз на тот мусор, который появляется в консоли при включении русской раскладки (коды от C0 до FF). Поэтому я сделал предположение, что изменение этих кодов на utf-ные значения исправит положение. Так и оказалось. Исправленный файл раскладки лежит . Достаточно только подменить им уже имеющийся и потом либо перелогиниться, либо загрузить раскладку вручную при помощи loadkeys.

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

4. Замечания.
Тем не менее, набирать и просматривать русский текст с помощью MC не получится - он не понимает русского текста в utf-8. Однако vi ведет себя корректно. Остальные программы не пробовал.

Как это работает в RH 8 я не проверял. По идее должно работать нормально.

При желании прицепить какую-нибудь специфичную клавишу со своей клавиатуры для выяснения ее кейкода воспользуйтесь программой showkey.

5. Документация.
man keymaps
man loadkeys
man dumpkeys

6. Автор.
San АНДРЕЕВ


Обоснованные замечания и исправления приветствуются.

Опубликовал: San АНДРЕЕВ
Дата: 23.07.2003
постоянный адрес статьи: http://linuxportal.ru/entry.php/P20_0_3_0/