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

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

Быть неудачным со следующим учебником:

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

2 ответа

Решение

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

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

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


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

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

  1. A = буквенно-цифровой блок клавиш.
    КП = клавиатура
    FK = функциональная клавиша

  2. E = строка на клавиатуре.
    Клавиша пробела = строка
    Клавиша Shift = строка B
    Caps Lock = C ряд
    Клавиша Tab = D строка

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

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

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

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

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

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

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

  1. Иди сюда
  2. Файл> Сделать копию
  3. Mapper Sheet - это место, где вы определяете свой макет.
    • Односимвольные записи переводятся в код, понятный программе.
      (! становится U0021). Юникод поддерживается!
    • Строки не переводятся и обрабатываются как есть. УБЕДИТЕСЬ, ЧТОБЫ НЕ БЫЛО ОШИБКИ ИЛИ СЛУЧАИ!.
    • Пустые квадраты автоматически заполняются VoidSymbol,
  4. Лист сортировки XKB содержит ключевые группы, например:
    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 Tab также имеет строки. Любая другая вкладка может быть проигнорирована (ее код).
  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

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

/usr/share/X11/xkb/symbols/


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

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

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

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

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

  3. 01 > Числа 01 указывает положение клавиши, считая слева и игнорируя любые специально названные клавиши, такие как TAB или ~ (тильда): AC01 находится в третьем ряду вверх, первый ключ слева (игнорируя Caps Lock, если имеется); на стандартной клавиатуре США эта клавиша помечена буквой "а".

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

    1. а - неизмененный ключ
    2. A - Персонаж Shift.
    3. б - персонаж Alt Gr. (острый)
    4. Б - 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 файл. Затем давайте добавим новый макет в нем.

  1. открыто X11/xkb/rules/evdev.xml в редакторе
  2. Перейти к концу <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

Другие вопросы по тегам