Вопрос или проблема
В директории /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
для фарси клавиатуры.
Здесь вы можете увидеть, например,
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 и применения подходящих символов и кодов. Надеюсь, эти шаги помогут вам успешно создать и внедрить вашу новую раскладку, обеспечив нужную функциональность и соответствие вашим требованиям.