Как создать полный макет xkb и заставить его работать?

У меня есть японская макетная клавиатура, и я бы хотел настроить ее в соответствии с моими потребностями. Вот файл макета xkb, который я создал.

default partial alphanumeric_keys modifier_keys xkb_symbols "jp106" { include "srvr_ctrl(fkey2vt)" include "keypad(numoperdecsep)" key <SCLK> { [ Scroll_Lock ] }; key <PAUS> { type= "PC_CONTROL_LEVEL2", symbols[Group1]= [ Pause, Break ] }; key <INS> { [ Insert ] }; key <HOME> { [ Home ] }; key <PGUP> { [ Prior ] }; key <DELE> { [ Delete ] }; key <END> { [ End ] }; key <PGDN> { [ Next ] }; key <UP> { [ Up ] }; key <LEFT> { [ Left ] }; key <DOWN> { [ Down ] }; key <RGHT> { [ Right ] }; replace modifier_map Control { Control_L, Control_R }; replace modifier_map Shift { Shift_L, Shift_R }; replace modifier_map Lock { Caps_Lock }; replace modifier_map Mod1 { Alt_L }; replace modifier_map Mod2 { Num_Lock }; replace modifier_map Mod3 { Hyper_R }; replace modifier_map Mod4 { Super_L, Super_R }; replace modifier_map Mod5 { Mode_switch }; key <ESC> { [ Escape ] }; key <NMLK> { [ Num_Lock ] }; key <BKSP> { [ BackSpace ] }; key <TAB> { [ Tab, ISO_Left_Tab ] }; key <RTRN> { [ Return ] }; key <LFSH> { [ Shift_L ] }; key <RTSH> { [ Shift_R ] }; key <LCTL> { [ Control_L ] }; key <LWIN> { [ Super_L ] }; key <LALT> { [ Alt_L ] }; key <NFER> { [ space ] }; key <SPCE> { [ Shift_R ] }; key <XFER> { [ Mode_switch ] }; key <HKTG> { [ Control_L ] }; key <RALT> { [ Hyper_R ] }; // t420 and lower key <MENU> { [ Super_R ] }; // t430 and higher key <PRSC> { [ Super_R ] }; key <RCTL> { [ Control_R ] }; key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, at ], [ ampersand ] }; key <AE03> { [ 3, numbersign ], [ semicolon ] }; key <AE04> { [ 4, dollar ], [ colon ] }; key <AE05> { [ 5, percent ] }; key <AE06> { [ 6, asciicircum ] }; key <AE07> { [ 7, ampersand ] }; key <AE08> { [ 8, asterisk ] }; key <AE09> { [ 9, parenright ] }; key <AE10> { [ 0, parenright ] }; key <AE11> { [ minus, underscore ] }; key <AE12> { [ asciicircum, asciitilde] }; key <AE13> { [ yen, bar ] }; key <AD01> { [ q, Q ], [ grave ] }; key <AD02> { [ w, W ], [ slash ] }; key <AD03> { [ e, E ], [ braceleft ] }; key <AD04> { [ r, R ], [ braceright ] }; key <AD05> { [ t, T ], [ quotedbl ] }; key <AD06> { [ y, Y ] }; key <AD07> { [ u, U ] }; key <AD08> { [ i, I ] }; key <AD09> { [ o, O ] }; key <AD10> { [ p, P ] }; key <AD11> { [ at, grave ] }; key <AD12> { [ bracketleft, braceleft ] }; key <CAPS> { [ Caps_Lock ] }; key <AC01> { [ a, A ], [ asciitilde ] }; key <AC02> { [ s, S ], [ question ] }; key <AC03> { [ d, D ], [ bracketleft ] }; key <AC04> { [ f, F ], [ bracketright ] }; key <AC05> { [ g, G ], [ apostrophe ] }; key <AC06> { [ h, H ] }; key <AC07> { [ j, J ] }; key <AC08> { [ k, K ] }; key <AC09> { [ l, L ] }; key <AC10> { [ semicolon, colon ] }; key <AC11> { [ colon, asterisk ] }; key <AC12> { [ bracketright, braceright ] }; key <AB01> { [ z, Z ] }; key <AB02> { [ x, X ], [ equal ] }; key <AB03> { [ c, C ], [ plus ] }; key <AB04> { [ v, V ], [ bar ] }; key <AB05> { [ b, B ], [ backslash ] }; key <AB06> { [ n, N ] }; key <AB07> { [ m, M ] }; key <AB08> { [ comma, less ] }; key <AB09> { [ period, greater ] }; key <AB10> { [ slash, question ] }; key <AB11> { [ backslash, underscore] }; }; 

Однако эти ключи работают не так, как ожидалось,

 key <LWIN> { [ Super_L ] }; key <NFER> { [ space ] }; key <SPCE> { [ Shift_R ] }; key <XFER> { [ Mode_switch ] }; key <HKTG> { [ Control_L ] }; key <RALT> { [ Hyper_R ] }; // t420 and lower key <MENU> { [ Super_R ] }; // t430 and higher key <PRSC> { [ Super_R ] }; 

Модификаторы тоже ошибаются. Это то, что показывает xmodmap,

 ❯ xmodmap xmodmap: up to 3 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 Hyper_L (0xcf) mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb) 

Я поместил файл макета в /usr/share/X11/xkb/symbols/jpamos и загрузил setxkbmap jpamos с помощью setxkbmap jpamos . Я также использовал localectl set-x11-keymap jpamos чтобы сохранить его.

Любая помощь очень ценится! Благодаря!

Linux и Unix - лучшая ОС в мире.