Примечание : Wayland использует xkb, но многие xTools перестали работать должным образом (например, xdotool)
Примечание : это не исчерпывающий учебник. Это наиболее полезно для человека, желающего создать новый восьмиуровневый макет и понять синтаксис.
Примечание: быстрое и грязное решение предоставляется. Он включает электронную таблицу, которая автоматически генерирует необходимый вам код.
Понимание каталога XKB
cd /usr/share/X11/xkb/ && ls
- types- Как производимые ключи меняются активными модификаторами . (Shift, Control, Alt ~)
Важно, если вы хотите настроить клавиши-модификаторы.
- geometry- Используется для рисования графики клавиатуры.
Важно, если вы разрабатываете нестандартную часть клавиатуры.
- rules- Выбор подходящей конфигурации для вашей текущей настройки.
Вам нужно будет определить это
- keycodes- Интерпретатор кодов клавиш для аппаратного обеспечения клавиатуры.
Пример: Клавиатуры Macintosh понимают пробел как 57
. Мы пишем это как<SPCE>
- symbols- Какие значения присваиваются каким кодам клавиш .
Здесь мы определим наш пользовательский макет.
- compat- Сокращение от совместимости .
Внутреннее поведение модификаторов (Shift, Control, Alt ...)
Workflow
keycodes > symbols > compat
Я только касаюсь symbols
: см. Ниже для быстрого и грязного решения.
Карты символов
/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 };
};
partial - Не полная карта клавиатуры
alphanumeric_keysРаздел клавиатуры отображается. Можно использовать несколько символов.
Примечание. Если значение не *_keys
указано, предполагается полная клавиатура.
"basic" - Название карты символов
name[Group1]= "US/ASCII";Дает уникальное имя этой группе клавиш.
modifier_mapДля редактирования клавиш-модификаторов . (Ctrl, Shift, Alt ~)
Shift { Shift_L, Shift_R };Обычно не требуется. Он отображает оба сдвига в модификатор сдвига, он же уровень 2.
key <TLDE> Клавиша тильды - обычно верхняя левая клавиша справа над вкладкой
key <AE01> Иллюстрация - состоит из трех частей,AE01
A= буквенно-цифровой блок клавиш.
KP= Клавиатура
FK= функциональная клавиша
E= Строка на клавиатуре.
Space Key= Aряд
Shift Key= Bряд
Caps Lock= Cряд
Tab Key= Dряд
01= Положение ключа в ряду.
AE01= 1
AB02= X
AC05=G
[+ ]- на языках Си; Квадратные скобки обозначают список, по которому элементы делятся на ,. Длина списка определяет количество уровней. Например:
key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }
Обычно Уровни обозначают следующее нажатие клавиши:
- Нет модификаторов
- Shift
- Alt Gr
- Shift + Alt Gr
- Custom - Маловероятно видеть что-либо за пределами уровня 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 Лист - это место, где вы определяете свой макет.
- Односимвольные записи переводятся в код, понятный программе.
( !
становится U0021
). Юникод поддерживается!
- Строки не переводятся и обрабатываются как есть. УБЕДИТЕСЬ, ЧТОБЫ НЕ БЫЛО ОШИБКИ ИЛИ СЛУЧАИ !.
- Пустые квадраты автоматически заполняются
VoidSymbol
.
- XKB-Sort Лист содержит ключевые группы, например:
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] };
Изменяет это на всех 8 уровнях:
1234567890-= // Physical Keys
![]"*{}/')(\ // Changed to these characters
- XKBВкладка также имеет строки. Любая другая вкладка может быть проигнорирована (ее код).
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