CyrHack
Бесплатный русификатор Palm (Pilot) PDA компьютеров
 ENLiGHT Project. Новости об информационных технологиях, науке, авиации и космонавтике

Интернет: ЛЭИВО

главная страница | palm faq | новости от ib/news | другие проекты | www.palmgear.com | письмо | win koi lat

Как самому создавать модули для CyrHack

Модули в CyrHack II представляют собой отдельные файлы, в которые вынесены языкозависимые ресурсы - шрифты, раскладки клавиатур и сами клавиатуры, таблицы граффити, сортировок и так далее. Файл должен обязательно иметь CreatorID = 'Cyr2' и тип 'plug'. Имя модуля по возможности должно быть дескриптивным (например, "Ukrainian (KOI8)").

Все ресурсы являются факультативными. Если какого-то ресурса нет, то вместо него будет использоваться системный. Таким образом, вполне реально создать модуль, который будет подменять, например, только системный шрифт, и занимать при этом всего два-три килобайта.


        Тип  ID   Комментарий
        --------------------------------------------------------------------------------
        font 1000  System font (0)
        font 1001  Bold font (1)
        font 1002  Large font (2)
        font 1003  Symbol font (3) - шрифт со значками Graffiti shift (en/En/EN)
        font 1007  LargeBold font (7)
        font 2003  Шрифт со значками Graffiti shift для национальной раскладки (ru/Ru/RU)
        tkbd 10000 Экранная клавиатура
        graf 1000  Таблица подстановки символов для граффити
        attr 1000  Таблица атрибутов символов
        case 1000  Таблица весов символов для caseless compare
        sort 1000  Таблица сортировки символов
        kbdx 1000  Таблица подстановки символов для внешней клавиатуры
        tver 1     Версия модуля
        tstr 1000  Инфоpмация о модуле, pазpаботчиках, и т.д.

        
Список со временем может дополняться новыми ресурсами, например, с кодом (по аналогии с хаками) или картинками (иконки, справка по граффити).

ШРИФТЫ

Шрифты - стандартные, в формате NFNT. Нарисовать или отредактировать их можно с помощью программ типа FED или FontEdit. Последние версии PilRC также имеют ограниченную поддержку шрифтовых ресурсов.

ЭКРАННАЯ КЛАВИАТУРА

Стандартный tkbd ресурс. Для изготовления или правки рекомендую воспользоваться пакетом Y-TKBD Владимира Медейко.

ТАБЛИЦЫ СОРТИРОВКИ 'sort' и 'case'

Представляют из себя массивы по 256 байт, где в позиции, соответствующей коду символа, располагается его вес. Подробней о таблицах можно почитать в SDK.

ТАБЛИЦА 'case'

Массив из 256 двухбайтовых значений. Каждое битовое поле значения соответствует тому или иному признаку символа. Подробней см. все в том же SDK.

ТАБЛИЦА ПОДСТАНОВКИ ГРАФФИТИ

Массив из 128 символов. Первые 64 символа - коды, подставляемые вместо вводимых кодов в диапазоне 0x41-0x7f. Следующие 64 - коды, подставляемые вместо комбинаций "символ" + акцент.

ТАБЛИЦА ПОДСТАНОВКИ ДЛЯ ВНЕШНЕЙ КЛАВИАТУРЫ

Еще более простая вещь. 128 символов, которые подставляются вместо порождаемых клавиатурой кодов в диапазоне 0x00-0x7f.

КАК СОБРАТЬ МОДУЛЬ В ДОМАШНИХ УСЛОВИЯХ

Лучше и проще всего попросить сделать это приятеля, не пугающегося шестнадцатиричных кодов и ломавшего в детстве программы для ZX Spectrum. Для простоты предположим, что требуемые ресурсы мы изготовили или выдрали из других файлов. Совсем хорошо, если делается это в unix-подобной ОС (я собираю под Linux), но ничто не мешает сделать то же под Windows или - со временем - написать могучий редактор с пищалками и мигалками.

Для сборки модуля изготовим файл с описанием ресурсов (назовем его Russian-1251.rcp):

        DATA "font" ID 1000 "Res/nfnt2328.bin"
        DATA "font" ID 1001 "Res/nfnt2329.bin"
        DATA "font" ID 1002 "Res/nfnt232a.bin"
        DATA "font" ID 1003 "Res/nfnt232b.bin"
        DATA "font" ID 1007 "Res/nfnt232f.bin"
        
        DATA "font" ID 2003 "Res/gsi-ru.bin"
        
        DATA "tkbd" ID 0x2710 "Res/tkbd2710.bin"
        
        DATA "graf" ID 1000 "Res/graffiti.bin"
        DATA "attr" ID 1000 "Res/charattr.bin"
        DATA "case" ID 1000 "Res/caseless.bin"
        DATA "sort" ID 1000 "Res/sort.bin"
        
        DATA "kbdx" ID 1000 "Res/kbdxlat.bin"
        
        VERSION "1.00"
        
и воспользуемся нехитрым Makefile:

## Makefile for CyrHack module

TARGET = Russian-1251
NAME = "Russian (1251)"
CREATORID = "Cyr2"
TYPE = "plug"

BUILDPRC = build-prc
PILOTXFER = pilot-xfer
PILRC = pilrc

all: $(TARGET).prc

$(TARGET).prc: bin.res
$(BUILDPRC) -n $(NAME) -o $(TARGET).prc -c $(CREATORID) -t $(TYPE) *.bin

bin.res: $(TARGET).rcp
$(PILRC) $(TARGET).rcp .
touch bin.res

clean:
-rm -f *.[oa] $(TARGET) *.bin bin.res Makefile.bak

install:
pilot-xfer -i $(TARGET).prc

CyrHack  (C) Tim N. Tashpulatov
"CyrHack web pages - http://www.enlight.ru/pilot/cyrhack".
Hosted as part of ENLiGHT Project