Які кроки необхідні для створення нової розкладки клавіатури на ubuntu?


43

Клавіатура, яку я намагаюся створити, має багато Unicode і виглядає так: Клавіатуру, яку я намагаюся створити

Невдало в наступному навчальному посібнику:

Мені було цікаво, чи хтось буде таким добрим, щоб надати кращий підручник із покроковими інструкціями?


2
Гмм, це мені схоже на дублікат . Шкода, що ти вже поставив щедрості за своє запитання: /.
Glutanimate

@Glutanimate Ой акуратний; не бачив цього. Я б все-таки похизувався кращою відповіддю.
Аківа

Ви можете скористатися цим посиланням. help.ubuntu.com/community/ComposeKey
Anandu M Das

Відповіді:


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або ~(tilde): AC01знаходиться в третьому ряду вгору, перша клавіша переходить зліва (ігноруючи Caps Lock, якщо є); на стандартній американській клавіатурі це клавіша з позначкою "a".

  4. В дужках додається список символів, присвоєних кожній клавіші. Він містить до чотирьох записів, розділених комами:

    1. a - Немодифікований ключ.
    2. А - 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


Я трохи працював над цією посадою; наданий вами контент був дуже якісним, але він все ще потребує роботи, на мою думку. Підручники, з якими ви пов’язані, дуже давні та застарілі та наповнені "Якщо ви використовуєте 8.04, виконайте xy та z". Я хотів би побачити повну відповідь підручника (я б тільки хотів, щоб я міг збільшити щедрість)
Akiva

@Akiva Не допомогла вам ця відповідь? Де у вас проблема?
αғsnιη

3
Відповідь допомогла; Пояснення AC01 було дуже добре написано, але я хотів повну відповідь з усіма кроками. Коли ви пов’язані з іншими навчальними посібниками; вони старі, і їх три. Заради інших користувачів я хотів би отримати повну відповідь тут. Так, наприклад; в текстовому файлі за межами ключа <ac01> {[a, b, c, d]} знайдено більше елементів, а також є XML-файл, який потрібно відредагувати. Існує також питання, як це перевірити. Як сказано; Я мусив би покласти на це 500 прибутків, тому що створити хороший підручник - це досить велике завдання.
Аківа

2
Я обійдусь, щоб відповісти на це повною мірою, тому що мені все одно потрібно визначити розкладку клавіатури. коли я обійдусь цим, я відповім на нього належним чином.
Аківа

Це працює лише для Xorg або також для ttys?
Narcolessico

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 ...)

Робочий процес

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). 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. Замініть вміст макетів. Виберіть той, який ви не будете використовувати. Наприклад: я змінив запис колективу, залишивши структуру недоторканою, і замінив клавіші.

Цікаві лінії:

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 Ahh, я просто не поспішав її оновлювати. Я фактично створив електронну таблицю, яка автоматично генерує код на основі того, які символи ви вводите в макет клавіатури.
Аківа

Це звучить як корисна електронна таблиця - чи є вона загальнодоступною?
MattKelly

@MattKelly Ось копія. Для цього потрібно багато суглобів, і, можливо, додано кілька ручок, але, як ви бачите, він генерує код: docs.google.com/spreadsheets/d/…
Akiva

Такий підхід не дозволяє встановити RALT, щоб він виступав як інша зворотна область, або встановити клавішу вставки, щоб діяти як зворотне котирування / нахил.
Крейг Хікс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.