Какие шаги необходимы для создания новой раскладки клавиатуры в Ubuntu?
Клавиатура, которую я пытаюсь создать, имеет много Unicode и выглядит так:
Быть неудачным со следующим учебником:
- https://help.ubuntu.com/community/Howto%3A%20Custom%20keyboard%20layout%20definitions
(В учебнике есть несколько ошибок, и он использует неточный язык, такой как "Резка", а не "Удаление", и он странно отформатирован)
Мне было интересно, если кто-нибудь так любезно предоставит лучший учебник с пошаговыми инструкциями?
2 ответа
Примечание: Wayland использует xkb, но многие xTools перестали работать должным образом (например, xdotool)
Примечание: это не исчерпывающий учебник. Это наиболее полезно для человека, желающего создать новый восьмиуровневый макет и понять синтаксис.
Примечание: быстрое и грязное решение предоставляется. Он включает электронную таблицу, которая автоматически генерирует необходимый вам код.
Понимание каталога XKB
cd /usr/share/X11/xkb/ && ls
- types - Как производимые ключи изменяются активными модификаторами. (Shift, Control, Alt ~)
Важно, если вы хотите настроить клавиши-модификаторы. - геометрия - используется для рисования графики клавиатуры.
Важно, если вы разрабатываете нестандартную часть клавиатуры. - rules - выбор соответствующей конфигурации для текущей настройки.
Вам нужно будет определить это - коды клавиш - интерпретатор кодов клавиш для аппаратного обеспечения клавиатуры.
Пример: клавиатуры Macintosh понимают пробел как57
, Мы пишем это как<SPCE>
- символы - какие значения назначены каким кодам клавиш.
Здесь мы определим наш пользовательский макет. - compat - Сокращение от совместимости.
Внутреннее поведение модификаторов (Shift, Control, Alt...)
Workflow
коды клавиш > символы > compat
Я только касаюсь symbols
: Смотрите ниже быстрое и грязное решение.
Карты символов
/ символы /us Любой файл в этом каталоге имеет ту же структуру.
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "US/ASCII";
key <TLDE> { [ quoteleft, asciitilde ] };
key <AE01> { [ 1, exclam ] };
modifier_map Shift { Shift_L, Shift_R };
};
частичное - неполная карта клавиатуры
alphanumeric_keys Раздел отображаемой клавиатуры. Можно использовать несколько
Примечание: если нет *_keys
указаны, полная клавиатура предполагается.
"basic" - название карты символов
name[Group1]= "US/ASCII"; Дает уникальное имя этой группе клавиш.
modifier_map Для редактирования ключей-модификаторов. (Ctrl, Shift, Alt ~)
Shift {Shift_L, Shift_R}; Обычно не требуется. Он отображает оба сдвига в модификатор сдвига, он же уровень 2.
клавиша
клавиша
A = буквенно-цифровой блок клавиш.
КП = клавиатура
FK = функциональная клавишаE = строка на клавиатуре.
Клавиша пробела = строка
Клавиша Shift = строка B
Caps Lock = C ряд
Клавиша Tab = D строка01 = Положение ключа в строке.
AE01 = 1
AB02 = X
AC05 = G
[ + ] - на языках Си; Квадратные скобки обозначают список, по которому элементы делятся на,. Длина списка определяет количество уровней. Например:
key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }
Обычно Уровни обозначают следующее нажатие клавиши:
- Без модификаторов
- сдвиг
- Alt Gr
- Shift + Alt Gr
- Пользовательский - маловероятно видеть что-либо за пределами уровня 4.
Короче говоря, если вы хотите отобразить ключ на shift + altgr, ваш список должен содержать не менее четырех элементов.
ВНИМАНИЕ - Распространенные ошибки
Любая из этих строк вызовет критическую ошибку и оставит вас без удобной клавиатуры:
key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
Backspace
должно бытьBackSpace
Обратите особое внимание на орфографию.- Пустая запись должна быть
VoidSymbol
,
Лучшая мера безопасности!
Сделайте резервную копию файла, который вы редактируете:
sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP
Сделайте скрипт, который вы можете запустить без пароля root
Что-то вроде:
#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us
Если что-то пойдет не так, используйте вашу мышь для запуска этой строки кода (содержится в скрипте bash, на который вы дали разрешение sudoers. Не забудьте chmod +x
разрешить запуск в качестве исполняемого файла.)
Стратегии резервного копирования для восстановления сломанной системы
- ВНИМАНИЕ: Клавиатура и экранная клавиатура перестанут работать с малейшей ошибкой.
- Мышь будет работать. Печатать можно, выделив символы и вставив их с помощью среднего щелчка. В Bash вы можете
return
(Нажав Enter), вставив перевод строки. - Клавиатура будет работать в режиме восстановления в корневой оболочке. (Доступ из Баш)
- Вы всегда можете использовать живую среду для исправления файлов.
Быстрое и грязное решение
- Иди сюда
- Файл> Сделать копию
- Mapper Sheet - это место, где вы определяете свой макет.
- Односимвольные записи переводятся в код, понятный программе.
(!
становитсяU0021
). Юникод поддерживается! - Строки не переводятся и обрабатываются как есть. УБЕДИТЕСЬ, ЧТОБЫ НЕ БЫЛО ОШИБКИ ИЛИ СЛУЧАИ!.
- Пустые квадраты автоматически заполняются
VoidSymbol
,
- Односимвольные записи переводятся в код, понятный программе.
- Лист сортировки XKB содержит ключевые группы, например:
Изменяет это на всех 8 уровнях:key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] }; key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] }; key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] }; key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] }; key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] }; key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] }; key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] }; key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] }; key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] }; key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] }; key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] }; key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
1234567890-= // Physical Keys ![]"*{}/')(\ // Changed to these characters
- XKB Tab также имеет строки. Любая другая вкладка может быть проигнорирована (ее код).
sudo vim /usr/share/X11/xkb/symbols/us
- Заменить содержимое макетов. Выберите тот, который вы не будете использовать. Например: я изменил запись Colemak, оставив структуру без изменений, и заменил ключи.
Линии интереса:
key.type[group1]="EIGHT_LEVEL"; // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] };
key { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5
В Ubuntu 14.04 раскладки клавиатуры хранятся в
/usr/share/X11/xkb/symbols/
Каждый из файлов в этом каталоге содержит ряд записей следующего типа:
ключ{[a, A, aacute, Aacute]};
Эта запись отображает клавишу на клавиатуре в число определенных символов, используя следующие соглашения:
01 > Числа 01
указывает положение клавиши, считая слева и игнорируя любые специально названные клавиши, такие как TAB или ~ (тильда):AC01
находится в третьем ряду вверх, первый ключ слева (игнорируя Caps Lock, если имеется); на стандартной клавиатуре США эта клавиша помечена буквой "а".Скобки заключают список символов, назначенных для каждой клавиши. Содержит до четырех записей, разделенных запятыми:
- а - неизмененный ключ
- A - Персонаж Shift.
- б - персонаж Alt Gr. (острый)
- Б - Shift + Alt Gr персонаж. (Острый)
Создать пользовательскую карту клавиатуры так же просто, как заменить символы, которые вам не нужны в данной строке, теми, которые вы делаете!
Например:
Как англосаксонист, я печатаю á
а также Á
гораздо реже, чем я печатаю æ
а также Æ
,
Чтобы добавить англосаксонских символов в мой список, я просто заменяю aacute
а также Aacute
с именами сущностей или кодовыми точками Unicode для æ
а также Æ
("Aelig" или U00E6 и "AElig" или U00C6 соответственно):
ключ {[a, A, aelig, AElig]};
или же
ключ {[a, A, U00E6, U00C6]};
Когда я закончу изменять раскладку клавиатуры, я сохраню файл с новым именем "oe" в том же каталоге.
Добавление новой раскладки клавиатуры в evdev.xml
файл.
Чтобы использовать новую раскладку клавиатуры, нужно сказать X11
что оно существует. В Ubuntu 14.04 X11
отслеживает установленные клавиатуры в /usr/share/X11/xkb/rules/evdev.xml
файл. Затем давайте добавим новый макет в нем.
- открыто
X11/xkb/rules/evdev.xml
в редакторе Перейти к концу
<layoutList>
раздел (поиск</layoutList>
). Добавьте следующее после последнего</layout>
тег, гдеX
имя файла вашей раскладки клавиатуры в/usr/share/X11/xkb/symbols
(в моем случаеoe
);Y
подходящее короткое имя; а такжеZ
соответствующее длинное имя на одном или нескольких языках иaaa
официальный трехбуквенный (ISO 639-2) код языка (например, англ для английского):<layout> <configItem> <name> X </name> <shortDescription> Y </shortDescription> <description> Z </description> <languageList> <iso639Id> aaa </iso639Id> </languageList> </configItem> <variantList/> </layout>
Вот оно, следуйте за полным введением
Другие ссылки по теме:
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html