Русификация ОС QNX4 (01.08.2k)

В этом документе я попытаюсь обобщить весь свой опыт решения проблемы русификации ОС QNX 4. Опишу каким образом мне удалось это сделать от начала и до конца (с некоторыми огрехами и оговорками конечно, но в общем сносно).
А именно:

Консоль (shell в текстовом режиме работы монитора)
Photon MicroGUI (1.14)
Photon Terminal (1.14 и не только)
и опишу подмеченные мной особенности работы с русским языком некоторых приложений:
Midnight Commander 4.1.36-qnx
Voyager 2.02
Voyager Mail 2.02
Photon ICQ [by S. Prozhogin]
Photon Editor
Photon HTML demo и Photon Help Viewer
Длинные русские имена в FAT-разделе

Консоль (shell в текстовом режиме работы монитора)
Итак, начнем с русификации консоли. Мне очень понравился пакет russhell, разработанный Александром Смирновым. Этот пакет содержит русский консольный шрифт и драйвер клавиатуры. Раскладка КОИ-8Р, что вполне подходит для большинства консольных *nix-приложений. Переключение русский/латинский - левый <Control> + левый <Shift>. Установка пакета сводится к следующему:
1. Распакуйте архив russhell.tgz в каком-нибудь директории "tar xzvf russhell.tgz"
2. Скопируйте:
KOI8-R, USA --> /etc/config/kbd/
koi8-8x16 --> /etc/config/cfont/
rk --> /usr/local/bin/
3. Измените /etc/config/sysinit.1:
после строки:
reopen //0/dev/con1
добавьте:
cfont -f 0 /etc/config/cfont/koi8-8x16
/usr/local/bin/rk /etc/config/kbd/USA /etc/config/kbd/KOI8-R
4. Выполните:
tic ./terminfo.src
Все. Перезагрузитесь и наслаждайтесь.
Примечание: пакет работает только в режиме QNX-терминала с установками:
stty protocol=0 term=qnx && export TERM=qnx

Photon MicroGUI (1.14)
Для русификации Photon уже разработано несколько пакетов, а именно ruskey 3.20 от SWD, phonon cyrillic supplement от QSSL, возможно есть и другие. Если кому-то лень долго настраивать все вручную - можно воспользоваться этими пакетами, устанавливаются они оба как обычно все в QNX 4 - распаковываются в корне файловой системы. После перезагрузки Вы получите русскую раскладку Unicode + набор русских шрифтов (по моему скромному мнению - ужасного начертания). Переключаться клавиатура будет с помощью <Caps Lock> или <Alt>.
Но мне эти пакеты честно говоря, не понравились и я решил придумать свой способ и "приучить" Photon к хорошо знакомым мне и, я думаю, большинству пользователей, TTF-шрифтам от Windows 95/98, благо они Unicode (что является необходимым условием для их использования в Photon MicroGUI) и отличаются хорошим качеством начертания.
Сначала заставляем нормально работать клавиатуру. Я использовал драйвер клавиатуры от пакета cpterm (о нем мы вспомним когда займемся русификацией терминала Photon). В этом пакете есть уже готовый драйвер клавиатуры ru_UN_101.kbd и его исходник - файл описаний ru_UN_101.kdef (специально для тех, кто-то хочет что-то поправить). Архив с вышеперечисленными файлами можно взять здесь. Этот драйвер привлекателен лично мне тем, что он достаточно корректно отрабатывает русскую раскладку с привычным переключением - левый <Control> + левый <Shift>. Копируем эти файлы в /etc/config/kbd. Запускаем Photon. Запускаем менеджер раскладок - программу /qnx4/photon/bin/kbsel - добавляем в список раскладок клавиатур раскладку ru_UN_101.kbd, раскладку en_US_101.kbd из списка удаляем. Можно теперь вручную подредактировать файл в /.photon с названием keyboards. Он у меня такого содержания:
-------------------------------- cut here ------------------------------------
/etc/config/kbd/ru_UN_101.kbd ru_UN_101
sw=2
dir=/etc/config/kbd
-------------------------------- cut here ------------------------------------
Далее дописываем в файл /etc/profile следующую строчку:
export KBD=ru_UN_101.kbd
Все. Русская клавиатура после перезагрузки машины будет готова к употреблению. Переключение - левый <Control> + левый <Shift>. Индикатор - Scroll Lock. Горит - английский, не горит - русский.
Далее из Windows 95/98 берем шрифты Arial, Times New Roman, Courier New, а именно:
C:\WINDOWS\FONTS\arial.ttf
C:\WINDOWS\FONTS\arialbd.ttf
C:\WINDOWS\FONTS\arialbi.ttf
C:\WINDOWS\FONTS\ariali.ttf
C:\WINDOWS\FONTS\cour.ttf
C:\WINDOWS\FONTS\courbd.ttf
C:\WINDOWS\FONTS\courbi.ttf
C:\WINDOWS\FONTS\couri.ttf
C:\WINDOWS\FONTS\times.ttf
C:\WINDOWS\FONTS\timesbd.ttf
C:\WINDOWS\FONTS\timesbi.ttf
C:\WINDOWS\FONTS\timesi.ttf
Ярые противники содержания "ОС" Windows на своем компьютере могут взять архив этих шрифтов здесь.
Также понадобится русифицированный шрифт Helvetica. Его можно взять здесь. Шрифт Helvetica я принципиально не удалял, так как он "жестко завязан" на использование в Photon Desktop Manager - проще PDM.
Любым возможным способом (например используя Dosfsys или скачав и распаковав архив) переносим эти файлы в каталог QNX: /qnx4/photon/font.
Запускаем менеджер шрифтов - /qnx4/photon/bin/fontcfg -G (для пользователя root). Если предыдущий шаг выполнен верно, в правой панели окна программы появятся шрифты - Arial, Times New Roman, Courier New. Помечаем их мышкой и нажимаем кнопку Install. Теперь удаляем все лишние (по моему скромному мнению) шрифты из левой панели (их можно удалить и физически из каталога /qnx4/photon/font - чтобы не занимали лишнего места на диске - если это актуально). У меня это выглядит так:

Переходим на закладку Mappings. Удаляем оттуда все что только можно. После чего добавляем подстановки шрифтов, чтобы у нас корректно отображались шрифты (по запросам некоторых программ) с именами Courier, Helvetica, Times. А также делаем подстановку для масштабируемых шрифтов (на всякий случай) Helvetica - Arial. На этой закладке все должно выглядеть таким образом:
Переходим на закладку Extensions. Последовательно удаляем оттуда тоже все записи, после чего создаем новые. Это необходимо для правильной обработки национальных кодировок (а это именно то, что нужно нам). У меня это выглядит так:

Все. Нажимаем на Save и затем Apply. В этот момент система может сильно "глюкануть" и "тормознуть" по непонятным мне пока до конца причинам - скорее всего не может сразу распределить память для новых TTF-шрифтов (а они увесисты) или мгновенно "перестроить" все программы на работу с новыми шрифтами. Подождем минуты 2-3 и комбинацией <Ctrl>+<Alt>+<Shift>+<Backspace> аварийно завершаем сеанс Photon. Теперь перезагружаем машину "shutdown -f". После этого все должно работать правильно.
Photon Terminal
Исходный документ на эту тему я нашел здесь. Позволю себе его процитировать.
-------------------------------- cut here ------------------------------------
Русификация pterm в Photon 1.14
Начиная с версии 1.14, Photon microGUI поддерживает отображение и ввод национальных символов в окне псевдотерминала (pterm). Своими рекомендациями о том, как заставить pterm "говорить" по-русски, делится служба технической поддержки SWD Real-Time Systems.
1. Запустите Photon.
2. Запустите программу ptermcs (пункт "Run..." меню Photon Desktop Manager).
3. Выберите нужные Вам кодировки в полях "ANSI charset", "Internal/QNX charset" и "Font charset" (для последнего полезно сохранить установку по умолчанию - "совпадает с Internal/QNX charset").
4. Сохраните созданный файл раскладки (пункт меню "File/Save As...", или Ctrl-A), желательно в Вашем "домашнем" каталоге (например, $HOME/.photon/charsets).
5. Повторите пп. 3-4 для каждой необходимой Вам раскладки.
6. Запустите какую-нибудь программу в pterm (например, ksh).
7. Вызовите окно свойств терминала (Ctrl-Alt-C).
8. В поле "Text font" выберите "Custom" и нажмите кнопку "Customize". Откроется окно "Customize font list".
9. В поле "Fonts" выберите нужный Вам шрифт в необходимой кодировке и его размер (подробности об установке шрифтов в Photon см. в замечаниях по установке Photon Cyrillic Supplement - файл /etc/readme/phcyr).
10. Нажмите кнопку "Add". Выбранный шрифт появится в списке шрифтов.
11. По необходимости повторите пп. 9-10 для всех необходимых Вам шрифтов.
12. Используйте кнопки "Shift Up" и "Shift Down" для выбора приоритета шрифтов. Первый в списке шрифт будет установлен по умолчанию. Примечание: для корректной обработки псевдографических символов рекомендуется использовать по умолчанию шрифты в кодировке CP866 (alt). Шрифты в других кодировках неправильно отображают псевдографику.
13. В поле "Charsets File" нажмите кнопку "Browse". Откроется окно "Choose file".
14. Выберите один из созданных Вами в пп. 2-5 файлов раскладки и нажмите кнопку "Select". Окно "Choose file" закроется. Примечание: для корректного отображения вводимого текста кодировки шрифта и клавиатуры должны совпадать. Поэтому установите по умолчанию раскладку с той же кодировкой, что и у принятого по умолчанию шрифта. Для корректного отображения файлов в кодировке, отличной от принятой по умолчанию, Вы можете переключаться между установленными шрифтами консоли "на лету" стандартными комбинациями клавиш (Ctrl-Alt-> и Ctrl-Alt-<). Но если Вам придется редактировать этот текст, то Вам придется сменить также раскладку клавиатуры (см. выше), как это описано в пп. 13-14. Это позволяет создавать текстовые файлы в различных кодировках.
15. В окне "Customize font list" нажмите кнопку "Done".
16. В окне свойств терминала нажмите кнопки "Apply" и "Save & Close".
17. Повторите пп. 6-16 для всех программ, которые запускаются Вами в pterm (например, из меню Photon Window Manager или при помощи Photon Desktop Manager) и используют различные его конфигурации (конфигурации pterm хранятся в файлах $HOME/.photon/pterm*.rc). И наслаждайтесь! P.S. Слишком быстрое последовательное нажатие некоторых клавиш может быть воспринято pterm как управляющая последовательность терминала и привести к неприятным последствиям. Так, быстрый ввод последовательности "яд" в редакторе vedit (терминал QNX, раскладка клавиатуры в кодировке Windows 1251) вызывает переключение режима отображения (меню "View/Toggle Display mode"), а последовательность "ям" вызывает установку маркера строки, что и произошло несколькими строчками выше. =%-O
-------------------------------- cut here ------------------------------------
От себя добавлю, что этот метод действительно работает и оправдывает себя.
Иногда бывает необходимо дополнительно установить русские шрифты PCTerm. Их можно взять здесь.

Я сделал 3 файла - cp866.cs, win1251.cs, koi8r.cs (архив здесь), которые легко можно менять для каждого конкретного случая, установив по умолчанию один из них (мне например чаще приходится работать в кодировке win-1251, например писать эти строки ;) поэтому я выбрал по умолчанию win1251.cs. Окно ptermcs выглядит для всех случаев настройки следующим образом:

       win1251.cs:
       ANSI charset          Cyrillic (Windows 1251)
       Internal/QNX charset  Cyrillic (IBM 866)
       Font charset          (same as internal)

       cp866.cs:
       ANSI charset          Cyrillic (IBM 866)
       Internal/QNX charset  Cyrillic (IBM 866)
       Font charset          (same as internal)

       koi8r.cs:
       ANSI charset          Cyrillic (KOI8-R)
       Internal/QNX charset  Cyrillic (IBM 866)
       Font charset          (same as internal)

Шрифт, который я использовал в свойствах pterm - pcterm12, файл раскладки клавиатуры остался тот же без изменений (см. выше о русификации Photon).
Midnight Commander 4.1.36-qnx
Для того чтобы можно было пользоваться русским языком в редакторе и вьювере Midnight Commander 4.1.36 /речь идет именно об этой версии, т.к. остальными, попадавшимися мне "версиями", уважающий себя человек пользоваться не будет вообще ;) / я проделал следующее: выбрал в меню F9 -> Options -> Display bits... и поставил звездочку напротив "ISO 8859-1" и крестик около "Full 8 bits input". Нажал Ok, выбрал снова F9 -> Options -> Save setup. Все.
Voyager 2.02
Запускаем Voyager (лучше конечно, если это будет версия 2.02), выбираем в меню Edit --> Configuration. На закладке Appearance вписываем Body Font Family - Times New Roman, Heading Font Family - Arial, Preformatted Text Font Family - Courier New. Сохраняем параметры. Теперь Voyager готов к длительным путешествиям по Рунету, причем текст просматриваемых страничек будет выглядеть как в Internet Explorer или Netscape Navigator.
Voyager Mail 2.02
Для корректной обработки и обеспечения "читабельности" текстов писем лучше все-таки использовать принятую в *nix кодировку КОИ-8Р.

Photon ICQ [by S. Prozhogin]
при посылке сообщения есть возможность выбрать шрифт - выбираем Arial 10 Bold - теперь можно общаться с другими пользователями ICQ, которые сидят под Windows и пишут в кодировке 1251. Шрифт Helv (по умолчанию) у меня не заработал корректно по-русски.

Photon Editor
В меню Options -> Defaults устанавливаем шрифт по умолчанию - Arial 10 Bold - нажимаем Save. Теперь по умолчанию при работе с Photon Editor текст будет выглядеть привычно как в MS Notepad. При чтении и сохранении документов можно выбирать кодировки Options --> Encoding или Ctrl-E. Работоспособность проверена с кодировками DOS-866, КОИ8-Р, Win-1251.
Photon HTML demo и Photon Help Viewer
Эти приложения "упорно" не хотят показывать русские буквы в просматриваемых документах. Дело тут в том, что Photon "жестко завязан" на использование Unicode, ему просто нет дела до каких-то там разнообразных русских кодировок. Так что если придется создавать свой русскоязычный help (например для своей собственной разработки), нужно поступить следующим образом:
1. Загружаем Photon Editor.
2. Меняем кодировку по умолчанию на Windows-1251 (или другую, смотря в какой кодировке наши исходные html-файлы).
3. Загружаем html-файл в редактор.
4. Меняем кодировку на Unicode (UTF-8).
5. Сохраняем файл.
6. Проделываем шаги 2-5 для всех имеющихся html-файлов.
Теперь новые html-файлы должны отображаться корректно, с русскими буквами.
Есть, конечно, еще один вариант (для наиболее продвинутых пользователей). Благо в PhAB есть исходники htmldemo (а вроде бы и helpviewer'а). Можно добавить туда модуль перекодировки аналогичный Voyager и VMail. Его можно попытаться найти там же, в Voyager SDK или написать свой собственный. Но это уже тема другой статьи.
Длинные русские имена в FAT-разделе
Если использовать Dosfsys, то обычно длинные русские имена в FAT-разделе (Windows) не просматриваются, либо вместо них наблюдается нечто непонятное. Частично проблема решается использованием нового менеджера файловой системы FAT - Fatfsys (включен в QNX 4.25 Patch D). Т.к. Photon понимает исключительно Unicode, а Windows хранит длинные русские имена файлов в Unicode, то просматриваться они будут только из-под Photon'овских программ, таких как Photon File Manager. В консоли и pterm это пока к сожалению не работает, т.к. они не понимают кодировку Unicode.
Если Вы найдете в этом документе ошибки, хотите предложить свой метод русификации, может быть, описание русификации для конкретных программ, здесь не описанных - пишите мне, я с удовольствием внесу в этот текст все необходимые поправки и дополнения.
01.08.2000
Engineer rtos@mail.ru