Создание башкирской раскладки для Mac OS X

от автора

Смена операционной системы или устройства, если вы пишете на каком-нибудь не очень распространенном языке, например, башкирском — это всегда сложности. Поэтому, люди до сих пор сидят на Windows XP, с криво прописанными в реестре кастомными раскладками и столь же кривыми «башкирскими» шрифтами. Ведь хоть и криво, но работает. Много лет и я сидел на Windows и как-то даже не вспоминал о существовании проблемы, но пересев на Mac, обнаружил, что по умолчанию в OS X башкирской раскладки нет. Пошел искать кастомную в Интернете, где меня тоже ждало разочарование. Как же так, вроде столько лет прошло? В итоге, как это уже однажды было с Android, решил сделать все самостоятельно.

На самом деле, проблемы есть не только у башкир, более многочисленные народы до сих пор не имеют своих раскладок в новых ОС или выпускают их с большой задержкой. Поэтому, я попробую описать процесс создания, чтобы помочь таким же как я энтузиастам.

image

Башкирский алфавит

Для того, чтобы лучше представлять о чем дальше будет идти речь, сначала взглянем на башкирский алфавит. Всего в нем 42 буквы, из них 33 буквы русского алфавита + 9 дополнительных. На мой взгляд — это очень много, тем более что некоторые буквы используются только для заимствований из русского. Такая избыточность не позволяет комфортно разместиться на клавиатурах. В целом такая же проблема есть у многих народов на территории бывшего СССР, испытавших на себе влияние сталинизма.
image

Принципы используемые при создании раскладки

Прежде чем начать работу, нужно постараться сформулировать простые принципы, от которых можно отталкиваться и применять в минуты сомнений. В моем случае часть первоначальных принципов не прижилась и отвалилась, столкнувшись с реальностью, о них расскажу ниже. А вот те, которые остались:

  1. Большинство людей привыкли к стандартной раскладке в ОС Windows, впервые вышедшей на Vista (далее везде, PC-раскладка). В ней не все идеально, она не самая удобная, но уже прижилась. Поэтому для того, чтобы максимально быстро сделать рабочий инструмент я отталкивался от нее. А оригинальная раскладка, учитывающая реальную частоту употребления букв в языке, — это задача ближайшего будущего.
    image
  2. Совместимость дополнительных (типографских) знаков с английской раскладкой. Очень удобно, когда видишь на физической клавиатуре то, что можешь набрать. В русской раскладке многие знаки нашли себе место по остаточному принципу (и их меньше), поэтому на нее стараемся не ориентироваться (это касается только дополнительных знаков).
  3. Цифровая клавиатура уходит под Option (Alt). Да, на первый взгляд, это весьма сомнительное решение. Но другого выбора нет, потому что буквы используются намного чаще.
  4. Важно, чтобы с помощью башкирской раскладки можно было набирать тексты на русском, не переключаясь.

Проектирование

Прежде чем начать работу в редакторе, нужно перечислить и нарисовать все состояния, в которых может находиться клавиатура. Состояния эти зависят от нажатия клавиш модификаторов, таких как Command (cmd), Shift (⇧), Control (ctrl), Option (alt) и Caps Lock. В случае с башкирской клавиатурой, у меня получились следующие состояния:

  1. Башкирский алфавит строчные + основные знаки пунктуации — это стандартное состояние, по умолчанию;
  2. Башкирский прописные + основные знаки пунктуации — Caps Lock;
  3. Буквы алфавита прописные + основные знаки пунктуации 2 — Shift;
  4. Английский qwerty строчные (для команд и горячих клавиш, идентично английской раскладке) — Сommand;
  5. Английский QWERTY прописные (идентично английской раскладке) — Command + Shift;
  6. Дополнительные символы + цифры — Option;
  7. Дополнительные символы 2 — Option + Shift;
  8. Дополнительные символы (идентично английской раскладке) — Control.

Честно сказать, в ходе работы я постоянно экспериментировал и состояния менялись, добавлялись и убирались. Например, пробовал оставить цифры только в состоянии с нажатым Command, но при тесте это не работало, текстовый редактор не хотел набирать текст и ждал от пользователя команду. В конце-концов победили простые и привычные решения.

Работа в редакторе

Для создания раскладки я пользовался бесплатной программой Ukelele, выпущенной сообществом SIL, которое известно, например, тем, что разрабатывает хорошие свободные шрифты и языковое ПО.

За основу был взят файл существующей русской раскладки ЙЦУКЕН. Есть 2 способа сделать это: первый — выбрать русский как источник ввода ОС, затем в программе открыть в меню File — New From Current Input Source (то есть, новый из текущего источника ввода); второй, открыть файл раскладки, идущий вместе с программой System Keybords/Cyrillic/Russian.keylayout

Вся работа происходит в визуальном редакторе, это просто и удобно. Чтобы назначить клавише знак, нужно сделать двойной клик по кнопке виртуальной клавиатуры. Чтобы редактировать состояние раскладки со влюченным модификатором, нужно просто нажать на клавишу модификатор, вместо стандартного состояния появится состояние, соответствующее модификатору. Чтобы не мучиться постоянно держа нажатой клавиши, включите залипание в Меню — View — Sticky Modifiers.

Обзор всех созданных состояний можно открыть с помощью command+shift+m (на приведенном снимке экрана, нумерация не соответствует той, что я задал в начале). Внизу отдельно указано, какое из состояний является стандартным (default set). В таблице мы видим, какие модификаторы используются для каждого состояния.

Возможно, вам потребуется создать какое-то состояние самому. Для этого нажмите «+», и выберите какие модификаторы задействовать. Заметим, что для клавиш Shift, Option и Control можно назначать правую или левую клавишу отдельно. У меня состояния получились схожими с теми, которые есть в русской раскладке.

После этого, нужно выбрать какой набор символов вы будете использовать.

  • Если вы выберете Empty, откроется чистая раскладка без символов.
  • Standart можно открыть какой-то из распространенных наборов, например английскую QWERTY.
  • А если нужно выбрать существующий набор, выбираем пункт Copy of existing map.

Apple выпустила более десятка различных видов клавиатур, различающихся расположением клавиш и стандартами. Поэтому, нужно обязательно постоянно тестировать раскладку. Список всех клавиатур открывается в Меню — View — Keyboard Types.

Обратите особое внимание на различие типов ANSI и ISO, во втором клавиш больше. Например, у меня возникла проблема, что в современных Apple Wireless ISO клавиатурах на месте клавиши «`» в рядом с цифрами располагается клавиша «>», и когда когда у пользователя ANSI клавиатура, буква Ә внезапно пропадала. При этом, если перенести ее на клавишу «`», на ISO она была бы не в ряду цифр, а по соседству с Я в 4-м ряду. В итоге, пока мне пришлось оставить букву Ә на обоих клавишах.

В одной из промежуточных версий раскладки мне пришла в голову идея добавить совместимость с еще одной популярной в башнете раскладкой, где дополнительные буквы набираются через alt. Но во время тестирования я понял, что это неудобно.

Итоговая схема раскладки

Из-за отличий в конфигурациях физической клавиатуры Мака, не удалось сохранить верхний ряд с дополнительными дополнительными буквами башкирского алфавита точно таким же как в PC-раскладке. Например, «Ң» переместилась на место «№», потому что «№» точно не является часто используемым знаком. Хотел бы я спросить авторов первоначальной раскладки, как он туда вообще попал. Место двоеточия заняла запятая, потому что она нужна гораздо чаще и отмечаная на физической клавиатуре. При нажатии Shift место запятой занимает двоеточие, а точки — точка с запятой, довольно легко запомнить.

С состояниями при нажатом Option и Option+Shift я «игрался» в пятнашки дольше всего. Но помогли мне разобраться несколько правил. На Option переехали все цифры и знаки верхнего ряда (+ часть типографских знаков изображенных на физической клавиатуре) из стандартного состояния английской раскладки, а на Option+Shift из нее же состояние с Shift. Максимально старался использовать мнемонические правила, например № находится на клавише N, а знак евро на клавише с латинской E.

Состояния при нажатых Command, а также Command+Shift, как и планировалось, полностью соответствуют стандартной английской раскладке, с Shift+ Control — английской Control. Это необходимо, чтобы в системе и приложениях работали горячие клавиши и навигация с клавиатуры.

Добавление иконки

Для начала, нужно в графическом редакторе создать уменьшенную копию флага, соответствующего языку, размером 16×12 px (или 16×11 px в зависимости от того, что на рисовано на флаге) и сохранить в формате PNG.

Переконвертировать все это в родной формат маковских иконок .icns можно при помощи программы fasticms. После запуска программы на экране появится куб, куда перетаскиваем файл png и сохраняем его как icns в открывшемся окне.

Чтобы прикрепить иконку к раскладке пройдите в Меню — Keyboard — Attach Icon File.

Установка дополнительных параметров

Осталось сделать еще несколько действий и прежде чем опубликовать раскладку.

Нужно добавить название раскладки, которое будет отображаться в системе (Меню—Keyboard—Set Keyboard Name). Примеры названий: ArmenianWesternQWERTY, Serbian-Latin и Turkish-QWERTY-PC. Я назвал свою версию Bashkir-PC.

Теперь нужно установить язык, письменность, регион и вариант письменности (Меню—Keyboard—Set Keyboard Name). В башкирском языке используется кириллица.

Не забывайте контролировать версии вашей раскладки (Меню—Keyboard—Set Version Info).

Ну все, теперь можно сохранить файлы и пользоваться. Обратите внимание, что вместе с основным файлом раскладки в формате keylayout рядом обязательно должен быть файл иконки в icns c аналогичным названием.

Вы можете скачать и установить себе созданную башкирскую раскладку.
Инструкция по установке есть на странице проекта.

Дополнительные материалы по теме

Татарская раскладка — пример раскладки, где дополнительные буквы вставляются через AtlGr.

Киргизская раскладка

Еще одна инструкция по созданию раскладки в Ukelele

Можно почитать учебные материалы, которые идут в комплекте с программой (папка Ukelele Tutorial).

ссылка на оригинал статьи http://habrahabr.ru/company/adv/blog/189556/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *