Каковы шаги, необходимые для создания новой раскладки клавиатуры на ubuntu?

На клавиатуре, которую я пытаюсь создать, есть много Unicode и выглядит так: Клавиатура, которую я пытаюсь создать

Не удалось выполнить следующий учебник:

Мне было интересно, может ли кто-нибудь быть таким добрым, чтобы предоставить лучший учебник с пошаговыми инструкциями?

39 голосов | спросил Akiva 12 AM00000040000005631 2014, 04:27:56

2 ответа


16

Примечание : Wayland использует xkb, но многие xTools перестали нормально работать (например, xdotool)

Примечание . Это не исчерпывающий учебник. Это наиболее полезно для человека, который хочет создать новый восьмиуровневый макет и понять синтаксис.

Примечание: Предоставляется быстрое и грязное решение. Он включает электронную таблицу, которая автоматически генерирует необходимый код.


Понимание каталога XKB

cd /usr/share/X11/xkb/ && ls
  1. types - Как создаются ключи с помощью Active Modifiers . (Shift, Control, Alt ~)
    Важно, если вы хотите настроить Модификационные ключи.
  2. geometry - Используется для рисования клавиатуры.
    Важно, если вы разрабатываете нестандартную аппаратную часть клавиатуры.
  3. rules - Получение соответствующей конфигурации для текущей настройки.
    Вам нужно будет определить это
  4. keycodes - интерпретатор кодов клавиш для аппаратного обеспечения клавиатуры. Пример: Macintosh Клавиатуры понимают пробел как 57. Мы пишем его, однако, как <SPCE>
  5. символы - какие значения назначены для Keycodes .
    Здесь мы определим наш пользовательский макет.
  6. compat - сокращение от совместимости .
    Внутреннее поведение модификаторов (Shift, Control, Alt ...)

Workflow

keycodes > символы > 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.

ключ <TLDE> Тильда Ключ - обычно верхний левый ключ прямо над вкладкой

ключ <AE01> Иллюстрация - состоит из трех частей, A E 01

  1. A = буквенно-цифровой блок клавиш.
    KP = Клавиатура
    FK = Функциональный ключ

  2. E = строка на клавиатуре.
    Клавиша Space Key = A
    Клавиша Shift = B
    Caps Lock = C строка
    Таблица клавиш = D

  3. 01 = Позиция ключа в строке.
    AE01 = 1
    AB02 = X
    AC05 = G

[ + ] - на языках C; Квадратные скобки означают список, по которому элементы разбиваются на , . Длина списка определяет количество уровней. Например:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

Как правило, Уровни обозначают следующее нажатие клавиши:

  1. Без модификационных клавиш
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Пользовательский - вряд ли увидит что-либо за пределами уровня 4.

Короче говоря, если бы вы хотелинаведите ключ на сдвиг + altgr, ваш список должен быть как минимум на четыре части.


ПРЕДУПРЕЖДЕНИЕ - Общие ошибки

Любая из этих строк вызовет критическую ошибку и оставит вас без использования клавиатуры:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspace должен быть BackSpace: Оплатить дополнительную осторожность внимание к написанию.
  • Пустая запись должна быть VoidSymbol.

Наилучшая мера безопасности!

  1. Резервное копирование файла, который вы редактируете:

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. Создайте скрипт, который вы можете запустить без пароля 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) путем вставки строки.
  • Клавиатура будет работать в режиме восстановления в корневой оболочке. (Доступ из bash)
  • Вы можете всегда использовать живую среду для исправления файлов.

Быстрое и грязное решение

  1. Перейдите сюда
  2. Файл> Сделайте копию
  3. Mapper Лист - это то, где вы определяете свой макет.
    • Одиночные записи символов переводятся в код, понятный программе.
      (! становится U0021) , Поддержка Unicode!
    • Строки не переводятся и обрабатываются как есть. УБЕДИТЕСЬ, ЧТО НИКАКИХ ЗАПРЕЩЕНИЙ ИЛИ НЕИСПРАВНОСТЕЙ!
    • Пустые квадраты заполняются автоматически VoidSymbol.
  4. 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
  5. XKB Вкладка также имеет строки. Каждая другая вкладка может быть проигнорирована (ее код).
  6. sudo vim /usr/share/X11/xkb/symbols/us литий>
  7. Замените содержимое макетов. Выберите тот, который вы не будете использовать. Например: Я изменил запись 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
ответил Akiva 26 +03002014-10-26T18:07:12+03:00312014bEurope/MoscowSun, 26 Oct 2014 18:07:12 +0300 2014, 18:07:12
60

В Ubuntu 14.04 раскладки клавиатуры хранятся в

/usr/share/X11/xkb/symbols/


Каждый из файлов в этом каталоге содержит ряд записей следующего типа:

    ключ <AC01> {[a, A, aacute, Aacute]};

Эта запись сопоставляет ключ на клавиатуре с несколькими конкретными символами, используя следующие условные обозначения:

  1. < A C01> Первая буква A указывает, что мы смотрим в алфавитно-цифровом ключевом блоке (другие опции включают KP [for keypad] и FK [for Function Key]);

  2. <A C 01> Вторая буква C указывает строку, подсчитывая снизу, в которой находится ключ. (В стандартной американской клавиатуре пробел находится в строке AA, а числовые клавиши находятся в строке AE)

  3. <AC 01 > Цифры 01 указывают позицию ключа, считая слева и игнорируя любой специально названный ключ, например TAB или ~ (тильда): AC01 находится в третьей строке вверх, первый ключ слева (игнорирование Caps Lock , если присутствует); на стандартной американской клавиатуре это клавиша с надписью «a».

  4. Скобки заключают в себе список символов, назначенных каждому ключу. Это содержит до четырех записей, разделенных запятыми:

    1. a - немодифицированный ключ.
    2. A - символ Shift .
    3. - символ Alt Gr . ( aacute ) литий>
    4. Á - символ Shift + Alt Gr . ( Aacute ) литий>

Создание пользовательской карты клавиатуры так же просто, как замена символов, которые вы не хотите в заданной строке, с теми, которые вы делаете!

Например:

Как англосаксонист, я печатаю á и Á гораздо реже, чем я набираю æ и Æ.

Чтобы добавить англо-саксонские символы в мой список, я просто заменяю aacute и Aacute с именами сущностей или кодами Unicode для ---- +: = 15 =: + ---- и æ ("aelig" или U00E6 и "AElig" или U00C6 , соответственно):

    key {[a, A, aelig, AElig]};

или

    ключ {[a, A, U00E6, U00C6]};

Когда я закончил изменять раскладку клавиатуры, Я сохраняю файл с новым именем «oe» в том же каталоге.

Добавление новой раскладки клавиатуры в файл Æ.

Чтобы использовать новую раскладку клавиатуры, нам нужно сообщить evdev.xml, что она существует. В Ubuntu 14.04 X11 отслеживает установленные клавиатуры в X11. Затем добавьте в него новый макет.

  1. Откройте /usr/share/X11/xkb/rules/evdev.xml в редакторе
  2. Перейдите в конец раздела X11/xkb/rules/evdev.xml (найдите <layoutList>). Добавьте следующее после последнего тега </layoutList>, где </layout> - это имя вашего макета клавиатуры в X (в моем случае /usr/share/X11/xkb/symbols); oe подходящее короткое имя; и Y соответствующее длинное имя на одном или нескольких языках и Z a юридическийтрех буквенный (ISO 639-2) код языка (например, eng для английского языка):

    aaa

Вот он, следуйте полному введению

Другие связанные ссылки:
http://ubuntuforums.org/showthread.php? т = 188761 & амп; р = 1092145 # post1092145 http://www.charvolant.org/~doug/xkb/html/index.html

ответил αғsнιη 14 AM000000100000003631 2014, 10:20:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132