вторник, 26 мая 2009 г.

Составляем башкирскую раскладку для Linux

В настоящее время в дистрибутивы Linux не включена башкирская раскладка клавиатуры, хотя символы башкирских букв уже включены в несколько основных шрифтов, в том числе и в Times New Roman.

Любой пользователь даже начинающий может решить эту проблему самостоятельно и сделать набор башкирских текстов быстрым и удобным. Описанный ниже способ позволяет создавать раскладки клавиатур и для других национальных языков, а также создавать собственные, соответствующие индивидуальным запросам. Если вам часто приходится использовать специфические символы (например, знаки национальных валют, транскрипции, знаки малораспространенных алфавитов и т. д.), можно их просто добавить в набор символов любой стандартной клавиатуры. Таким образом, можно использовать их напрямую практически во всех современных приложениях. Описание способа установки пользовательских раскладок я нашел в блоге Daniel Paul O'Donnell.
Я использую Ubuntu 9,04, но описываемый способ должен подходить и для других дистрибутивов, потому что за ввод данных с клавиатуры отвечает оконный менеджер Xorg, общий для всех разновидностей Linux.

Башкирский алфавит состоит из 42 букв - в дополнение к 33 буквам русского алфавита включены 9 букв:
Әә Өө Ҡҡ Ғғ Ҫҫ Ҙҙ Һһ Үү Ңң
Поскольку самой распространенной операционной системой является Windows, предлагаю, расположить символы так же, как это сделано Microsoft Vista. Башкирская раскладка представляет собой стандартную русскую, дополненную буквами башкирского алфавита, которые расположены в верхнем (цифровом) ряду. В башкирской раскладке, кроме того немного изменено расположение знаков пунктуации.
"~" (в русской раскладке "Ё") - Ә
"1" - восклицательный знак, + shift - кавычки
"2" - Ө
"3" -Ҡ
"4" - Ғ
"5" - Ҫ
"6" - двоеточие, + shift - точка с запятой
"7" - Ҙ
"8" - Һ
"9" - вопросительны знак, + shift - открывающая скобка
"0" - знак номер, + shift - закрывающая скобка
"-" - остается знак "минус", + shift знак процента
"=" - Ү
"\" - Ң
Спешу успокоить владельцев ноутбуков, в Linux-решении в отличие от Windows, для набора цифр нет необходимости переключать раскладку. При нажатии и удержании правой клавиши Alt (AltGr) верхние цифровые клавиши работают также, как в стандартной русской раскладке.

Раскладки клавиатуры в Ubuntu хранятся в каталоге /usr/share/X11/xkb/symbols/ (в других дистрибутивах может быть по другому). Здесь содержатся текстовые файлы, название которых соответствует стране, использующей данный вид раскладки. Поскольку башкирский алфавит основан на русской кириллице, вносить изменения мы будем в файл "ru". Для этого пользователю потребуются привилегии супер-пользователя. В консоле или же по Alt+F2 запускаем любимый текстовый редактор, работающий с кодировкой UTF-8:
gksu gedit /usr/share/X11/xkb/symbols/ru
Теперь необходимо присвоить кодам клавиш шестнадцатеричные значения юникода, соответствующие башкирским буквам. Их можно можно посмотреть в "Таблице символов" (Приложения->Стандартные->Таблица символов). Башкирские буквы расположены в разделе "Кириллица". В Kubuntu таблицу символов можно установить по команде:
sudo apt-get install gucharmap
В файле ru, не мудрствуя лукаво, копируем заголовок описания раскладки из любой другой описанной в этом файле национальной раскладки, меняем название раскладки и приступаем к ее формированию. Например, чтобы назначить клавише "3" символ Ҡ, пишем:
key <AE03> { [     0x010004a1,       0x010004a0,    3,       3 ] };















Коды букв смотрим в таблице символов, коды клавиш можно посмотреть по этой ссылке
В итоге у нас получилась башкирская раскладка клавиатуры:
partial alphanumeric_keys
xkb_symbols "bsh" {
include "ru(winkeys)"

name[Group1]= "Russia - Bashkir";

key.type[group1]="FOUR_LEVEL";
key <TLDE> { [ 0x010004d9, 0x010004d8,
Cyrillic_io, Cyrillic_IO ] };
key <AE01> { [ exclam, quotedbl, 1, 1 ] };
key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] };
key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] };
key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] };
key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] };
key <AE06> { [ colon, semicolon, 6, 6 ] };
key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] };
key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] };
key <AE09> { [ question, parenleft, 9, 9 ] };
key <AE10> { [ numerosign, parenright, 0, 0 ] };
key <AE11> { [ minus, percent, minus, underscore ]};
key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ]};
key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ]};

include "level3(ralt_switch)"
};
Первое цифровое значение описывает символ, который должен появиться после простого нажатия клавиши (строчная буква), второй - при нажатии совместно с Shift (заглавная буква), третье и четвертое значения описывают символы, которые появляются при одновременном нажатии с AltGr или AltGr+Shift соответственно. В нашем случае это цифровой символ "3". После того, как мы пропишем все 9 букв и знаки пунктуации, остается только сделать башкирскую клавиатуру "видимой" для системы. Для этого добавляем пару строк в файл /usr/share/X11/xkb/rules/evdev.xml
gksu gedit /usr/share/X11/xkb/rules/evdev.xml
Здесь опять же копируем описание раскладки у соседей и пишем название нашей раскладки:
      <variant>
<configItem>
<name>bsh</name>
<description>Bashkir</description>
<languageList><iso639Id>bas</iso639Id></languageList>
</configItem>
</variant>
Относительно присвоения имени нашей башкирской раскладке. В принципе, можно придумать любое, однако для башкирского языка существует собственный трехбуквенный тэг - "BSH". По крайней мере, именно в таком виде башкирский язык обозначается в шрифтах OpenType. Поэтому предлагаю, остановить свой выбор на "BSH".
Эту информацию почерпнул из книги The XETEX Companion
TEX meets OpenType and Unicode. - Edited by Michel Goossens (CERN)
.

Остается только перезапустить оконный менеджер и включить вновь созданную раскладку стандартным способом: Система->Параметры-> Клавиатура. Выбираем вкладку Раскладки, нажимаем кнопку Добавить, в выпадающем списке выбираем страну "Российская Федерация", в поле варианты появилась наша раскладка под именем "Россия Bashkir". Теперь башкирская раскладка появилась в нашей системе.
Запускаем любимое приложение и пишем:
СӘЛӘМ, ДОНЪЯ!
Ссылки по теме:
http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11
http://www.linux.com/archive/articles/113715
http://engraver.wordpress.com/2008/09/04/keyboard_tuning_in_ubuntu_and_windows/

Обновлено 4 июня, 9:00

2 комментария:

  1. Сәләм, Булат. Минең менән бәйләнешкә сығығыҙ әле, зинһар. Башҡорт программистары һәм ИТ-берләшмәһе вәкилдәре менән танышырға ине. Үҙем Mac OS һәм Android өсөн раскладкалар сығарғайным үткән йылда http://ildar.me. Рәхмәт!

    ОтветитьУдалить
  2. «Я достаточно хваляю г-на Бенджамина за его помощь в получении ссуды на покупку нашего нового дома для нашей семьи. У Бенджамина было огромное количество информации, и он помог мне и моей семье понять, почему жилищный заем был лучшим вариантом в нашей конкретной ситуации. После переговоров с Бенджамином и нашим финансовым консультантом все согласились, что жилищный кредит был идеальным решением. Если вы также ищете какой-либо кредит, вы можете связаться с г-ном Бенджамином по электронной почте / Whatsappemail: 247officedept@gmail.com Whatsapp: + 1-989- 394-3740

    ОтветитьУдалить

Условия использования материалов блога

"Humanities computing" by Булат Юлбарисов is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.

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