Як створити власну розкладку клавіатури під Linux?

Axmed Axmed 30 серпня
Як створити власну розкладку клавіатури під Linux?

Останнім часом стало модно писати українською латинкою. Бувають випадки коли пристрій чи програма не підтримують кирилиці і доречніше вживати латинські літери, або не хочеться лишній раз перемикатися з латиниці на кирилиці, а натомість тримати лише одну розкладку.

За основу для нашої клавіатури візьмемо стандартну англійську розкладку (QWERTY) і додамо до неї літери ğ, ž, č та š, які відповідають кириличним ґ, ж, ч та ш. Літери набиратимуться через праву клавішу Alt.

Як створити власну розкладку клавіатури під Linux?

У GNU/Linux усі файли з розкладками знаходяться в каталозі /usr/share/X11/xkb/symbols/. Хоча в різних дистрибутивах розташування файлів може відрізнятися. В мене стоїть Debian 10 зі стільницею Xfce 4.12.

Отже, переходимо у згаданий вище каталог і додаємо вкінці файлу ua наступний код:

partial alphanumeric_keys
xkb_symbols "latynka" {
    include "us(basic)"
    name[Group1]="Ukrainian (latynka)";

    key <AC02> { [ s, S, scaron, Scaron ] };
    key <AC05> { [ g, G, gbreve, Gbreve ] };
    key <AB01> { [ z, Z, zcaron, Zcaron ] };
    key <AB03> { [ c, C, ccaron, Ccaron ] };

    include "level3(ralt_switch)"
};

Параметр partial означає, що блок коду описує не всю клавіатуру. Параметр alphanumeric_keys вказує, яку саме частину клавіатури описує код. Інструкція xkb_symbols "latynka" задає назву для даного варіанту розкладки.

Команда include "us(basic)" імпортує літери з англійської розкладки клавіатури (в кінці крапка з комою не ставиться). Команда name[Group1]="Ukrainian (latynka)"; задає повну назву для групи символів.

Далі описуємо літери, які треба додати чи замінити. Інструкція складається з ключового слова key; ідентифікатора, що позначає розташування клавіші на клавіатурі; та переліку символів, які будуть пов'язані з клавішею.

key <AC02> { [ s, S, scaron, Scaron ] };

Є чотири рівні натискання по клавіші: звичайне натискання; натискання з клавішею Shift; натискання з клавішею ПравAlt; натискання з клавішами ПравAlt та Shift одночасно.

2-й рівень - | S Š | - 4-й рівень
1-й рівень - | s š | - 3-й рівень

Ідентифікатори фізичного розташування клавіш на клавіатурі:

  • <TLDE> позначає клавішу наголос/тильда;
  • <BKSL> позначає клавішу зворотній слеш;
  • <AB01>, <AB02>, .. позначають клавіші Z, X, ..;
  • <AC01>, <AC02>, .. позначають клавіші A, S, ..;
  • <AD01>, <AD02>, .. позначають клавіші Q, W, ..;
  • <AE01>, <AE02>, .. позначають клавіші 1, 2, ...

Замість символів можна вказувати номери Юнікоду (наприклад, U0041 відповідає літері A) або їхні унікальні назви. Назви я підглядав у розкладках сусідніх мов (в польській (pl) і хорватській (hr)). Можна подивитися у Вікіпедії, але не факт, що вони будуть працювати.

У кінці додано інструкцію include "level3(ralt_switch)", яка дозволяє набирати символи 3-го і 4-го рівня через відповідну клавішу. В даному випадку це ПравийAlt.

Після опису розкладки треба додати метадані. Відкриваємо файл /usr/share/X11/xkb/rules/evdev.xml і шукаємо там фрагмент коду, що описує варіанти українських розкладок:

    <layout>
      <configItem>
        <name>ua</name>
        <shortDescription>uk</shortDescription>
        <description>Ukrainian</description>
        <languageList>
          <iso639Id>ukr</iso639Id>
        </languageList>
      </configItem>
      <variantList>
        <variant>
          <configItem>
            <name>phonetic</name>
            <description>Ukrainian (phonetic)</description>
          </configItem>
        </variant>
        ...
      </variantList>
    </layout>

і додаємо інформацію про свій варіант:

        ...
        <variant>
          <configItem>
            <name>latynka</name>
            <description>Ukrainian (latynka)</description>
          </configItem>
        </variant>

Щоб користуватися новою розкладкою треба додати її через меню Налаштування/Клавіатура, або відредагувати файл /etc/default/keyboard. В мене він виглядає так:

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="ua,ua"
XKBVARIANT="latynka,"
XKBOPTIONS="grp:caps_toggle,grp_led:scroll"

BACKSPACE="guess"

Після змін слід перезавантажити систему.

У графічному режимі повинно працювати добре, але в консолі можуть не набиратися діакритичні знаки. Це виправляється командою:

dpkg-reconfigure console-setup

і в другому вікні обрати шостий варіант зверху:

# Кирилиця - Слов'янські мови (а також боснійська та сербська латиниця)

Ось і все. Нова розкладка без проблем працює в емаксі, вімі та інших редакторах. Цікавтеся українською латинкою і вигадуйте свої розкладки!

Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Війти / Зареєструватися