Андрей Богатырев. Пакет кирилизации Solaris 2.3 From: "Andrew S. Bogatyirev (Soft Eng)" (abs@opentech.olvit.ru) ║ mailto:abs@opentech.olvit.ru Аннотация: ========== Данный документ описывает последовательность действий системного администратора по установке пакета русификации Open Windows для Solaris 2.3 и выше, а также функциональные возможности пакета. После инсталляции пакета вы можете прочесть эту инструкцию по команде man cyrillic Пакет поддерживает следующие кодировки: o КОИ-8 (RFC-1489) - которая используется в электронной почте (ISO 6937-8) сети RelCom, а также исторически содержится (ГОСТ 19768-74) в ряде русскоязычных программ для UNIX, (IBM CP-878) происходящих из фирмы "Демос". Недостаток этой кодировки тот, что буквы расположены не в алфавитном порядке (что не мешает авторам пакета использовать именно эту кодировку :). КОИ = Код Обмена Информацией. Смотри: xv $OPENWINHOME/share/images/cyr/koi8-r.gif o ISO 8859-5 - американский стандарт на русские буквы, принятый без какого-либо согласования с русскими программистами. Зато это стандарт. Смотри: xfd -fn timescyr-20 o Microsoft 1251 - кодировка, которая используется в Microsoft Windows. Де-факто стандарт на русскую кодировку в мире PC. Известна также под названием Cyrillic ANSI и IBM CP-1251 (Code Page 1251) (на самом деле это объединённый корпоративный стандарт IBM и Microsoft). o Упоминается также кодировка IBM CP-866, известная как "альтернативная кодировка для MS DOS", однако шрифты и раскладка клавиатуры для неё не поддерживаются. ВНИМАНИЕ! Данный пакет НЕ работает с Solaris 1.x, Solaris 2.0, 2.1, 2.2 ВНИМАНИЕ! ПОЛНЫЙ набор Adobe фонтов и полный набор всех перечисленных программ может быть получен только на специальных условиях. Обычный дистрибутив содержит сильно урезанный набор Adobe фонтов и программ. Автор также соласен выдать бесплатно исходные тексты отдельных утилит. АДРЕС ДЛЯ КОНТАКТОВ: abs@openwin.msk.su (Андрей Сергеевич Богатырёв - автор) balter@lvs.msk.su (Борис Альтерман - sales) ssc@decart.npi.msu.su (Игорь Лукьянов - sales) ОТВЕТСТВЕННОСТЬ: Автор не несёт ответственности за работоспособность поставляемого пакета в неоттестированных с согласия и с участием автора приложениях. Пользователь имеет право тестировать пакет на применимость в избранной им прикладной системе, и в случае неудачи ПРОСИТЬ автора о достижении совместимости. Пользователь не имеет права ТРЕБОВАТЬ этого и предъявлять претензии, поскольку: - пакет тестирован для Solaris и в нём гарантированно работает; - автор не имеет возможности (и желания) тестировать все на свете прикладные системы сам; - автор не может нести ответственности за ошибки в чужих системах; То есть автор не отвечает за использование пакета или его компонент для целей, не предусмотренных при его разработке, и не оговоренных специально с автором. Дополнительные возможности или область применения могут: - быть инициативой пользователя; - автор согласен оказать необходимые консультации и дать советы, а также оказать посильную помощь; - но не гарантирует этого и не отвечает за успех или неудачу данного мероприятия. ПОЛИТИКА РАСПРОСТРАНЕНИЯ: - Одна лицензия даёт вам право установки пакета - фонтов: на ОДНУ машину. - MOWcyrKit: на все машины в одной локальной сети. - Некоторая часть пакета является "народным достоянием" и может раздаваться из рук в руки без ограничений. - Шрифты и ряд программ представляют собой собственность их авторов и НЕ МОГУТ раздаваться свободно. Растровые шрифты разработаны Чуфаровским (ударение на 'о'). Масштабируемые шрифты разработаны фирмой "Параграф". - Ряд программ поставляется в исходных текстах. Вы имеете право модифицировать и улучшать их по своему усмотрению, однако автор выдвигает УСЛОВИЕ: вы должны сообщить ему о том, что вы сделали (а ещё лучше - и как сделали), дабы автор смог внести улучшения в оригинал и тем облагодетельствовать ВСЕХ пользователей этого пакета. - Обновлённые версии пакета прежние его покупатели могут получить бесплатно (но на свой носитель). Консультации - бесплатно. Пожелания принимаются с интересом (но нет гарантии, что они будут реализованы НЕМЕДЛЕННО). "Я делал этот пакет не для продажи, а для себя. Ежедневно им пользуюсь." Успехов! Андрей Богатырёв. =========================================================================== НЕТОЧНОСТИ: Пардон. Но кодировки КОИ-8 и ISO-8859-5 в области псевдографики выполнены не по стандарту. Масса неудачных решений принимается по историческим причинам: сначала "так было сделано", а после - лень переделывать. - Причина историческая: такие фонты и таблицы перекодировки были сделаны ещё до того, как я принял в свои руки весь этот проект. Плюс к тому: всё это было готово ещё до того, как появился RFC-1489. - В ISO-8859-5 вообще нет псевдографики. Кроме того, я не расчитывал на Украину и Белоруссию. - В PostScript фонтах псевдографики также просто нет. - В Relcom новости из FIDO гейтуются с PCшной псевдографикой. Фонты, используемые у нас, сохраняют эту псевдографику, тогда как RFC-1489 портит её. Таким образом, наша таблица перекодировки КОИ-8 <==> CP-866 соответствует той, которая стоит на шлюзе Relcom <==> Fido, хотя и не соответствует стандарту. - Порядок псевдографических символов в RFC-1489 продуман плохо, точнее говоря, не продуман вовсе. Он не опирается на CP-866, вводит свой собственный порядок, который, однако, весьма плох. Этот порядок соответствует Unicode, и, как обычно, придуман буржуями, которым было лень думать - лишь бы как. Мои соображения о том, как должна была бы выглядеть таблица псевдографики, вы можете увидеть на картинках xv $OPENWINHOME/share/images/cyr/idea1.gif xv $OPENWINHOME/share/images/cyr/idea2.gif - "koi8-r" (RFC-1700) есть неудачное название для codeset, поскольку в Solaris оконная система не в состоянии использовать такие имена. В паре ...-encoding-registry она требует, чтобы registry было цифрой, в то время как в "koi8-r" буква "r" - это буква, а не цифра! Иначе же этот фонт отвергается. Если всё это однажды вызовет у кого-нибудь неудобства, я готов изменить порядок букв в фонтах и таблицы перекодировки одного codeset в другой. Изменению подвергнутся: - раскладка символов в растровых и Type1 фонтах; - таблицы перекодировки из одной кодировки в другую и все программы (make'em), пользующиеся этими таблицами (все, кто создаёт и использует ctables.h); - раскладка псевдографики в termcap и terminfo; - возможны правки в locale; - смена спецсимволов (вроде Номер и Параграф) в groff (так как в фонтах они могут сдвинуться на иные позиции); - естественно, произойдёт правка файлов данных, использующих старую раскладку псевдографики; - русский NeWSprint kit? =========================================================================== Установка пакета. ================= Предисловие. ------------ o Дистрибутив содержит несколько пакетов: MOWcyrFnt - набор русских растровых шрифтов 1.6 МБ MOWcyrKit - пакет руссификации 3.6 МБ MOWcyrMsg - русские сообщения для CDE 0.7 МБ MOWcyrPS - набор русских масштабируемых шрифтов 24.5 МБ MOWlocal - набор дополнительных программ 31.8 МБ MNPcyrKit - пакет кириллизации NeWSprint 2.5 0.3 МБ GNUroff - GNU roff (система подготовки текстов) 7.5 МБ GNUrofCyr - её кириллизация 11.6 МБ Разделение сделано со следующей целью: пакет со шрифтами довольно велик в объёме. Вы можете установить его на ОДИН некий NFS сервер, и импортировать его на клиентские машины через сеть. Установка пакета MOWcyrKit автоматически экспортирует каталог /usr/openwin. На клиентских машинах вы должны поместить в /etc/vfstab строки для монтирования через сеть каталогов с сервера /usr/openwin/lib/X11/fonts/cyrill /usr/openwin/lib/X11/fonts/cyrill-Type1 к аналогичным каталогам на вашей клиентской машине. Ещё лучше использовать для этого automounter. Процедура. ---------- На вашем CD ROMе находятся три файла, затрагивающие инсталляцию: cyrill.img - кириллизация gnukit.img - gcc install.sh - инсталляционный скрипт Инсталляция должна проводиться следующим образом: 1) Должны быть уже установлены: a) Solaris 2.x (x >= 3) b) CDE (Common Desktop Environment) c) Networker (Solstice Backup) (если требуется) d) NeWSprint 2.5 (если требуется) Примечание: если вы однажды переинсталлируете CDE, вам необходимо переинсталлировать также пакет MOWcyrKit. 2) pkgadd -d cyrill.img MOWcyrFnt pkgadd -d cyrill.img MOWcyrKit pkgadd -d cyrill.img MOWcyrMsg pkgadd -d cyrill.img MOWcyrPS MOWlocal pkgadd -d cyrill.img GNUroff pkgadd -d cyrill.img GNUrofCyr if [ -d /opt/NeWSprint ] ; then pkgadd -d cyrill.img MNPcyrKit fi pkgadd -d gnukit.img GNUkit Эти команды как раз и помещены в файл install.sh и могут быть выполнены при помощи sh install.sh Указанный порядок инсталляции пакетов СУЩЕСТВЕНЕН! На вопросы инсталлятора следует отвечать: 1) На вопрос об используемой кодировке ответьте - koi для КОИ-8 (RFC-1489) - iso для ISO 8859-5 - mswcyr для кодировки ANSI Cyrillic, используемой в Microsoft Windows (Microsoft 1251). Кодировка Microsoft 866 используется под именем altdos. Будут проинсталлированы необходимые файлы для всех кодировок, но изначальные настройки будут сделаны для указанной вами. 2) На запрос о полном имени вашей организации ответьте строкой, которая должна будет появляться в поле Organization: <строка> ваших писем в электронной почте. Чтобы не отвечать на этот вопрос, можно поместить эту строку в файл /etc/organization 3) На вопрос "запускать ли XDM?" Отвечайте "yes" только если ваша рабочая станция имеет графическую консоль. Отвечайте "no", если у вас сервер без консоли или с зелёным терминалом. Запуск XDM при загрузке системы происходит в том случае, если имеется файл /etc/xdm.run (пустой). 4) На запрос магического ключа ответьте строкой, которую вам сообщит продавец данного пакета. *) На остальные вопросы отвечайте y (yes). Пример протокола постановки пакета. ----------------------------------- Обратите внимание на порядок: MOWcyrFnt MOWcyrKit MOWcyrMsg MOWcyrPS MOWlocal GNUroff GNUrofCyr Ответы пользователя обозначены _текст_ # sh install.sh Processing package instance from OpenWindows Bitmap Cyrillic Fonts (SPARC) Version 2.3 for X11r5 ---------------------------------------------------------------- | | | Copyright (C) 1993,94,95 George Akimoff, Andrew Bogatyirev | | All Rights Reserved. | | | | Contains copyrighted software licensed from | | Moscow Center for SPARC-technology and | | Open Technologies, Ltd. | | Unauthorized duplication is strictly prohibited. | | | | Restricted rights of distribution are given to | | LVS Corporation and | | DEC Art | | | | Disassembly, decompilation, or other means of reducing | | the object code to human readable form | | is prohibited by the license agreement under which | | this code is provided to the user or company | | in possession of this copy. | | | ---------------------------------------------------------------- ## Processing package information. ## Processing system information. ## Verifying disk space requirements. ## Checking for conflicts with packages already installed. ## Checking for setuid/setgid programs. Installing OpenWindows Bitmap Cyrillic Fonts as ## Installing part 1 of 1. /usr/openwin/lib/X11/fonts/cyrill/crc5-08.pcf.Z ................ ................ ................ /usr/openwin/lib/X11/fonts/cyrill/sscWi-24.pcf.Z [ verifying class ] Installation of was successful. Processing package instance from OpenWindows Cyrillic Kit (SPARC) Version 2.4.2 for X11r5 Using as the package base directory. ................ ................ ................ Which codeset will you use: KOI-8, ISO 8859-5, ANSI Cyrillic (MS Windows) ? Please type koi or iso [koi|iso|mswcyr]: _koi_ Please, enter default timezone or just hit [Russia/Moscow (Samara,Novosibirsk)]: _ENTER_ Russia/Moscow is to be used in /etc/timezone and /etc/default/init Please, enter Full name of your organization (for Email) > _Open Technologies, Ltd._ Organization: Open Technologies, Ltd. Please, enter your maildomain (for NIS/Email), such as hostname.msk.su [] > _openwin.msk.su_ Maildomain: openwin.msk.su Do you want to start X Display Manager ? [yes] _yes_ XDM start enabled Please type your magic key> _ ## Processing package information. ## Processing system information. 25 package pathnames are already properly installed. ## Verifying package dependencies. ## Verifying disk space requirements. ## Checking for conflicts with packages already installed. The following files are already installed on the system and are being used by another package: /usr/openwin/lib/Xinitrc Do you want to install these conflicting files [y,n,?,q] _y_ ## Checking for setuid/setgid programs. This package contains scripts which will be executed with super-user permission during the process of installing this package. Do you want to continue with the installation of this package [y,n,?] _y_ Installing OpenWindows Cyrillic Kit as ## Executing preinstall script. ................ ................ ................ To use Cyrillization You have to 1) add setenv LANG ru.koi_8 (RFC-1489) OR setenv LANG ru.iso_8859_5 OR setenv LANG ru.mswcyr (Microsoft 1251) into your .cshrc file (or .login) 2) check for /etc/skel/local.cshrc --> $HOME/.cshrc /etc/skel/local.login --> $HOME/.login /etc/skel/local.profile --> $HOME/.profile and copy them into your $HOME if needed. 3) Then you have to exit OpenWindows and re-start it again. 4) cd /etc/skel and read README* files *) You can switch between RUS/LAT by pressing of key. or key. On Sun X-terminal use key. Installation of was successful. Processing package instance from ................ ................ ................ Installation of was successful. Processing package instance from ................ ................ ................ Do you want to start WWW (HTTP) server ? [no] _no_ Do not start WWW server ................ ................ The following files are already installed on the system and are being used by another package: /usr/local/man/man3 Do you want to install these conflicting files [y,n,?,q] _y_ ## Checking for setuid/setgid programs. The following files are being installed with setuid and/or setgid permissions or are overwriting files which are currently setuid/setgid: /usr/bin/rbmail /usr/local/bin/le /usr/local/bin/traceroute /usr/local/bin/xwall /usr/local/etc/httpd/httpd Do you want to install these setuid/setgid files [y,n,?,q] _y_ This package contains scripts which will be executed with super-user permission during the process of installing this package. Do you want to continue with the installation of this package [y,n,?] _y_ Installing Set of local programs and sources (includes WWW) as ................ ................ ................ Installation of was successful. Processing package instance from GNU groff - text to PostScript formatting utility (SPARC) 1.09 ------------------------------------------- | Copyright (C) | | | | jjc@jclark.com (James Clark) | | | | and Free Software Foundation | ------------------------------------------- ## Processing package information. ## Processing system information. 2 package pathnames are already properly installed. ## Verifying package dependencies. ## Verifying disk space requirements. ## Checking for conflicts with packages already installed. The following files are already installed on the system and are being used by another package: /usr/local/man/man1 Do you want to install these conflicting files [y,n,?,q] _y_ ## Checking for setuid/setgid programs. Installing GNU groff - text to PostScript formatting utility as ................ ................ ................ Installation of was successful. Processing package instance from GNU groff Cyrillization (SPARC) 1 ................ ................ The following files are already installed on the system and are being used by another package: /usr/local/lib/groff/tmac/tmac.gs /usr/local/lib/groff/tmac/tmac.pspic /usr/local/lib/groff/tmac/troffrc Do you want to install these conflicting files [y,n,?,q] _y_ ## Checking for setuid/setgid programs. Installing GNU groff Cyrillization as ................ ................ ................ Installation of was successful. Processing package instance from ................ ................ This package contains scripts which will be executed with super-user permission during the process of installing this package. Do you want to continue with the installation of this package [y,n,?] _y_ Installing NeWSprint 2.5 Cyrillic Kit -- KOI-8 codeset as ................ ................ Installation of was successful. Processing package instance from ................ ................ ................ Installation of was successful. you have mail # РЕКОМЕНДУЕТСЯ ПЕРЕЗАГРУЗИТЬ СИСТЕМУ В ЭТОМ МЕСТЕ и выставить правильное время командой date. Удаление пакета. ---------------- В случае нужды вы можете удалить пакет русификации, выполнив команды pkgrm MOWlocal MOWcyrPS MOWcyrMsg MOWcyrKit MOWcyrFnt Установили. Что дальше? ----------------------- После того, как установка выполнена, вы должны для каждого пользователя, который будет использовать русский язык (пусть, например, это пользователь user). Скопировать .login .cshrc .profile из /etc/skel в домашний каталог пользователя user (~user), команды ниже написаны для csh cp /etc/skel/local.login ~user/.login cp /etc/skel/local.cshrc ~user/.cshrc cp /etc/skel/local.profile ~user/.profile Если пользователь уже имеет один из этих файлов, то имеет смысл модифицировать его существующие файлы, а не копировать предлагаемые нами. Именно такое копирование осуществляет командный файл /etc/tune_lang (описание приводится ниже). Ключевыми в этих файлах являются строки: В .login setenv LANG ru.koi_8 В .profile LANG=ru.koi_8; export LANG задающие использование русского языка в кодировке КОИ-8. setenv LANG ru.iso_8859_5 для ISO 8859-5 setenv LANG ru.mswcyr для CP1251 setenv LANG ru.altdos для CP866 И строка stty cs8 -istrip erase ^H определяющая восьмибитовый ввод/вывод. Состав пакета. ============== Пакет предоставляет вам: 1) Русскую карту клавиатуры. 2) Русские шрифты для X Window System. 3) Ресурсы системы X Window, приспособленные для использования русского языка. 4) locale для русского языка. 5) Включает использование X Display Manager. Настройка языка. ================ Для быстрой смены используемой кодировки предлагается командный файл /etc/tune_lang который может использоваться как tune_lang koi список_имен_пользователей или tune_lang iso список_имен_пользователей tune_lang mswcyr список_имен_пользователей Пользователь root в списке задаёт язык "по умолчанию" для всей системы. Не требуется переинсталляция пакета для смены языка. Как правило достаточно просто задания setenv LANG ru.<правильный codeset> в $HOME/.login и LANG=ru.<правильный codeset>; export LANG в $HOME/.profile Частичная отмена локализации. ============================= Иногда бывает необходимо, чтобы дата выдавалась на английском языке. Для этого следует задать переменную окружения setenv LC_TIME C или в файле /etc/default/init LC_TIME=C Техническое описание компонент. =============================== Русская карта клавиатуры. ------------------------- Существуют ДВЕ схемы переключения русского языка при вводе. Учтите, что в режиме русской клавиатуры, вы не можете вводить управляющие коды вроде CTRL/C или CTRL/U, чтобы их ввести вы ДОЛЖНЫ сначала переключиться в режим латинской клавиатуры. Увы, таково устройство стандартной X Window System. Правка библиотеки Xlib может помочь исправить эту проблему, место известно, но... лучше не нарушать целостность фирменного кода. Желающим автор может подсказать - что надо сделать. Схема первая: xmodmap ~~~~~~~~~~~~~~~~~~~~~ Первая схема использует команду xmodmap и файлы $OPENWINHOME/lib/locale/$LANG/Xmodmaprc Она является более экономичной, чем наша вторая схема, ибо карта клавиатуры ОДИН раз загружается в X-server. Обычным пользователям рекомендуется использовать именно эту схему. Зато вторая схема обладает большей общностью. Пользователь может ПРИНУДИТЕЛЬНО использовать схему с xmodmap, создав в домашнем каталоге пустой файл $HOME/.UseXmodmap В этой схеме: ********************************************************* * * * ПЕРЕКЛЮЧЕНИЕ РУССКОГО/ЛАТИНСКОГО ШРИФТА НА ВВОДЕ * * ПРОИЗВОДИТСЯ ПРИ ПОМОЩИ КЛАВИШИ * * * * * * * * (справа от клавиши ПРОБЕЛ) * * * * или при помощи * * * ********************************************************* При переходе в русский режим загорается лампочка на клавише ********************************************************* * На Sun X terminal-ах (вроде SPARCclassic X) * * переключение РУС/ЛАТ производится клавишей * ********************************************************* Карты клавиатуры описаны в файлах $OPENWINHOME/lib/locale/ru.koi_8/Xmodmaprc $OPENWINHOME/lib/locale/ru.iso_8859_5/Xmodmaprc $OPENWINHOME/lib/locale/ru.mswcyr/Xmodmaprc Перераскладка русских клавиш основана на следующей возможности X Window: - функция XLookupString() поддерживает альтернативную таблицу кодов. - Для загрузки этой таблицы применяется команда xmodmap, загружающая четырёхколоночную таблицу: первые две колонки задают первую группу клавиш, вторые две - вторую. В каждой группе первый столбец задаёт код, выдаваемый клавишей при НЕнажатой клавише , второй столбец - при нажатой. ! Key ! KEYBOARD GROUP 0 ! KEYBOARD GROUP 1 ! ! Normal Shift ! Normal Shift !------------------------------------------------------------------------ keysym a = a A 0xe4 0xc4 keysym s = s S 0xeb 0xcb ...... - Для переключения групп используется модификатор mod2, склееный с единственной клавишей, фиксирующей своё состояние - модификатором lock. Модификатор lock исходно соединён с клавишей Caps_Lock и фиксирует Shift. Его использование в данной функции отменяется, mod2 и lock назначаются на клавишу Multi_key (она же Compose). Смотри man xmodmap и раздел H.3.2.7 в томе 1 серии книг O'Reilly по X Window. !---------------------------------------------------------------------- ! Use COMPOSE and CapsLock keys as RUS/LAT switch keys. !---------------------------------------------------------------------- remove lock = Caps_Lock add mod2 = Multi_key add mod2 = Caps_Lock add lock = Multi_key !---------------------------------------------------------------------- ! Use COMPOSE and NumLock keys as RUS/LAT switch keys. !---------------------------------------------------------------------- !remove lock = Num_Lock !add mod2 = Multi_key !add mod2 = Num_Lock !add lock = Multi_key После этого русские буквы включаются/выключаются либо клавишей Compose, либо CapsLock. Как можно видеть, имеется закомментированный второй вариант - переключение РУС/ЛАТ по NumLock. При этом в латинском регистре продолжает работать CapsLock - клавиша для фиксации больших букв. Чтобы выбрать эту версию, следует закомментировать восклицательными знаками первый блок и раскомментировать второй. Это файл /usr/openwin/lib/Xmodmaprc.X-sun Попытка использовать для этой цели предписанную клавишу AltGraph (Mode_switch) к сожалению приводит к зависанию оконной системы при работе МЫШЬЮ, когда включён русский регистр. Пока мышь не трогаем - всё отлично. Есть подозрение, что это поведение не X11 server а OpenLook Window Manager. К сожалению, X имеет только ОДНУ клавишу, помнящую своё состояние: единственный модификатор Lock. Поэтому его использование в качестве переключателя РУС/LAT приводит к потере клавиши фиксации верхнего регистра (CapsLock): её технически невозможно иметь, не модифицируя X Window System в сторону расширения. Новая карта клавиатуры может быть просмотрена командами xmodmap xmodmap -pk Схема вторая: монитор ввода xCyrInput ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В этой схеме переключение кодовых таблиц осуществляет специальная программа - xCyrInput. При каждом (увы) нажатии переключательной клавиши она перезагружает карту клавиатуры в X-server. Это более накладно, но зато: - вы можете выбрать клавишу переключения по своему вкусу (в том числе Shift_L+Shift_R). Переключение РУС/ЛАТ изначально подключено к кнопке Mode_switch, которая на Sun-овских машинах совпадает с AltGraph (в нижнем правом углу). Её нажатие отображается светодиодом на кнопке Compose. - можно держать на экране несколько программ, использующих разные кодовые таблицы ОДНОВРЕМЕННО. - работает клавиша Pseudo CapsLock (на Sun это Caps_Lock <или по желанию Meta_R - правая клавиша с ромбом>), которая позволяет фиксировать верхний регистр в том числе и русских букв. Shift при нажатом PseudoLock даёт маленькие буквы. Нажата ли эта клавиша - отображается светодиодом на ScrollLock и буквой L в окне "модификаторы". - эта программа также отслеживает активность пользователя, и после долгой паузы (нет движений мыши или клавиатуры) запускает программу запирания экрана. ***************************************************************************** * ПРОГРАММА НАПИСАНА ПО МОТИВАМ И С ИСПОЛЬЗОВАНИЕМ ИСХОДНЫХ ТЕКСТОВ * * * * xrus-1.3.4 * * * * Александра Лукьянова * * lav@yars.free.net (Alexander V. Lukyanov) * * * * ftp://ftp.relcom.ru/x11/cyrillic/xrus-1.3.4.tar.gz *║ ftp://ftp.relcom.ru/x11/cyrillic/xrus-1.3.4.tar.gz * * * РАСПРОСТРАНЯЕТСЯ СВОБОДНО * ***************************************************************************** Автор данной версии (abs@openwin.msk.su - Андрей Богатырёв) выражает глубочайшую признательность А.Лукьянову за плодотворную идею. Исходные тексты программы находятся в /usr/local/src/xCyrInput Использование программы: ------------------------ Основная идея работы этой программы - перехват и отслеживание нажатий ВСЕХ клавиш на клавиатуре. При этом используется та особенность X Window System, что события от окна могут посылаться НЕСКОЛЬКИМ программам одновременно, причем каждой программе - свои события (заказанные ею). Вторая используемая особенность - то, что клиентская программа может заказать получение событий от ЛЮБОГО окна на экране, не только от своего. Таким образом мы можем отслеживать и нажатие клавиш над ЧУЖИМИ окнами. Переключение РУС/ЛАТ изначально подключено к кнопке Mode_switch, которая на Sun-овских машинах совпадает с AltGraph (в нижнем правом углу). Переключение происходит также при нажатии мыши над графической кнопкой РУССКИЙ/LATIN в верхнем правом углу экрана (правая кнопка). Среднее меню позволяет "на лету" менять кодовую таблицу. При нажатии Ctrl программа временно переключается в латинский режим, чтобы правильно отрабатывлись Ctrl/C и Ctrl/U. Нажатие ПРАВОЙ кнопки мыши над окном проявляет меню, в котором содержится строчка "Properties...". Выбор этой строчки приводит к проявке диалога, в котором вы можете настроить очень много разнообразных возможностей, в том числе раскладку клавиш на клавиатуре. Смотрим на Properties: DiskCheckPath - программа следит за свободным местом в нескольких каталогах и предупреждает вас о его исчерпании. Список каталогов - в этом поле, через двоеточие. В окошке в правом верхнем углу экрана отображается количество свободного места, оставшееся в ПЕРВОМ в списке каталоге. Application Codesets Pattern List - программа позволяет ОДНОВРЕМЕННО держать на экране несколько программ-клиентов, использующих РАЗНЫЕ кодовые таблицы. При этом монитор автоматически переключает кодовые таблицы в зависимости от имени программы, класса программы, имени окна, argv[0]. Класс программы можно узнать командой xlsclients -l Список соответствия оформляется в виде шаблон_имени1=имя_таблицы1:шаблон_имени2=имя_таблицы2:... Шаблон имени пишется в силе регулярного выражения Шелл. Пример: шаблон: *866*=altdos Запуск программы: $ LANG=ru.altdos cxterm -T x866 -fn crcA-12 -e /bin/sh & Теперь перемещение фокуса клавиатуры в это окно будет вызывать переключение клавиатуры на 866 кодовую таблицу. Save - сохраняет ресурсы в файл $HOME/.Xdefaults Минусы подхода, использованного в данной программе: --------------------------------------------------- Высокая реактивность на медленных машинах и при большом числе клиентских программ, ибо 1) Каждое переключение - это загрузка 4х колоночной таблицы по 132 кнопки (посылка такого пакета по сети) 2) После этого КАЖДЫЙ КЛИЕНТ делает по MappingNotify event вызов XRefreshKeyboardMapping() и читает такой же пакет с сервера. Необходима библиотека /usr/dt/lib/libDtSvc.so.1 из CDE, без нее не работает. Схема третья: ~~~~~~~~~~~~~ Одновременное использование обеих схем. Можно одновременно использовать оба метода переключения РУС/ЛАТ. Для этого надо: - создать пустой файл $HOME/.UseXmodmap - под CDE не убивать xCyrInput - под Open Look либо запускать его вручную, либо занести команду запуска в файл $HOME/.openwin-init Запуск программы xCyrInput вручную: 1) переключить клавиатуру в ЛАТИНСКИЙ режим и убедиться в этом, попробовав набрать пару-другую букв. 2) в окне terminal (xterm, cxterm) набрать команду xCyrInput -daemon Русские фонты. -------------- Основные фонты: гарнитура начертание bitmap PostScript ========================================================== Courier Roman crc CourierC Bold Italic BoldItalic Helvetica Roman ssc PragmaticaC Bold Oblique BoldOblique Times Roman smc NewtonC Bold Italic BoldItalic Каталоги, где они расположены: $OPENWINHOME/lib/X11/fonts/cyrill - растровые $OPENWINHOME/lib/X11/fonts/cyrill-Type1 - масштабируемые Имена этих каталогов записаны в столбик в файлах $OPENWINHOME/lib/locale/C/OWfontpath $OPENWINHOME/lib/locale/$LANG/OWfontpath откуда скрипты Xinitrc и StartOW их и берут. Имена растровых фонтов сконструированы следующим образом: xxxT-NN xxxTi-NN xxxTb-NN где xxx: crc - courier (CouRier Cyrillic) smc - serif (Serif Monospaced Cyrillic) ssc - sans-serif (Sans Serif Cyrillic) где T: W - шрифты в кодировке CP-1251 для MS Windows. A - шрифты в кодировке CP-866 для MS DOS. K - шрифты в кодировке КОИ-8. 5 - шрифты в кодировке ISO 8859/5. где последняя буква: без - roman, прямой обычный шрифт. i - italic, курсив. b - bold, жирный шрифт. где NN: размер шрифта в точках: 08, 10, 12, 14, 18, 24 Примеры: smcW-08 sscKb-24 XLFD имена (X logical font definition): --------------------------------------- -chu-crcT-medium-r-normal--13-80-96-96-m-70-koi-8 sscT bold o 15-100 90 iso8859-5 smcT 16-120 90 ibm-1251 19-140 120 24-180 170 36-240 220 Для фонтов размеров 80 и 100 есть только версия -medium-r- Для фонтов размеров 120, 140, 180, 240 есть версии -bold-r- и -medium-o- (italic). !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! В файлах ресурсов рекомендуется использовать короткие имена, !!! !!! поскольку XLFD имена могут измениться в следующих версиях. !!! !!! (такое уже было) !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Соответствие растровых шрифтов CDE фонтам. ------------------------------------------ CDE size Chu --------------------------------------------- 1) xxs extra-extra small -нет- 2) xs extra small -08 default 3) s small -10 4) m medium -12 5) l large -14 6) xl extra large -18 7) xxl extra-extra large -24 Проверьте шрифты. ----------------- Удостоверьтесь, что имена каталогов с русскими шрифтами попали в FONT PATH, для чего наберите команду xset -q и убедитесь в наличии имён каталогов /usr/openwin/lib/X11/fonts/cyrill и /usr/openwin/lib/X11/fonts/cyrill-Type1 Для разовой интерактивной смены фонта вы можете использовать команду xrdb (X resources database manager): % xrdb Font.Name: crcK-24 ^D <-- CTRL/D % cxterm & или указать непосредственно команде, какой фонт ей следует использовать: % xterm -fn crcK-24 & Список доступных фонтов и их кратких имён можно получить командой xlsfonts Просмотреть кодовые таблицы - увидеть порядок букв в кодировках - позволяют команды xfd -fn crcK-12 & xfd -fn crc5-12 & xfd -fn crcW-12 & Файлы ресурсов. --------------- То, что программы должны использовать именно русские фонты, задается в системном файле ресурсов $OPENWINHOME/lib/locale/ru.koi_8/Xdefaults $OPENWINHOME/lib/locale/ru.iso_8859_5/Xdefaults $OPENWINHOME/lib/locale/ru.mswcyr/Xdefaults для CDE /etc/dt/config/ru.koi_8/sys.resources /etc/dt/config/ru.iso_8859_5/sys.resources /etc/dt/config/ru.mswcyr/sys.resources Файл ресурсов состоит из строк вида: КлассПрограммы*имяРесурса: значениеРесурса *имяРесурса: значениеРесурса во втором случае ресурс применяется ко ВСЕМ программам. Вот что там написано для КОИ-8: ! Added by Cyrillic Package ! Define Cyrillic fonts (KOI-8) ! OpenWindows.TextFont: smcK-12 OpenWindows.TitleFont: smcKb-14 OpenWindows.ButtonFont: sscKb-12 Font.Name: sscK-12 <- главное это Icon.Font.Name: sscK-10 olwm.TextFont: smcK-12 olwm.ButtonFont: smcK-12 olwm.TitleFont: smcKb-12 Mwm*menu*background: pink Mwm*fontList: -chu-sscK-bold-r-normal-*-*-120-*-*-*-*-koi-8: nptool.Font.Name: fixed *font: crcK-12 !Tuning of OpenLook Virtual Window Manager OpenWindows.VirtualSticky: xclock clock oclock xwall OpenWindows.VirtualForegroundColor: white OpenWindows.VirtualBackgroundColor: yellow OpenWindows.UseImages: UseAll OpenWindows.InputFocusColor: pink OpenWindows.UniqueIconSlots: True OpenWindows.FreeIconSlots: True OpenWindows.ShowResizeGeometry: True OpenWindows.ShowMoveGeometry: True OpenWindows.SelectDisplaysMenu: False ! Trailer Cyrillic Package Убедитесь, что файлы .OWdefaults и .Xdefaults в вашем домашнем каталоге не перекрывают эти определения. Следует удалить старые: ~/.Xdefaults ~/.Xresourses ~/.OWdefaults ~/.openwin-init ~/.keytable ~/.dt (это каталог) Текущие установки ресурсов можно посмотреть командой xrdb -q | more Стартовый файл. --------------- Изучите стартовый файл $OPENWINHOME/lib/Xinitrc содержащий команды загрузки карт клавиатуры Xmodmaprc и файлов ресурсов Xdefaults Системный администратор ОБЯЗАН прочитать этот файл и понять, как всё работает. Обратите внимание на специальный файл-флажок $HOME/.Xmod++ locale для трёх кодировок. -------------------------- locale - это описание множества букв, какие из них печатные, большие, маленькие,... Смотри man setlocale и man ctype Описания расположены в каталогах /usr/lib/locale/ru.koi_8 /usr/lib/locale/ru.iso_8859_5 /usr/lib/locale/ru.mswcyr /usr/lib/locale/ru.altdos (для функции setlocale(LC_ALL, ""); ) X Display Manager. ------------------ Пакет запускает на вашей машине X Display Manager (xdm). Ознакомьтесь с его конфигурационными файлами, расположенными в /usr/openwin/lib/xdm/* Обратите внимание на Xresources - там задан русский язык сообщений. StartOW - параметры запуска X-serverа. Xsession - скрипт, выполняемый при входе пользователя в систему. Xsetup_0 - запуск программ, сопутствующих окну Xlogin. Смотри также man xdm ВНИМАНИЕ, СИСТЕМНЫЙ АДМИНИСТРАТОР !!! ------------------------------------- Для входа через xdm используется настроечный файл ~/.profile Для входа с консоли - ~/.login Поэтому добавление установки переменных окружения следует производить ПАРАЛЛЕЛЬНО в обоих этих файлах. В качестве образцов используйте файлы из /etc/skel Если у пользователя уже были файлы .login, .cshrc, .profile, то вам придётся посвятить некоторое время приведению их в соответствие с работоспособным образцом. Пардон за причинённые неудобства! Вход через XDM. ~~~~~~~~~~~~~~~ xdm (xlogin) -> Xsession -> $HOME/.profile -> Xinitrc -> xterm -> sh xdm (xlogin) -> Xsession -> $HOME/.profile -> Xinitrc -> xterm -> csh -> $HOME/.cshrc Вход через console login (с белой консоли) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ login -> sh -> $HOME/.profile -> \ -> $OPENWINHOME/bin/openwin -> Xinitrc -> xterm -> sh login -> csh -> $HOME/.cshrc -> $HOME/.login -> \ -> $OPENWINHOME/bin/openwin -> Xinitrc -> xterm -> csh -> $HOME/.cshrc Вход через telnet или rlogin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ telnet -> login -> sh -> $HOME/.profile telnet -> login -> csh -> $HOME/.cshrc -> $HOME/.login Вход через dtlogin CDE ~~~~~~~~~~~~~~~~~~~~~~ /etc/rc2.d/S99dtlogin -> dtlogin -> ... -> /usr/dt/bin/Xsession -> ... ->\ -> /etc/dt/config/Xsession.d/0055.cyrillic -> $HOME/.profile ->\ -> xterm -> sh -> csh -> $HOME/.cshrc При входе под Co