Wiki Info
Contact

Русификация 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/ также уже есть немецкая и американская раскладки:

  1. kbd.tbl.de - DE-102 (German) layout.
  2. 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».

users_configuration.gif

Программа «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:

helpviewer_font.gif

и для Voyager

WWW_configuration.gif

Перекодировка файлов

Бывают ситуации, когда нужно перекодировать текстовые файлы из одной кодировки в другую. Например, вы хотите перекодировать HTML-файлы из кодировки KOI8-R в кодировку UTF-8, чтобы создать файлы справочной системы, или хотите перенести ваши проекты из кодировки SWD в кодировку UTF-8 (для этого опять же надо перекодировать файлы справки и перекодировать виджеты).

Перекодировать текстовые файлы из одной кодировки в другую возможно с помощью Note Pad (ped — Photon editor).

Для стандартных кодировок это делается так (на примере перекодировки из кодировки IBM 866 в кодировку UTF-8):

  1. Запустить Note Pad: ped &
  2. Через меню «Options», пункт меню «Encoding» (или Ctrl-E) выбрать кодировку «Cyrillic (IBM 866)».
  3. Открыть текстовый файл. При этом файл перекодируется из выбранной кодировки (IBM 866) в UTF-8.
  4. Через меню «Options», пункт меню «Encoding» (или Ctrl-E) выбрать кодировку «Unicode in UTF-8».
  5. Сохранить текстовый файл. При этом файл перекодируется из UTF-8 в выбранную кодировку (UTF-8).
  6. Закрыть файл.

Для кодировки SWD особый случай: чтобы перекодировать файл из кодировки SWD в какую-либо другую кодировку (отличную от IBM 866), нужно предварительно перекодировать файл из кодировки SWD в кодировку IBM 866, для этого нужно:

  1. Запустить Note Pad: ped &
  2. Через меню «Options», пункт меню «Encoding» (или Ctrl-E) выбрать кодировку «Unicode in UTF-8».
  3. Открыть текстовый файл.
  4. Через меню «Options», пункт меню «Encoding» (или Ctrl-E) выбрать кодировку «Western European (ISO 8859-1)».
  5. Сохранить текстовый файл.
  6. Закрыть файл.

Таким образом, чтобы перекодировать файл из кодировки 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.