Глава 8

Русификатор

Русификатор был написан автором этой книги в начале 1994 года и с тех пор несколько раз подвергался различным усовершенствованиям. Его основной задачей является обеспечение переключения амижной клавиатуры с латинского режима работы на русский и наоборот. Кроме того, с русификатором Амига сможет "разговаривать" по-русски. При запуске русификатора начинает работать задача, которая отслеживает нажатия на клавиши и производит все действия, необходимые для двуязычного режима работы. Единственное "официальное" описание русификатора последней на сегодняшний день версии (6.03) имеется в этой книге.

Русификатор может запускаться как из файла "S:User-Startup", так и из каталога "SYS:WBStartup". Последний вариант предпочтительнее, поскольку этот каталог — стандартный для системных расширителей Амиги (commodities), к которым относится и русификатор.

notabene! Версии русификатора до 6.0 не являются системными расширителями и должны запускаться только из файла "S:User-Startup".
Версии русификатора, начиная с 4.00 требуют ОС 2.1 или 3 (на 1.3 программа просто не запустится, да и инсталятор сообщит об ошибке).

Для установки русификатора на ваш компьютер служит программа "Install.rusifier", представляющая собой ничто иное, как инструкции для стандартной программы Installer, которая должна находиться там, где ей положено — в каталоге "SYS:Utilities". После установки русификатора с помощью инсталятора необходимо дополнительно установить карту клавиатуры "usa_Rus" для американской, "ger_Rus" для немецкой или "gb_Rus" для английской клавиатуры (в немецком варианте, например, на клавиатуре присутствует символ "§", а в английском на клавише 3 стоит значок "£"; в стандартном варианте на клавише 3 стоит "#"). Если вы захотите установить русские наклейки на клавиатуру (а вы наверняка захотите это сделать), то подспорьем для вас будут служить 3 файла из пакета русификатора:

Keyboard_USA.iff    — раскладка для американской клавиатуры;
Keyboard_German.iff — раскладка для немецкой клавиатуры;
Keyboard_GB.iff     — раскладка для английской клавиатуры.

Эти файлы содержат картинки, показывающие, где и что на клавишах лежит. Для их просмотра можно воспользоваться, например, программой MultiView или Visage.

После внедрения в систему русификатора вы можете установить русский язык в качестве основного языка вашего компьютера, использовав программу "SYS:Prefs/Locale". Все переведённые на русский язык каталоги будут находиться в соответствующих подкаталогах каталога "SYS:Locale". Workbench также "обрусеет".

Клавиатура

Переключение с русского на латинский режим, или наоборот, производится с помощью клавиш "Правый Alt" (переключить постоянно) или "Левый Alt" (переключить, пока удерживается эта клавиша).

Светодиод "Power" теперь является индикатором режима — ярко горит в русском режиме и тускло — в латинском (поскольку светодиод сблокирован со звуковым фильтром, вы можете теперь одним нажатием клавиши "Правый Alt" менять тембр звука). Временное переключение режимов с помощью клавиши "Левый Alt" не влияет на яркость свечения светодиода.

На некоторых клавишах, русские буквы вынуждены соседствовать со знаками препинания (разумеется, не по вине автора). Так, на немецкой клавиатуре с буквой "Б" соседствуют символы "." и ";" — ясно, что в русском режиме теперь точку или точку с запятой не набрать — для этого надо переключиться в латинский режим, набрать соответствующий символ, а затем переключиться назад в русский режим, что мягко говоря, весьма неудобно. Нажатие клавиши временного переключения языкового регистра "Левый Alt" тоже не панацея — надо каждый раз соображать, в каком режиме вы находитесь, прежде чем набрать, допустим, точку. Поэтому русификатор использует нажатие клавиши "Левая Amiga" для временного включения латинского режима только для тех клавиш, где русские буквы соседствуют со знаками препинания.

Ряд прикладных программ (например, текстовый процессор WordWorth) жёстко используют клавишу "Правый Alt" для вызова части встроенных функций. Поскольку русификатор считает эту клавишу "своей", то для использования её в тех прикладных программах, где переопределить её невозможно, русификатор имеет возможность временно отдать системе правый Alt. Для этого необходимо нажать комбинацию клавиш "Ctrl + Правый Alt", после чего нажатия правого Alt-a будут восприниматься прикладной программой безо всяких ограничений (при этом автоматически включится латинский режим, правый Alt начнет действовать так же, как левый, и по-русски можно работать, только удерживая любой из Alt-ов). Повторное нажатие "Ctrl + Правый Alt" вернёт русификатор в "нормальное" состояние.

Та же ситуация, что и с клавишей "Правый Alt" в принципе может где-либо возникнуть и с клавишей "Левая Амига", которая, как уже было указано, в комбинации с клавишами, содержащими как русские буквы, так и знаки пунктуации, вынуждает клавиатуру возвращать именно знаки пунктуации. Нажатие комбинации клавиш "Левый Alt + Ctrl" "отдаст" системе в полное владение клавишу "Левая Амига" (разумеется, после этого вам придётся включать латинский режим для вывода знаков пунктуации, соседствующих с русскими буквами). Повторное нажатие комбинации клавиц "Левый Alt + Ctrl" вернёт клавишу "Левая Амига" русификатору.

Шрифты

Русификатор перехватывает попытки любой программы открыть шрифт "topaz.8" или "topaz.9" и "подсовывает" ей вместо него один из двуязычных шрифтов (по умолчанию — "topar.8" или "topar.9"). Понятно, что это действие может произойти только после запуска русификатора. Системные же шрифты открываются ДО запуска русификатора при исполнении команды IPrefs файла "S:Startup-Sequence". С помощью программы "SYS:Prefs/Fonts" вам надо заменить стандартные (не русифицированные) шрифты на русифицированные (из числа поставляемых с этой программой).

Параметром для русификатора при его запуске может служить имя шрифта, замещающего "topaz.8". Этот шрифт должен быть обязательно фиксированной ширины (не пропорциональный, а растровый!), высотой ровно 8 точек (8-м кеглем) и шириной менее 9-ти точек. При отстутствии параметра таким шрифтом считается "topar.8". Для экранных режимов высокого разрешения (например, Multiscan 640x480 или DblPAL 640x512) наилучшим вариантом, по всей видимости, является шрифт Xen. В этом случае строка запуска русификатора в файле "S:User-Startup" должна выглядеть, так:

C:Russifier FONT=Xen.font

А параметром иконки при запуске русификатора из каталога "SYS:WBStartup" должна служить строка:

FONT=Xen.font

Вместе с русификатором также поставляются несколько наборов различных двуязычных шрифтов, использование которых абсолютно необходимо, если вы намерены работать в русском режиме (если где-либо в используемых вами программах были установлены шрифты, отличные от "topar.8", то необходимо перенастроить эти программы на какие-либо из шрифтов, поставляемых с русификатором). Посмотреть, как выглядит часть этих шрифтов можно в файле "LookAtFonts.iff".

Большинство предлагаемых шрифтов содержат также т.н. псевдографические символы, использование которых резко облегчает, например, расчерчивание таблиц. Пропорциональные шрифты (т.е. такие шрифты, различные символы которых имеют разную ширину) псевдографики не содержат. В связи со спецификой компьютера Amiga, использование псевдографики в полном объёме возможно не всегда, хотя большинство имеющихся текстовых редакторов (например, GoldEd или CygnusEd) позволяют работать с ней без каких-либо ограничений.

Вот таблицы с кратким описанием прилагаемых bitmap-шрифтов:

МОНОШИРИННЫЕ
Имя Высота Ширина Псевдографика Тип
Topar 8 8 Да Bold
Topaz 11 8 Да Bold
Pica60 8 6 Да Bold
DPaint * 8 8 Нет Bold
Personal * 8 8 Нет Bold
Courier 10 Да Thin
11 9 Да Thin
12 Да Thin
13 7 Да Thin
14 Да Thin
15 9 Да Thin
18 11 Нет Thin
24 15 Нет Thin
Xen 8 6 Да Thin
9 6 Да Thin
11 7 Да Thin
13 8 Да Thin
ПРОПОРЦИОНАЛЬНЫЕ
Имя Высота Псевдографика Тип
ADPTProFont 15 Нет Bold
DGSansSerif 7 Нет Thin
8 Нет Thin
9 Нет Thin
11 Нет Thin
13 Нет Thin
Helvetica 7 Нет Thin
8 Нет Thin
9 Нет Thin
10 Нет Thin
11 Нет Thin
12 Нет Thin
13 Нет Thin
14 Нет Thin
15 Нет Thin
18 Нет Bold
24 Нет Bold

* — Шрифт DPaint предназначен исключительно для одноименной программы, т.к. имеет массу специфических символов; то же касается шрифта Personal, относящегося к программе PPaint.

Принтеры

В комплект поставки включено несколько программ — драйверов для двуязычных принтеров. Для правильной работы принтера при выводе русского текста и псевдографики в текстовом режиме, необходимо задействовать внутреннюю таблицу принтера, в которой русские буквы начинаются с позиции (HEX) b0 (например, таблицу "USSR GOST" принтера EPSON LQ (LX) 100). Драйвер "EpsonX.Rus" предназначен для работы с 9-игольчатыми EPSON-совместимыми принтерами, остальные драйверы — для 24-игольчатых EPSON-совместимых принтеров (драйвер "EPSONQ020+" НЕ РАБОТАЕТ с процессором 68000!).

Перенос файлов из системы в систему

Для преобразования файлов можно воспользоваться установкой таблиц "INTL_RUS" или "MAC_RUS" и режимов "translation" и (возможно) "text filtering" в CrossDOS. Преобразование двуязычного текста и псевдографики будет при этом происходить "на лету" при чтении/записи с PC- или Мacintosh-форматированных дискет. Следует только учитывать одну существенную особенность, касающуюся использования опции "text filtering", действие которой заключается в изъятии из текста, считываемого с PC-дискеты символов с десятичным кодом 13, находящихся в конце строк текста и обратном восстановлении этих символов при записи на PC-дискету. Некоторые программы, (например Directory OPUS и Moor) при попытке произвести какие-либо операции с файлами напрямую с PC-дискеты, могут повести себя непредсказуемо из-за того, что размер файла, считываемого с PC-дискеты сокращается в результате изъятия из него вышеуказанных символов при включенной опции "text filtering" в CrossDOS. Поэтому старайтесь избегать включения опции "text filtering" при ЧТЕНИИ РС-дискет через CrossDOS, используйте лишь "text translation" с таблицей "INTL_RUS" — в этом случае символы 13 преобразуются в концевые пробелы в строках и изменения длины файла не происходит. При записи на PC-дискеты "text filtering" желательно включить (всё вышесказанное относится ИСКЛЮЧИТЕЛЬНО К ТЕКСТОВЫМ ФАЙЛАМ, для всех прочих как "text filtering" так и "text translation" ДОЛЖНЫ БЫТЬ ВЫКЛЮЧЕНЫ!!!).

Кроме того, при использовании редактора GoldEd у вас появляется возможность легко переносить двуязычные текстовые файлы (возможно, содержащие псевдографику) с платформ PC и Macintosh на Amiga и обратно без использования перекодировки "на лету" через CrossDOS. Для этого прилагаются 4 перекодировочные таблицы:

AmigaToMSDOS.cvt  — Amiga → MS-DOS
MSDOSToAmiga.cvt  — MS-DOS → Amiga
AmigaToMac.cvt    — Amiga → Macintosh
MacToAmiga.cvt    — Macintosh → Amiga

Эти таблицы будут автоматически помещены инсталятором в директорию "SYS:Prefs/Presets/GoldEd" (разумеется, если такая директория существует на вашем жёстком диске).

Дополнительные перекодировочные таблицы "OldRusToAmiga.cvt" и "OldToNormal.cvt" могут быть использованы для перекодировки "старинных" русских текстов в стандартный формат Amiga). "Старинные" кодировки применялись на Amiga до появления русификатора и содержали русские буквы, расставленные по-другому, нежели в русификаторе. Подобные расстановки вызывали массу "головных болей" при работе и от нее пришлось отказаться.

Если вы пользуетесь программой TERM для терминальной связи, то может оказаться полезным ещё один файл, входящий в комплект русификатора: "Amiga<>PC.prefs". Этот файл позволяет "на лету" перекодировать текстовый формат PC в формат Amiga для приходящих файлов и/или сообщений и осуществлять обратное преобразование для передаваемых вами файлов/сообщений. Инсталятор автоматически поместит этот файл в директорию "TERM:Config", если она, разумеется, имеется на вашем жёстком диске.

Do you speak Russian?

После установки русификатора ваша Амига сможет "разговаривать" по-русски. Для этого можно воспользоваться ARexx-портом русификатора. Имя порта — "Rusifier.port" (регистр букв в имени порта должен быть неизменным!). Дальше все очень просто — вы можете исполнить ARexx-команду русификатора SPEAK. К сожалению, использование стандартной команды Say не годится — она напрочь отбрасывает не англоязычные буквы и не передаёт их библиотеке трансляции (которая теперь работает под контролем русификатора). То же самое относится и к стандартному устройству "SPEAK:" (ему соответствует файл "L:Speak-handler"). Видимо в корпорации Commodore в своё время никому не пришло в голову, что Amiga когда-нибудь заговорит не только по-английски (хоть и с изрядным английским акцентом). Взламывание чужих, даже не совсем правильно работающих программ, находится далеко вне сферы интересов автора, поэтому и Say и "L:Speak-handler" остались нетронутыми, а функции речевой поддержки были возложены на русификатор.

Для активации любых ARexx-команд необходимо, чтобы в вашей системе работал ARexx-сервер (обычно запускается из файла "S:User-Startup" командой "System/RexxMast >NIL:" — если запускать из "SYS:WBStartup", то каждый раз будет вылетать надоедливое окошко). Можете сразу попробовать исполнить из Shell следующую строку:

rx  "address 'Rusifier.port'; 'SPEAK Здравствуйте!'"

и вам станет всё ясно по поводу использования команды SPEAK. С помощью соответствующих ARexx-команд можно изменить звучание речи (после запуска русификатора устанавливается неспешный мужской бас) следующим образом:

MALE          — мужской голос;
FEMALE        — женский голос;
PITCH/N/A     — высота голоса. Числовой параметр может находиться 
                в диапазоне от 65 (бас) до 320 (наверное, сопрано);
RATE/N/A      — скорость произношения. Числовой параметр может 
                находиться в диапазоне от 40 (медленнее некуда) до 400;
VOLUME/N/A    — громкость звука: 0 — ничего не слышно, 
                64 — максимальная громкость;
STANDARD      — восстанавливаются начальные речевые установки 
                (PITCH 65, MALE, RATE 135, VOLUME 64).

На прилагаемой к этой книге дискете есть ARexx-файл управления русификатором "Речь.гехх", где пробуются различные режимы произношения.

Вы можете чередовать русские и английские слова в произносимой фразе произвольным образом. Русское ли слово, или английское, определяется по первой встреченной в слове букве за исключением "а" ("а" на русифицированной Амиге — общая буква для обоих языков).

А вот что касается цифр и всяких значков: если во встреченном тексте нет ни одной русской буквы, и не установлен режим предпочтения русского языка, то текст считается полностью английским и всё читается по-английски. Иначе все значки, которые можно прочитать (типа % — процент), а также все цифры читаются по-русски. Режим предпочтения русского языка устанавливается ARexx-командой:

PREFER RUSSIAN

а режим предпочтения английского языка командой:

PREFER ENGLISH

Русификатор позволяет управлять фильтром низких частот на момент воспроизведения речи. По умолчанию, во время произношения какой-либо фразы фильтр отключается, что дает менее глухой звук, нежели со включенным фильтром. Существуют 3 команды ARexx-a, позволяющие устанавливать режим работы фильтра:

FILTER OFF     — при воспроизведении фильтр отключается;
FILTER ON      — при воспроизведении фильтр включается;
FILTER IGNORE  — воспроизведение речи не влияет на звуковой фильтр.

Следует заметить, что поскольку яркость свечения светодиода "Power" напрямую зависит от состояния фильтра, а этот же светодиод индицирует включение русского или латинского режима, то на время воспроизведения речи русско-латинский режим может временно переключаться (впрочем, это имеет значение только в том случае, если вы работаете на клавиатуре, когда Амига говорит, что весьма маловероятно). Если возникнут неудобства, исполните FILTER IGNORE из Shell-окна:

rx "address 'Rusifier.port'; 'FILTER IGNORE'"

Для программистов

Кроме вышеупомянутых команд, управляющих речевым синтезатором, русификатор понимает еще несколько:

RUSSIAN — включить русский режим;

ENGLISH — включить латинский режим;

TOGGLE — сменить русский режим на латинский или наоборот;

ASKMODE — команда возвратит в переменной RC значение 1, если включён русский режим или 0 в противном случае;

STOP — запретить обработку входных событий в системе (блокировка мыши и клавиатуры). Может быть полезно, если вы, например, хотите воспользоваться для своих целей "мышиным" портом, не отдавая его системе, а также во многих других случаях, когда вся ваша программа берёт обработку любых входных событий "на себя", а возиться с установкой хэндлера прерываний для устройства "input.device" нет особого желания.

GO — отменить действие команды STOP;

FREE_ALT — отдать системе клавишу "правый Аlt";

GET_ALT — вернуть клавишу "правый Alt" русификатору;

FREE_LAMIGA — разрешить системе обрабатывать комбинации клавиш ["Левая Амига" + клавиша с русской буквой и знаками пунктуации];

LOCK_LAMIGA — русификатор использует комбинацию клавиш ["Левая Амига" + клавиша с русской буквой и знаками пунктуации] для выдачи знаков пунктуации вне зависимости от того, какой режим (русский или латинский) установлен.

Деятельность русификатора сводится к перехвату входных событий и насильственной вставке признака IEQUALIFIER_RALT в случае установки пользователем русского режима. Хэндлер входных событий русификатора вызывается по прерываниям из "input.device". Клавиатурные карты надлежащим образом модифицированы для выдачи соответствующих русских кодов при установленном ALT-признаке.

Русификатор "навешивает" перехваты на следующие системные функции:

    Имя функции         Чья это функция
1.  OpenFont()          graphics.library
2.  Translate()         translator.library
3.  OpenLibrary()       exec.library


Сайт создан в системе uCoz