Как создать новую раскладку клавиатуры в каталоге /usr/share/X11/xkb в Ubuntu?

Вопрос или проблема

В директории /usr/share/X11/xkb/symbols перечислены различные раскладки клавиатуры. Я сделал копию файла /usr/share/X11/xkb/symbols/us под именем /usr/share/X11/xkb/symbols/new_test_layout.

Символы, соответствующие нажимаемым клавишам, указаны в файле, как в данном примере:

xkb_symbols "basic"{
//другие клавиши
key <AD01> {[q, Q]};
//другие клавиши
};

Это означает, что символ строчной буквы q появляется, когда клавиша AD01 нажата нормально, а заглавная Q появляется, когда клавиша AD01 нажата вместе с клавишей Shift. Насколько я понимаю, третий символ будет появляться, когда клавиша нажата вместе с клавишей Alt-Gr, а четвертый символ, когда она нажата вместе с клавишами Alt-Gr и Shift.

Я могу заменить символы, указанные под каждой клавишей, на символ по своему выбору. Однако в этом файле символы не представлены непосредственно в виде строковых символов или их Unicode значений. Например, в файле есть:

key <AB10> {[slash, question]};

Я совсем новичок в Linux, поэтому не уверен, что это такое, но догадываюсь, что это переменные, определенные в другом файле. В любом случае slash будет соответствовать символу /, а question будет соответствовать символу ?.

На этой веб-странице есть пример раскладки xkb для фарси клавиатуры.

https://itectec.com/ubuntu/ubuntu-how-to-add-a-new-keyboard-layout-custom-keyboard-layout-definition/

Здесь вы можете увидеть, например,

key <AD10> {[Arabic_hah, bracketleft, 0x100202c]};

Таким образом, клавиша AD10 (которая является клавишей P на обычной QWERTY клавиатуре) должна выдавать символ ه, который указан как U0647 (АРАБСКАЯ БУКВА ХЕ). Эта буква называется Arabic_hah. Где я могу найти список этих имен? Если бы я просто использовал U0647 на его месте, будет ли он распознаваться в любом файле внутри директории xkb? В урду есть буква choti he, ہ, которая выглядит похожей на арабский хе, но имеет другое Unicode значение: U06C1 (АРАБСКАЯ БУКВА ХЕ ГОАЛ). Я не знаю, какое имя используется для choti he в Linux, потому что не могу найти раскладку клавиатуры для урду нигде в каталоге /usr/share/X11/xkb/symbols, хотя файлы для дари (af) и арабского (ara) присутствуют.

Будет ли достаточно, если я просто использую значения Unicode для всех символов, поддерживаемых Linux, в любом файле внутри директории xkb?

Клавиатуры (в основном) не по языку, а по стране. Клавиатуры для урду находятся в /usr/share/X11/xkb/symbols/pk (Пакистан) и /usr/share/X11/xkb/symbols/in (Индия). И там используется шестнадцатеричный unicode.

Ответ или решение

Создание новой раскладки клавиатуры в Ubuntu, в частности в каталоге /usr/share/X11/xkb, требует внимательного подхода, включая понимание структуры XKB и использования соответствующих символов. Рассмотрим пошаговую инструкцию по созданию пользовательской раскладки клавиатуры на основе вашего описания и вопросов.

Шаг 1: Копирование файла раскладки

Как вы уже сделали, создайте копию существующей раскладки. В вашем случае вы скопировали файл /usr/share/X11/xkb/symbols/us в файл /usr/share/X11/xkb/symbols/new_test_layout:

sudo cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/new_test_layout

Шаг 2: Редактирование файла

Теперь откройте скопированный файл для редактирования:

sudo nano /usr/share/X11/xkb/symbols/new_test_layout

В этом файле вы сможете изменять символы, которые соответствуют каждой клавише. Например:

key <AD01> {[my_symbol1, my_symbol2]};

Вы можете заменить my_symbol1 и my_symbol2 на соответствующие названия символов, используя стандартные определения в XKB.

Шаг 3: Поиск названий символов

Чтобы узнать, какие названия символов использовать, вы можете обратиться к стандартному списку символов, которые находятся в файлах XKB. Основные символы для различных языков можно найти в документации XKB или на сайте, например, в репозитории, где хранятся файлы XKB.

Для символов на арабском языке вы можете использовать Arabic_hah для ه, но краткое «хо» также может быть обозначено другим именем. Чтобы искать определенные символы, вы можете использовать следующие команды:

grep -r "symbol_name" /usr/share/X11/xkb/symbols/

Шаг 4: Использование Unicode

Понимание того, что U0647 указывает на символ в Unicode, важно, но имейте в виду, что сама конструкция XKB не принимает прямое использование Unicode-кодов. Вместо этого используйте имена символов, как показано в ваших примерах (Arabic_hah, my_unicode_ex). Если вам известен нужный символ, вам нужно найти его правильное имя в контексте XKB.

Шаг 5: Создание alt-gr и других модификаторов

Как вы упомянули, параметры для AltGr и Shift добавляются следующим образом:

key <AD01> {[my_symbol1, my_symbol2, my_symbol3, my_symbol4]};

Где:

  • my_symbol1 — символ без модификаторов,
  • my_symbol2 — символ с Shift,
  • my_symbol3 — символ с AltGr,
  • my_symbol4 — символ с Shift + AltGr.

Шаг 6: Регистрация новой раскладки

После редактирования файла вам нужно добавить новую раскладку в систему. Это можно сделать, отредактировав файл /usr/share/X11/xkb/rules/evdev.lst, добавив вашу новую раскладку, и затем обновив систему:

sudo xkbcomp $DISPLAY

Шаг 7: Применение новой раскладки

Перезагрузите компьютер или выполните команду setxkbmap, чтобы применить новую раскладку:

setxkbmap new_test_layout

Заключение

Создание новой клавиатурной раскладки в Ubuntu требует тщательного понимания структуры файлов XKB и применения подходящих символов и кодов. Надеюсь, эти шаги помогут вам успешно создать и внедрить вашу новую раскладку, обеспечив нужную функциональность и соответствие вашим требованиям.

Оцените материал
Добавить комментарий

Капча загружается...