Subject: Re: [Netbsd-docs-ru] =?KOI8-R?Q?=F2=D5=D3=D3=CB=C9=CA_=D1=DA=D9?=
To: Mixa <mihael_s_2001@mail.ru>
From: Mike M. Volokhov <mishka@apk.od.ua>
List: netbsd-docs-ru
Date: 11/16/2004 14:55:06
On Tue, 16 Nov 2004 10:17:47 +0300
Mixa <mihael_s_2001@mail.ru> wrote:
> А что необходимо для реализации сабжа?
> http://guinness.cs.stevens.edu/pipermail/netbsd-docs-ru/2004-June/000007.html
> - этот совет что-то не помог... А так хотелось бы, в Х я работаю очень
> мало, в основном в консоли и хотелось бы читать почту, просматривать
> странички и писать тексты на великом и могучем.
ОК. Попробуем следующий рецепт.
1) Подразумевается, что имеется установленная NetBSD-2.0 или выше
(включая NetBSD-2.99.x a.k.a. current). Все операции, описанные ниже,
проводились на NetBSD 2.99.10 от 10/11/2004, так как я уже не имею под
рукой NetBSD 1.6.x.
2) Необходимы исходные файлы ядра NetBSD.
3) Необходимо использование wscons. Для этого в конфигурационном файле
ядра должны быть похожие строки:
wsdisplay* at ....
wskbd* at ....
...
pseudo-device wsmux ...
pseude-device wsfont ...
NB: Оговорюсь сразу, что я не разработчик wscons, и поэтому не могу
сказать, есть ли реальная необходимость в параметрах wscons (options WS*
в ядре) для того, чтобы появилась возможность переключать раскладки и
грузить шрифты. Возможно, это "options WSEMUL_VT100". На моей системе я
использовал настройки ядра GENERIC.
4) Суть проблемы в том, что если алфавит родного языка пользователя
*существенно* отличается от английского, то очень проблематично набирать
текст на "ридний мове", удерживая при этом клавишу переключения
раскладок. Для того, чтобы исправить эту ситуацию, на данный момент
нужно изменить драйвер wskbd с помощью следующего патча:
Index: wskbd.c
===================================================================
RCS file: /cvsroot/src/sys/dev/wscons/wskbd.c,v
retrieving revision 1.76
diff -u -r1.76 wskbd.c
--- wskbd.c 3 Jun 2004 19:04:58 -0000 1.76
+++ wskbd.c 16 Nov 2004 09:41:10 -0000
@@ -1590,7 +1590,7 @@
break;
case KS_Mode_switch:
- update_modifier(id, type, 0, MOD_MODESHIFT);
+ update_modifier(id, type, 1, MOD_MODESHIFT);
break;
case KS_Num_Lock:
Этот тривиальный патч меняет поведение драйвера при нажатии на клавишу,
определенную как "Mode_switch".
5) Пересобираем и устанавливаем новое ядро:
cd src/sys/arch/i386/conf
config GENERIC
cd ../compile/GENERIC
make dependall
make install
6) С системой не идут русские шрифты. Следовательно, нужно загрузить и
установить один из них, например, koi8-r-8x16.fnt из проекта FreeBSD:
загрузка файла .....
uudecode -p < /path/to/koi8-r-8x16.fnt > /usr/share/wscons/fonts/koi8r.816
7) Дальше все так, как описано в документации. При запуске нужно
загрузить шрифт и раскладку. Для этого добавляем следующие строки в файл
/etc/wscons.conf:
font koi8 - - iso /usr/share/wscons/fonts/koi8r.816
mapfile /usr/share/wscons/keymaps/pckbd.ru.koi8-r
8) Перезагрузка. Чтобы изменения в ядре и в настройках wscons вступили в
силу, достаточно перегрузится.
9) После перезагрузки нужно активировать шрифт на каком-нибудь
виртуальном терминале:
wsconsctl -dw font=koi8
10) И последний штрих - локализация приложений:
setenv LC_CTYPE ru_RU.KOI8-R # для C shell
export LC_CTYPE=ru_RU.KOI8-R # для Bourne shell
Проблемы и ньюансы текущей реализации wscons:
- Два последних шага нужно делать каждый раз после перезагрузки системы.
- При переключении видео режимов загруженный шрифт повреждается. Его
нужно заново перегружать с помощью wsconsctl. При этом нужно переключать
на шрифт, который не установлен текущим:
wsfontload -N koi8-1 -e iso /usr/share/wscons/fonts/koi8r.816
wsfontload -N koi8-2 -e iso /usr/share/wscons/fonts/koi8r.816
wsconsctl -dw font=koi8-1
.... mode change ....
wsconsctl -dw font=koi8-2
.... mode change ....
wsconsctl -dw font=koi8-1
.... and so on ...
- Я думаю, что Mode_switch лучше использовать с "блокировкой" (см.
патч), а текущее поведение драйвера переименовать в Mode_shift.
- раскладка /usr/share/wscons/keymaps/pckbd.ru.koi8-r хорошо подходит
для того, чтобы заменить пару слов в тексте, но набирать в ней большие
объемы... скажем, непривычно.
Если будет время, я попробую доработать wscons с учетом этих пунктов.
--
Михаил