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

Клавиатура, которую я пытаюсь создать, имеет много Unicode и выглядит следующим образом: The keyboard I am trying to create

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

51
задан 12 August 2014 в 15:12

2 ответа

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

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

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


Общие сведения о типах каталогов XKB

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

Коды клавиш

рабочего процесса > символы > compat

Я касаюсь только символов : См. Ниже решение Quick and Dirty .


Карты символов

/ 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 Раздел отображаемой клавиатуры. Можно использовать несколько
Примечание: Если не указаны * _ ключи , предполагается полная клавиатура.

"basic" - Имя карты символов

name [Group1] = "US / ASCII"; Дает уникальное имя этой группе клавиатур.

modifier_map Для редактирования клавиш-модификаторов . (ctrl, shift, alt ~)

Shift {Shift_L, Shift_R}; Обычно не требуется. Он сопоставляет оба сдвига с модификатором сдвига, также известным как уровень 2.

клавиша Клавиша тильды - Обычно верхняя левая клавиша справа над клавишей Tab

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

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

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

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

  1. Перейдите сюда
  2. Файл> Создать копию
  3. Mapper На листе вы определяете свой макет.
    • Односимвольные записи переводятся в код, понятный программе.
      (! становится U0021 ). Поддерживается Unicode!
    • Строки не переводятся и обрабатываются как есть. УБЕДИТЕСЬ, ЧТО НЕТ орфографических или регистрационных ошибок !.
    • Пустые квадраты автоматически заполняются VoidSymbol .
  4. XKB-Sort Лист содержит группы ключей, например:
     клавиша  {[U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021]};
    ключ  {[U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B]};
    клавиша  {[U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D]};
    клавиша  {[U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022]};
    клавиша  {[U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A]};
    ключ  {[U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B]};
    ключ  {[U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D]};
    клавиша  {[U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F]};
    клавиша  {[U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027]};
    клавиша  {[U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029]};
    клавиша  {[U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028]};
    кнопка  {[U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C]};
     
    Изменяет это на всех 8 уровнях:
     1234567890- = // Физические ключи
     ! [] "* {} / ') (\ // Изменены на эти символы 
  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
29
ответ дан 12 August 2014 в 15:12

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

/ usr / share / X11 / xkb / symbols /


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

    key <AC01> {[a, A, aacute, Aacute]};

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

  1. < A C01> Первая буква A указывает, что мы ищем в блоке буквенно-цифровых клавиш (другие варианты включают KP [для клавиатура] и FK [для функциональной клавиши] );

  2. ] Вторая буква C указывает строку, считая снизу, в которой находится ключ. (На стандартной американской клавиатуре пробел находится в строке AA , а цифровые клавиши - в строке AE ).

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

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

    1. a - неизмененный ключ.
    2. A - символ Shift .
    3. á ] - символ Alt Gr . ( aacute )
    4. Á - символ Shift + Alt Gr . ( Aacute )

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

Например:

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

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

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

или

    key  {[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. Перейдите в конец раздела (ищите ). Добавьте следующее после последнего тега ,где X - имя файла с раскладкой клавиатуры в / usr / share / X11 / xkb / symbols (в моем случае oe ); Y подходящее короткое имя; и Z соответствующее длинное имя на одном или нескольких языках и aaa юридический трехбуквенный (ISO 639-2) код языка (например, eng для английского языка):

     
      
       X 
       Y 
       Z 
      
       aaa 
      
      
      <список вариантов />
     
     

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

Другие ссылки по теме:
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http: //www.charvolant. org / ~ doug / xkb / html / index.html

81
ответ дан 12 August 2014 в 15:12
  • 1
    @anko U является нижней частью один и Вы смотрите на небольшой угол в нем (поверните его 1/4-й по часовой стрелке). G наверху, и также под углом (поверните его 2/4-й по часовой стрелке). – Rinzwind 22 December 2015 в 12:58

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

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