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

43

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

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

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

Акива
источник
2
Мм, это выглядит как дубликат для меня . Жаль, что вы уже положили награду на свой вопрос: /.
Glutanimate
@Glutanimate О, аккуратно; не видел этого. Я бы все еще надеялся на лучший ответ.
Акива
Вы можете использовать эту ссылку. help.ubuntu.com/community/ComposeKey
Ананду М Дас
Связанный: askubuntu.com/questions/228050/…
alfC

Ответы:

69

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

/usr/share/X11/xkb/symbols/


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

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

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

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

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

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

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

    1. а - неизмененный ключ
    2. А - ShiftПерсонаж.
    3. а - Alt Grперсонаж. ( острый )
    4. Б - Символ Shift+ Alt Gr. ( Острый )

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

Например:

В англо-Saxonist, я печатаю áи Áгораздо реже , чем я типа æи Æ.

Чтобы добавить англосаксонские символы в мой список, я просто заменяю 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

αғsнιη
источник
Я работал над этим постом немного; контент, который вы предоставили, был очень высокого качества, но, по моему мнению, он все еще нуждается в работе. Учебники, на которые вы ссылаетесь, очень стары и устарели, и в них полно «Если вы используете 8.04, делайте xy и z». Я хотел бы видеть полный учебный ответ (я только хотел бы увеличить щедрость)
Акива
@Akiva Не помог тебе этот ответ? Где у вас проблема?
αғsнιη
3
Ответ помог; Объяснение AC01 было действительно хорошо написано, но я хотел получить полный ответ со всеми шагами. Когда вы связаны с другими учебниками; они старые, и их три. Ради других пользователей, я бы предпочел, чтобы здесь был полный ответ. Так, например; есть больше элементов, найденных в текстовом файле, кроме ключа <ac01> {[a, b, c, d]}, а также есть файл XML, который необходимо отредактировать. Существует также вопрос о том, как это проверить. Как сказано; Я должен был положить 500 репов за это, потому что создать хороший учебник - довольно большая задача.
Акива
2
Я найду ответ на этот вопрос в полном объеме, потому что в любом случае я должен определить свою раскладку клавиатуры. когда я доберусь до этого, я отвечу правильно.
Акива
Это работает только для Xorg или также для ttys?
Нарколессико
18

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

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

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


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

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

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

  2. E= Строка на клавиатуре.
    Space Key= Aряд
    Shift Key= Bряд
    Caps Lock= Cряд
    Tab Key= Dряд

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

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

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

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

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

Акива
источник
В верхней строке вашего ответа написано: «(WIP - Не голосуйте.)». Ответ выглядит для меня относительно полным - возможно, эта заметка должна быть удалена?
MattKelly
1
@MattKelly Аааааааа я просто не успел его обновить. Я на самом деле создал электронную таблицу, которая автоматически генерирует код в зависимости от того, какие символы вы поместили в макет клавиатуры.
Акива
Это звучит как полезная таблица - общедоступна ли она?
MattKelly
@MattKelly Вот копия. Нужно убрать много хлама и, возможно, добавить несколько рулей, но, как вы можете видеть, он генерирует код: docs.google.com/spreadsheets/d/…
Akiva,
Этот подход не позволяет установить RALT в качестве другого возврата или установить клавишу вставки в качестве обратной цитаты / тильды.
Крейг Хикс,