Русификация QNX6
Русификация консоли QNX 6 в текстовом режиме
Утилита для загрузки консольного шрифта в видеокарту: loadfont.
Исходник loadfont.c компилировать так:
make loadfont
Используется только для текстового режима. Примеры запуска:
loadfont cp866.08
loadfont iso866.16
Если загружен шрифт с другим размером, чем был до этого, то нужно перезагрузить devc-con:
slay devc-con; devc-con
Возможно, что будет работать и если шрифт загружать при загрузке QNX 6 до запуска devc-con.
Консольные шрифты вы можете скачать здесь:
- cp866.08 — шрифт размером 8x8, кодировка IBM 866. Шрифт взят из MS-DOS, из файла EGA3.CPI.
- cp866.14 — шрифт размером 8x14, кодировка IBM 866. Шрифт взят из MS-DOS, из файла EGA3.CPI.
- cp866.16 — шрифт размером 8x16, кодировка IBM 866. Шрифт взят из MS-DOS, из файла EGA3.CPI.
- iso866.16 — шрифт размером 8x16, кодировка IBM 866. Шрифт взят из MS-DOS, из файла ISO.CPI.
- fnt-bolkhov.tar.gz — Консольные шрифты в кодировках IBM 866 и RUSCII (CP 1125) с размерами 8x8, 8x14 и 8x16, сделаны на основе шрифтов от Дмитрия Болховитянова.
Существует пакет SWD Cyrillic Pack для QNX 6, который содержит в своём составе модифицированный драйвер консоли devc-con (не знаю, правда, от какой версии QNX 6), который позволяет переключать раскладки клавиатуры (русская, английская) по нажатию клавиши ScrollLock.
Русская раскладка клавиатуры для консоли QNX 6 в текстовом режиме
kbd.tbl.ru — русская раскладка клавиатуры для консоли QNX 6, кодировка IBM 866.
В папке ${QNX_TARGET}/etc/ также уже есть немецкая и американская раскладки:
- kbd.tbl.de - DE-102 (German) layout.
- kbd.tbl.us - US-101 layout (the default).
Менеджеры devc-con и devc-con-hid поддерживают международные раскладки клавиатуры. По умолчанию они используют исходную раскладку US-101.
Если файл /etc/kbd.tbl присутствует, когда вы запускаете devc-con или devc-con-hid, то он загружается и испольуется вместо неё. Вы можете перезагрузить этот файл во время выполнения путём нажатия Ctrl-Alt-Space. (Если вы используете VMWare, вам придётся нажать это дважды).
Русификация Photon 2.0
После установки QNX 6.2.1 настройте локализацию. Для установки часового пояса запустите программу «User’s Configuration» (кнопка «Localization» в меню). Рекомендую также снять флажок «The hardware clock uses UTC/GMT».
Программа «User’s Configuration» в Photon 2.0.4/QNX 6.2.1 в отличие от утилиты kbsel в Photon 1.14/QNX 4.25 не позволяет выбрать несколько раскладок клавиатуры и горячие клавиши для их переключения, поэтому русификацию клавиатуры в Photon 2.0.4/QNX 6.2.1 придётся производить вручную с помощью редактирования файла /etc/system/trap/.KEYBOARD.host, где host — имя машины, например, localhost. В этом файле должны быть две следующие строки:
en_US_101.kbd
ru_RU_102.kbd
Переключение раскладок клавиатуры происходит по нажатию клавиш LeftAlt-LeftShift.
В QNX 6.1 достаточно было только прописать строку ru_RU_102.kbd или выбрать на закладке «Keyboard» программы «User’s Configuration» раскладку клавиатуры «Russian», так как файл ru_RU_102.kbd содержит кроме русской раскладки клавиатуры также и стандартную английскую (американскую) раскладку клавиатуры и переключение раскладок по нажатию клавиши RightAlt, но в QNX 6.2 это почему-то не работает.
Для того чтобы видеть скрытые (hidden) файлы, то есть файлы, имена которых начинаются с точки (как, например, .KEYBOARD.localhost), настройте их отображение в менеджере файлов, которым вы пользуетесь (Photon File Manager и/или MQC).
В QNX 6.2.1, также как и в QNX 4.25 можно использовать TTF-шрифты и делать подстановки шрифтов.
Для установки шрифтов в QNX 6.2.1 нужно скопировать файлы шрифтов в каталог /usr/photon/font_repository и запустить утилиту /usr/photon/bin/mkfontdir, которая просканирует каталог /usr/photon/font_repository и пропишет найденные шрифты в файл /usr/photon/font_repository/fontdir. В Photon 2.0.4/QNX 6.2.1 после запуска утилиты mkfontdir и перезагрузки Photon возможно исчезновение курсора. Возможно, причина этого связана с файлом /usr/photon/font_repository/phcursor.phf. Символы этого файла являются изображениями курсоров и в Photon версии 2.0.4 имеют Unicode-коды не в диапазоне 0xE900-0xE921, как это было в предыдущих версиях, а 0x0000-0x0021. В файле fontdir однако после установки QNX 6.2.1 прописаны правильные значения E900-E921 и курсор отображается нормально, но утилита mkfontdir просканировав шрифты, извлекает из заголовков шрифтов параметры шрифтов и прописывает их в файл fontdir, в результате попытки отобразить символы с кодами 0xE900-0xE921 из шрифта phcursor.phf оказываются неудачными и курсор пропадает. Чтобы «вернуть» курсор, нужно в файле fontdir для шрифта phcursor.phf заменить 0000-0021 на E900-E921 и перезагрузить Photon. Также желательно пропатчить файл phcursor.phf, чтобы после следующего запуска mkfontdir курсор снова не исчез:
phcursor.phf
00000025: 00 E9
Это можно сделать при помощи стандартной утилиты spatch или с помощью HEX-редактора BIEW, либо скачайте уже пропатченный файл phcursor.phf.
Русификация Photon Terminal (pterm)
Что касается русификации терминала Photon’а (pterm), то хочу заметить, что русификация pterm в QNX 6.2.1 почти не отличается принципиально от русификации pterm в QNX 4.25. Отличие в том, что в окне свойств терминала нельзя выбрать/сменить тип терминала, по умолчанию тип терминала — «ANSI», если вам нужен тип терминала «QNX», то вам нужно запустить pterm с опцией -Q, но если вы сохраните конфигурацию в файле с именем pterm.rc, то может так получиться, что вы не сможете потом вернуться к типу терминала «ANSI» — это лечится удалением файла конфигурации $HOME/.ph/pterm/pterm.rc. Поэтому следующий совет: сохраняйте конфигурацию терминала в файлах с именами pterm.имя_программы.rc, и если собираетесь сохранить конфигурацию в файле pterm.rc, то не запускайте pterm с типом терминала «QNX», то есть с опцией -Q.
Например, делайте так: запускаете
pterm -Q mqc &
и сохраняете конфигурацию в файле pterm.mqc.rc, запускаете
pterm mc &
и сохраняете конфигурацию в файле pterm.mc.rc.
В pterm QNX 6.2.1/Photon 2.0 можно использовать TTF-шрифты. Например, копируете:
cp /fs/hd0-dos/windows/fonts/lucon.ttf /usr/photon/font_repository
Создаёте с помощью утилиты ptermcs файл трансляции кодировок /usr/photon/translations/cp866_cp866_unicode.cs:
ANSI charset: Cyrillic (IBM 866)
Internal/QNX charset: Cyrillic (IBM 866)
Font charset: Unicode
Жмёте правой кнопкой мыши на окне pterm, выбираете пункт «Properties», в нём: «Font», «Custom…», «Edit», добавляете шрифт: Lucida Console, Size 14 (lucidaconsoles14), подключаете файл трансляции кодировок /usr/photon/translations/cp866_cp866_unicode.cs
Шрифты вы можете скачать здесь.
Файлы трансляции кодировок *.cs для pterm (смотрите выше) в Photon 2.0/QNX 6 абсолютно точно такие же как и в Photon 1.14/QNX 4. pterm стал их поддерживать, кажется, ещё в QNX версии 6.1, но только в Photon 2.0.4/QNX 6.2.1 появилась утилита ptermcs для их создания и редактирования.
Прочее
Настройте шрифты для программ, которыми вы пользуетесь, например, для HelpViewer:
и для Voyager
Перекодировка файлов
Бывают ситуации, когда нужно перекодировать текстовые файлы из одной кодировки в другую. Например, вы хотите перекодировать HTML-файлы из кодировки KOI8-R в кодировку UTF-8, чтобы создать файлы справочной системы, или хотите перенести ваши проекты из кодировки SWD в кодировку UTF-8 (для этого опять же надо перекодировать файлы справки и перекодировать виджеты).
Перекодировать текстовые файлы из одной кодировки в другую возможно с помощью Note Pad (ped — Photon editor).
Для стандартных кодировок это делается так (на примере перекодировки из кодировки IBM 866 в кодировку UTF-8):
- Запустить Note Pad: ped &
- Через меню «Options», пункт меню «Encoding» (или Ctrl-E) выбрать кодировку «Cyrillic (IBM 866)».
- Открыть текстовый файл. При этом файл перекодируется из выбранной кодировки (IBM 866) в UTF-8.
- Через меню «Options», пункт меню «Encoding» (или Ctrl-E) выбрать кодировку «Unicode in UTF-8».
- Сохранить текстовый файл. При этом файл перекодируется из UTF-8 в выбранную кодировку (UTF-8).
- Закрыть файл.
Для кодировки SWD особый случай: чтобы перекодировать файл из кодировки SWD в какую-либо другую кодировку (отличную от IBM 866), нужно предварительно перекодировать файл из кодировки SWD в кодировку IBM 866, для этого нужно:
- Запустить Note Pad: ped &
- Через меню «Options», пункт меню «Encoding» (или Ctrl-E) выбрать кодировку «Unicode in UTF-8».
- Открыть текстовый файл.
- Через меню «Options», пункт меню «Encoding» (или Ctrl-E) выбрать кодировку «Western European (ISO 8859-1)».
- Сохранить текстовый файл.
- Закрыть файл.
Таким образом, чтобы перекодировать файл из кодировки SWD в кодировку, например, UTF-8, нужно сначала перекодировать файл из кодировки SWD в кодировку IBM-866, а затем уже из кодировки IBM 866 перекодировать его в кодировку UTF-8 (таким образом придётся два раза открывать и закрывать файл). А для перекодировки из какой-либо кодировки, отличной от IBM 866 в кодировку SWD нужно предварительно перекодировать файл в кодировку IBM 866.
Программно перекодировка текстовых строк осуществляется с помощью функций PxTranslate. Для перекодировки с помощью функций PxTranslateStateFromUTF() или PxTranslateFromUTF() из кодировки SWD в кодировку IBM 866 или для перекодировки с помощью функций PxTranslateStateToUTF() или PxTranslateToUTF() из кодировки IBM 866 в кодировку SWD нужно для функции PxTranslateSet() в качестве второго параметра указать “ISO-8859-1”.
Вы можете скачать программу фильтр-перекодировщик, которая используя функции PxTranslate считывает символы со стандартного устройства ввода stdin, перекодирует их в другую кодировку и записывает на стандартное устройство вывода stdout. Символы, которые не удаётся перекодировать, заменяются на символы подчёркивания ‘_’. Программу можно использовать для перекодировки файлов, используя перенаправление ввода-вывода. Программа требует задания в командной строки двух параметров: кодировка входного файла и кодировка выходного файла. В качестве кодировки (charset) может быть имя секции, один из алиасов или значение переменной Description файла /usr/photon/translations/charsets. Примеры запуска:
translate windows-1251 IBM866 <readme.txt >readme
translate KOI8-R UTF-8 <index.html >bookset.html
translate UTF-8 ISO-8859-1 <base.wgtw |translate IBM866 UTF-8 >base1.wgtw
Версия для QNX 6: translate.