XKB многомачтовая компоновка специфическая странность поведения Capslock

У меня есть две настраиваемые раскладки клавиатуры, одна измененная версия для us (которую я назвал vi ), одна модифицированная версия dk (которую я назвал da .)

Оба они зарегистрированы правильно и работают. После моды.

vi имеет Capslock и Escape, замененные одинаковыми с тем, как это делается в частичном макете capslock(swapescape) , и имеет указанный ключ Compose (ключ <LSGT> , который используется us на pc105 , но используется для <>\¬ с dk .)

(Очевидно, что vi является тем, что я сделал для Vi-подобных редакторов. Причина, по которой я не просто устанавливаю caps:swapescape, compose:102 , потому что это также повлияет на макет dk а именно на то, чтобы исключить возможность ввода символов <>\¬ .)

Проблема, с которой я столкнулся вначале, заключалась в том, что мой макет vi заменит Capslock и Escape, и это будет истекать в макете native dk .

Затем я создал макет da который пытается исправить это, указав, что Capslock действительно является Capslock и что Escape действительно Escape.

И это почти работает. Теперь они действуют как Capslock при выборе макета da .

Как я могу убедиться, что Escape is Escape и Capslock – это Capslock в da , сохраняя при этом поведение swapped в vi ?

ETA: теперь я попытался изменить порядок этих двух макетов (поэтому макеты читают da,vi ), и ошибка быстро переключилась: теперь оба vi являются Capslock, а da имеет нормальный путь.


Я на Xubuntu 14.04

Файл макета vi :

 default partial alphanumeric_keys modifier_keys xkb_symbols "basic" { name[Group1]= "English (US) with Caps:SwapEscape and Compose:102"; 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, parenleft ] }; key <AE10> { [ 0, parenright ] }; key <AE11> { [ minus, underscore ] }; key <AE12> { [ equal, plus ] }; key <AD01> { [ q, Q ] }; key <AD02> { [ w, W ] }; key <AD03> { [ e, E ] }; key <AD04> { [ r, R ] }; key <AD05> { [ t, T ] }; key <AD06> { [ y, Y ] }; key <AD07> { [ u, U ] }; key <AD08> { [ i, I ] }; key <AD09> { [ o, O ] }; key <AD10> { [ p, P ] }; key <AD11> { [ bracketleft, braceleft ] }; key <AD12> { [ bracketright, braceright ] }; key <AC01> { [ a, A ] }; key <AC02> { [ s, S ] }; key <AC03> { [ d, D ] }; key <AC04> { [ f, F ] }; key <AC05> { [ g, G ] }; key <AC06> { [ h, H ] }; key <AC07> { [ j, J ] }; key <AC08> { [ k, K ] }; key <AC09> { [ l, L ] }; key <AC10> { [ semicolon, colon ] }; key <AC11> { [ apostrophe, quotedbl ] }; key <AB01> { [ z, Z ] }; key <AB02> { [ x, X ] }; key <AB03> { [ c, C ] }; key <AB04> { [ v, V ] }; key <AB05> { [ b, B ] }; key <AB06> { [ n, N ] }; key <AB07> { [ m, M ] }; key <AB08> { [ comma, less ] }; key <AB09> { [ period, greater ] }; key <AB10> { [ slash, question ] }; key <BKSL> { [ backslash, bar ] }; key <CAPS> { [ Escape ] }; key <ESC> { [ Caps_Lock ] }; key <LSGT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] }; }; 

файл макета da :

 // based on a keyboard map from an 'xkb/symbols/dk' file default partial alphanumeric_keys xkb_symbols "basic" { include "latin(type2)" name[Group1]="Danish"; key <AE11> { [ plus, question, plusminus, questiondown ] }; key <AE12> { [dead_acute, dead_grave, bar, brokenbar ] }; key <AC10> { [ ae, AE, dead_acute, dead_doubleacute ] }; key <AC11> { [ oslash, Ooblique, dead_circumflex, dead_caron ] }; key <TLDE> { [ onehalf, section, threequarters, paragraph ] }; key <BKSL> { [apostrophe, asterisk, dead_doubleacute, multiply ] }; key <LSGT> { [ less, greater, backslash, notsign ] }; include "kpdl(comma)" include "level3(ralt_switch)" key <ESC> { [ Escape ] }; key <CAPS> { [ Caps_Lock ] }; }; 

setxkbmap -print -verbose 10

 Setting verbose level to 10 locale is C 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: vi,da variant: , Trying to build keymap using the following components: keycodes: evdev+aliases(qwerty) types: complete compat: complete symbols: pc+vi+da:2+inet(evdev) geometry: pc(pc105) xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+vi+da:2+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; }; 

Попробуйте установить оба макета в том же файле, используя явные [Group]:

key <...> { symbols[Group1] = [ ... ], symbols[Group2] = [ ... ] };