Я пытаюсь создать пользовательский макет в XKB следующий инструкциям, данным в ответах обмена стека и других учебных руководствах. У меня есть следующее в файле my
:
default alphanumeric_keys
xkb_symbols "basic" {
name[Group1]="MyLayout";
key <AC01> { [ UE700 ] };
key <AC02> { [ UE701 ] };
key <AC03> { [ UE702 ] };
key <AC04> { [ UE703 ] };
key <AC05> { [ UE704 ] };
key <AC06> { [ UE705 ] };
key <AC07> { [ UE706 ] };
key <AC08> { [ UE707 ] };
key <AC09> { [ UE708 ] };
key <AC10> { [ UE709 ] };
key <AC11> { [ UE70A ] };
key <AD03> { [ UE70B ] };
};
Я добавил блоки к evdev.lst
и evdev.xml
файлы:
// evdev.lst
! layout
my MyLayout
us English (US)
// evdev.xml
<layout>
<configItem>
<name>my</name>
<shortDescription>my</shortDescription>
<description>MyLayout</description>
<languageList>
<iso639Id>myl</iso639Id>
</languageList>
</configItem>
<variantList/>
</layout>
Я работал sudo dpkg-reconfigure xkb-data
до тестирования. Расположение видимо в моих параметрах настройки системы как MyLayout
и я могу добавить его без очевидной проблемы. Однако, когда я выбираю его как активное расположение, его символ темно-серый, и это сразу ведет себя как расположение перед ним в выпадающем списке. Если мой список идет English (US)
, Hebrew
, MyLayout
, мой пользовательский макет будет вести себя точно как еврейское расположение. Если я удалю иврит, то он будет вести себя точно как английский язык (США). Я нов из идей об этом и не вижу проблему со своим синтаксисом.
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: pc105
layout: my
variant: basic
options: compose:ralt,lv3:caps_switch
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+my(basic)+inet(evdev)+compose(ralt)+level3(caps_switch)
geometry: pc(pc105)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+my(basic)+inet(evdev)+compose(ralt)+level3(caps_switch)" };
xkb_geometry { include "pc(pc105)" };
};
Необходимо включить фактическое правило /usr/share/X11/xkb/rules/evdev
; evdev.{lst,xml}
файлы являются только описаниями.
Мое лучшее предположение - то, что Вам нужно что-то как следующее:
# existing lines
! model layout variant = symbols
* ben basic = pc+in(ben)
# your additions
* my basic = pc+my(basic)
Я принимаю Ваш my
файл /usr/share/X11/xkb/symbols/my
. Первые 3 столбца соответствуют входным параметрам XKB (здесь, любой -model
, -layout my
, -variant basic
). Последний столбец определяет правило символов с точки зрения файлов символов для загрузки в формате file(clause)
(несколько файлов, разделенных +
). Файлы символов - все в /usr/share/X11/xkb/symbols
.
Попробуйте это - можно протестировать с чем-то вроде этого, чтобы удостовериться, что это работает (отметьте +my(basic)
в xkb_symbols
строка):
$ setxkbmap -layout my -variant basic -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+my(basic)+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
Одна проблема состоит в том, что я не уверен Ваш my
определения не будут конфликтовать с существующим расположением. Если это - абсолютно новое расположение, необходимо, вероятно, назвать его чем-то еще для предотвращения конфликтов.