Есть, по крайней мере, два варианта.
1. Раскладка будет появляться самостоятельно. Я так не пробовал, описывать не буду.
2. Будет появляться как подвариант какой-нибудь страны. Например, для страны России там 13 раскладок.
Пойдем вторым путем. Идем в папку /usr/share/X11/xkb/symbols
Видим там файлы типа ad, af, al и т.д. Находим файл ru, который содержит все раскладки для России. Открываем его рутом:
sudo gedit ru
Собственно, раскладка задается следующим образом. Пример:
key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] };
Сначала пишем
keyДальше задаем клавишу клавиатуры. Нотация такая: первая буква А означает "alphabetical", т.е. алфавитно-цифровые клавиши (метаклавиши имеют собственные имена). Вторая буква (от A до Е) означает ряд клавиатуры. Причем самый нижний ряд - А, самый верхний - Е. Цифры обозначают порядковый номер клавиши слева направо. Например, "z" - AB01, "s" - AC02, "4" - AE04
Дальше, то, что в скобках, обозначает, следующее.
Первое число - символ юникод, который появится при нажатии соответствующей клавиши. Второе число - тот символ, который появится при нажатии клавиши с SHIFT. Третье и четвертое числа - опционально. Обозначают, соответственно, символы,
которые появятся при нажатии на соответствующую клавишу с одновременным нажатием альтернативной клавишей (называется, клавиша третьего уровня, в большинстве тамошних раскладок это правый ALT)
Как набирать юникод символы.
Это стандарт UTF-16. Как правило, нужно только менять последние четыре цифры, а 0х0100 оставлять без изменения. Можно запустить программу Applications/Accessories/Character Map, ту, что в Убунте. Ищем нужную букву. Как нашли, то на вкладке Character Details будет подробная информация. Нам нужно номер UTF-16. Например, ищем "Ъ". Находим: UTF-16: 0x042A. Нам нужны последние четыре цифры: 042А. Полный код будет 0х0100042А.
Кстати, нужно соблюдать осторожность, т.к. буквы могут иметь одинаковое начертание, но разный код. Возможно, это не критично для личной переписки, например, но могут возникнуть проблемы с разными spell check-ами и др. Лучше всего буквы искать в одном разделе (думаю, для марийского это будет Cyrillic.
Да, не нужно вводить весь алфавит. Обычно делают так. Импортируют готовый алфавит, а прописывают отдельно те клавиши, которые отличаются. Посмотрите внимательно на файл
ru. Увидите, что разделы заканчиваются так:
};
Не те, что справа после описания каждой клавиши, а та, что слева, как бы отделяет строку.
Каждый раздел начинается так:
partial alphanumeric_keys
xkb_symbols "olpc" {
Вместо olpc поставьте название своего языка. Думаю, надо маленькими буквами и без пробелов.
Там есть главный раздел "common". Он второй по счету. А остальные его импортируют так:
include "ru(common)"
Т.е после строчки
xkb_symbols "ваш_язык"
добавьте строчку
include "ru(common)
Это импортирует русскую раскладку.
После введите строчку
name[Group1]= "Russia - Legacy
где измените Russia - Legacy на ваше, например, Марийский (надпись, что вы введете, будет появляться при выборе клавиатуры в System/Preferences/Keyboard ...) Здесь допустимы пробелы, большие буквы и т.п.
Дальше только введите только те клавиши, которые отличаются по типу
[code]key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] };
Если не нужны клавиши третьего уровня, то последние два числа вводить не обязательно. Их часто используют для введения диакритиков, типа á
Если же третий уровень нужен, то введите и последние два числа, а в конце раздела укажите, какой клавишей будет этот третий уровень включаться. Обычно это правый ALT. В таком случае нужно ввести строку
include "level3(ralt_switch)"
Завершите раздел (т.е. свою раскладку)
};
Весь этот раздел создайте и впишите в конец файла
ruЕще раз, это будет выглядеть типа этого:
partial alphanumeric_keys
xkb_symbols "mari" {
include "ru(common)"
name[Group1]= "Russia - Mari";
key ......
include "level3(ralt_switch)"
};
Вам нужно будет только заполнить поля key для каждой клавиши, которая отличается от русской раскладки.
Сохраните файл ru (сделайте копию оригинальног файла, мало ли что).
После этого нужно сделать так, чтобы раскладка появлялась в иксах. Открываем файл
sudo gedit /usr/share/X11/xkb/rules/evdev.xml
(опять, сделайте копию оригинала !)
Это XML файл. Если вы понимаете тэги <> </> , то особого труда он не будет представлять. Ищем запись
<name>ru</name> Это описание раскладок для России. Отдельная страна лежит между тэгами <layout> и </layout>
Каждая отдельная раскладка лежит между <variant> </variant>
Вам нужно вставить описание вашей раскладки как один из вариантов. Это должно быть внутри страны России. Лучше всего вставить в конец, например, после Калмыцкого языка, но до Сербии. Проще скопировать Калмыцкий язык
<variant>
<configItem>
<name>xal</name>
<description>Kalmyk</description>
<languageList><iso639Id>xal</iso639Id></languageList>
</configItem>
</variant>
и вставить его после его же тэга </variant>, т.е. между </variant> и </variantList>
Потом меням шило на мыло, т.е. вместо xal пишем mari, вместо Kalmyk пишем Mari.
Тэг <iso639Id> означает трехбуквенный код языка по этнологу. У вас это будет
mhr Но, в принципе, этот тэг можно и не вводить.
Сохраняем файл и (без перезагрузки) идем в System/Preferences/Keyboard. Выбираем страну Россию, а там - марийский язык.
ЗЫ. Если не получилось, то, скорее всего, была где-то ошибка. Может даже случиться, что вообще никакие языки работать не будут (кроме английского). Нужно внимательно смотреть, чтобы в файле evdev.xml открытые тэги соответствовали закрытым. Но этот способ работает. Я так создал свою раскладку и пользуюсь ею.[/code]