Игорь Карпов, Дмитрий Карпов.
В файле /etc/rc.conf (для FreeBSD 2.2.*) или /etc/sysconfig (для FreeBSD 2.1.*) Надо найти раздел
############################################################## ### System console options ################################# ##############################################################
и установить (поправить) в нем значения следующих переменных:
keymap="ru.koi8-r" # keymap in /usr/share/syscons/keymaps/* keychange="61 Esc[K"
для клавиатуры; "Esc" означает, что на этом месте действительно должен стоять символ Escape с кодом 27 или 0x1B (см.раздел # General Russian setup for example:); а также
scrnmap="koi8-r2cp866" # screen map in /usr/share/syscons/scrnmaps/* font8x16="cp866b-8x16" # font 8x16 from /usr/share/syscons/fonts/* font8x14="cp866-8x14" # font 8x14 from /usr/share/syscons/fonts/* font8x8="cp866-8x8" # font 8x8 from /usr/share/syscons/fonts/*
для консоли (ряд строк раздела опущен, как не имеющих отношения к русскому); для разных текстовых режимов нужны разные фонты - 8x16, 8x14 или 8x8;
NB. В этих манипуляциях с фонтами вы можете заметить применение кодовой страницы 866. На самом деле это нужно лишь для того, чтобы символы псевдографики выглядели нормально (это связано с аппаратными особенностями видеосистемы PC). В целом, если вы не используете программ наподобии Midnight или Demos Commander'ов, можно смело опустить mapping koi8-r -> cp866, и, соответственно, использовать родные фонты koi-8r:
keymap="ru.koi8-r" font8x16="koi8-r-8x16" font8x14="NO" font8x8="NO"
(Здесь загружаются только фонты 8x16 - VGA, 80 колонок * 25 строк.) Переключатель русской/английской клавиатуры определяется в ru.koi8-r, по умолчанию - CapsLock (переключение заглавных/строчных при этом - Shift+CapsLock). Отказ от переопределения 61 -> Esc[K можно компенсировать изменением /etc/termcap и, для FreeBSD 2.2.*, перекомпиляцией его базы данных.
Все эти переменные, установленные в /etc/rc.conf (/etc/sysconfig), суть установки для команд vidcontrol и kbdcontrol. Если интересно, как они обрабатываются, смотрите /etc/rc.i386
В файле /etc/ttys в третьей колонке заменяем cons25 на cons25r или pc3r.
Все произведенные изменения в /etc/rc.conf и /etc/sysconfig будут действовать только после перезагрузки; в /etc/ttys - после перезагрузки или после посылки сигнала SIGHIP процессу /sbin/init (насколько я помню, он всегда идет под номером 1)
kill -SIGHIP 1
В зависимости от используемого shell'а (командного интерпретатора) надо установить значения переменных
LANG=ru_RU.KOI8-R MM_CHARSET=KOI8-R
и, в некоторых shell'ах надо будет экспортировать их. Это делается в стартовых скриптах каждого пользователя или в общих скриптах, запускаемых при входе в систему. Внесенные изменения возымеют действие после входа в систему.
Некоторые приложения могут некорректно работать с 8-битным тектом/вводом. К сожалению, невозможно дать один рецепт для всех приложений. Как правило, это несложно либо невозможно. :-) Смотрите manual pages соответствующего приложения.