Примітка : 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 ...)
Робочий процес
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
). Unicode підтримується!
- Рядки не перекладаються і трактуються як є. ПЕРЕКОНАЙТЕ Упевненість, що НЕ БУДЕ НЕПРОСТАВЛЕННЯ або помилок СПРАВИ!
- Порожні квадрати автоматично заповнюються
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
- Замініть вміст макетів. Виберіть той, який ви не будете використовувати. Наприклад: я змінив запис колективу, залишивши структуру недоторканою, і замінив клавіші.
Цікаві лінії:
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