X11/xkb: пользовательская раскладка клавиатуры — «Ошибка при загрузке нового описания клавиатуры»
Моя машина: Xubuntu 20.04.3 LTS, XFCE 4.14, X.org 1.20.13
Я пытаюсь создать пользовательскую раскладку клавиатуры для версии уйгурского языка с арабским шрифтом (kona yéziq). Я считаю, что у меня все в основном правильно, и мне просто не хватает чего-то небольшого, чтобы собрать все это вместе.
Это вывод команды
setxkbmap -v 10 -layout "ug":
Setting verbose level to 10
locale is C
Warning! Multiple definitions of keyboard layout
Using command line, ignoring X server
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules: evdev
model: pc104
layout: ug
options: terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+ug+inet(evdev)+terminate(ctrl_alt_bksp)
geometry: pc(pc104)
Error loading new keyboard description
(Я также пробовал с настройкой модели pc105 с тем же результатом.) Как следует из сообщения об ошибке, после выполнения этой команды моя раскладка клавиатуры остается такой же, как и раньше.
Насколько я понимаю, соответствующие файлы здесь будут , , и . я вставлю
ugполностью, а затем соответствующие строки, которые я добавил из
evdevа также :
/usr/share/X11/xkb/symbols/ug
default partial alphanumeric_keys modifier_keys
xkb_symbols "ug" {
name[Group1]= "Uyghur";
key <TLDE> { [ grave, asciitilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenright ] };
key <AE10> { [ 0, parenleft ] };
key <AE11> { [ minus, underscore ] };
key <AE12> { [ equal, plus ] };
key <AD01> { [ U0686, NoSymbol ] }; // چ
key <AD02> { [ U06CB, NoSymbol ] }; // ۋ
key <AD03> { [ U06D0, NoSymbol ] }; // ې
key <AD04> { [ U0631, NoSymbol ] }; // ر
key <AD05> { [ U062A, NoSymbol ] }; // ت
key <AD06> { [ U064A, NoSymbol ] }; // ي
key <AD07> { [ U06C7, NoSymbol ] }; // ۇ
key <AD08> { [ U06AD, NoSymbol ] }; // ڭ
key <AD09> { [ U0648, NoSymbol ] }; // و
key <AD10> { [ U067E, NoSymbol ] }; // پ
key <AD11> { [ bracketright, U00BB ] }; // ], »
key <AD12> { [ bracketleft, U00AB ] }; // [, «
key <AC01> { [ U06BE, NoSymbol ] }; // ھ
key <AC02> { [ U0633, NoSymbol ] }; // س
key <AC03> { [ U062F, U0698 ] }; // ژ ,د
key <AC04> { [ U0627, U0641 ] }; // ف ,ا
key <AC05> { [ U06D5, U06AF ] }; // گ ,ە
key <AC06> { [ U0649, U062E ] }; // خ ,ى
key <AC07> { [ U0642, U062C ] }; // ج ,ق
key <AC08> { [ U0643, U06C6 ] }; // ۆ ,ك
key <AC09> { [ U0644, NoSymbol ] }; // ل
key <AC10> { [ U061B, colon ] }; // ؛, :
key <AC11> { [ apostrophe, quotedbl ] }; // ', "
key <AB01> { [ U0632, NoSymbol ] }; // ز
key <AB02> { [ U0634, NoSymbol ] }; // ش
key <AB03> { [ U063A, NoSymbol ] }; // غ
key <AB04> { [ U06C8, NoSymbol ] }; // ۈ
key <AB05> { [ U0628, NoSymbol ] }; // ب
key <AB06> { [ U0646, NoSymbol ] }; // ن
key <AB07> { [ U0645, NoSymbol ] }; // م
key <AB08> { [ U060C, greater ] }; // ،, >
key <AB09> { [ period, less ] }; // ., <
key <AB10> { [ U0626, U061F ] }; // ؟ ,ئ
key <BKSL> { [ backslash, bar ] };
};
(Я рассматривал возможность того, что проблема вызвана нарушением стиля вкладок по умолчанию, но 1. ни один из моих текстовых редакторов не создает вкладки такого же типа, 2. я видел примеры измененных макетов, которые делают то же самое, и 3 , тогда какой смысл использовать скобки и точки с запятой?)
/usr/share/X11/xkb/rules/evdev(строки 208-224)
classmate us alt-intl = pc+us(classmate-alt-intl)
classmate us altgr-intl = pc+us(classmate-altgr-intl)
nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty)
* $sun_custom $sun_var = pc+sun_vndr/%l%(v)
! model layout = symbols
* ug = pc+ug // This is the line I've added.
* ar = pc+ara
* ben = pc+in(ben)
* bs = pc+ba
* cs = pc+rs
* cz_qwerty = pc+cz(qwerty)
* dev = pc+in(deva)
* dvorak = pc+us(dvorak)
* dzdwi = pc+bt
* el = pc+gr
* en_US = pc+latin
(Я пробовал несколько разных вариантов вместо
pc+ug, которые произвели один и тот же эффект, но, в частности, эти изменения действительно проявились в выводе
setxkbmap, поэтому я знаю, что у меня правильный файл.)
/usr/share/X11/xkb/rules/evdev.xml(строки 1330 - 1352)
<vendor>Megawin Technology</vendor>
</configItem>
</model>
</modelList>
<layoutList>
<layout>
<configItem>
<name>ug</name>
<shortDescription>Uyghur</shortDescription>
<description>Uyghur (Kona Yeziq)</description>
<languageList>
<iso639Id>uig</iso639Id>
</languageList>
</configItem>
<variantList/>
</layout>
<layout>
<configItem>
<name>us</name>
<!-- Keyboard indicator for English layouts -->
<shortDescription>en</shortDescription>
<description>English (US)</description>
<languageList>
Изменения, которые я внес в
evdev.xmlдействительно заполнить в диалоговом окне настроек клавиатуры XFCE, но выбор раскладки клавиатуры оттуда просто ничего не делает. На всех этапах отладки я свободно выходил из сеанса и снова входил в систему, прежде чем определить, что попытка решения не удалась.