Как работать в альтернативной русской кодировке (CP866) под LINUX (FAQ)
Так уж исторически сложилось, что большинство коммерческих UNIX имеют русскую
кодировку ISO8859-5, а некоммерческих (в том числе и LINUX) - KOI8. В мире DOS и
Windows распостранены кодировки CP866 и Windows-1251. Как быть, если возникла
необходимость руссификации LINUX в альтарнивной кодировки MS/DOS (CP866)?
- Как правильно руссифицировать LINUX в кодировке CP866?
- Описать корректно локаль (ru_RU.CP866), пересобрать
большую часть исходников LINUX с поддержкой этой локали, описать KBD с
поддержкой руссификации CP866, перекодировать или создать фонты, ...
Да. Видимо придется пойти более простым путем.
- Как руссифицировать консоль в CP866?
- Первым делом прочитать: /usr/doc/Cyrillic-HOWTO. Там
описана руссифиуация в KOI8 - правильно. Теперь устанавливаем загрузку
русского шрифта Cyr_a8x16 (он как ни странно в альтернативной
кодировке - видимо взят из досовских руссификаторов), перекодировку экрана
(mapscrn) не ставим никакую, клавиатурный драйвер загружаем
ru2.map. Добавим выдачу '\033(K` на экран и
все. Переключение рус/лат будет по правому <Alt>.
- Как сделать переключатель рус/лат правый <Ctrl>
вместо правого <Alt>?
- Найти строчку в файле ru2.map:
keycode 97 =
Control и заменить ее
на:
keycode 97 =
AltGr_Lock А строку:
keycode 100 =
AltGr_Lock заменить
на:
keycode 100 = AltGr
- А как сделать чтобы <Backspace> забивал символы, а
не выдавал "^H"?
- В файле ru2.map найти
строчку:
keycode 14 = BackSpace
BackSpace BackSpace BackSpace и заменить ее на
keycode 14
= Delete Delete Delete
Delete
- Что делать, если не выводится буква "Ы" а вместо нее
сточка сдвигается вправо?
- Символ "Ы" имеет в альтернативной кодировке код
0x9b и неверно интерпретируется консольным драйвером. Это
можно вылечить только пропатчив ядро следующим образом:
cd
/usr/src/linux/drivers/char редактировать файл
console.c запустить поиск строки на "128"
поставить комментарии Си на три
строчки: /* case
128+27: vc_state =
ESsquare;
return; */ снова запустить поиск на "128". В
строчках: && (c != 127 ||
disp_ctrl)
&& (c != 128+27); поставить комментарий и точку с
запятой: && (c != 127 ||
disp_ctrl); /*
&& (c != 128+27); */ больше строчки "128"
в этом файле быть не должно. Затеи пересобрать ядро и перегрузить
LINUX Данный патч проверялся на ядрах 2.0.XX и
2.2.XX
- А как увидеть русские имена в файловых системах MS-DOS и
Windows?
- Смонтировать файловые системы с оциями:
mount -t vfat -o
codepage=866,iocharset=cp866 /dev/hda1 /diskC или записать
свойства в файл /etc/fstab: /dev/hda1 /diskC vfat
defaults,codepage=866,iocharset=cp866 1 0 Чтобы увидеть русские
буквы при помощи ls нужно использовать флаг ls
-N Для mc необходимо установить в опциях экрана 8-bit
- А какие текстовые редакторы работают в альтернативной
кодировке?
- Хорошо работает с альрнативной (как и со всеми прочими) кодировкой
редактор ted. Он поволяе работать без руссификации клавиатуры, имеет поддержку
мыши, хороший русский хелп. Раотает в консольном и в графическом режимах,
причем в графическом режиме под X11 устанавливаются собственные русские фонты.
Составил: Алексей Шихарбеев, sav@ellips.ru Источник: www.mgul.ac.ru, 10.VIII.2002
|