XKB 无法识别我的自定义布局

XKB 无法识别我的自定义布局

我为 Lubuntu 18.04 创建了一个基于 Colemak 的自定义键盘布局(文件名为“brc”),并将其复制到 /usr/share/X11/xkb/symbols:

default partial
xkb_symbols "basic" {
    name[Group1]= "brc";

    // Alphanumeric section
    key <TLDE> { [   apostrophe,        quotedbl,        notsign,          notsign ] };
    key <AE01> { [            1,          exclam,    onesuperior,   exclamdown ] };
    key <AE02> { [            2,              at,    twosuperior,          onehalf ] };
    key <AE03> { [            3,      numbersign,  threesuperior,    threequarters ] };
    key <AE04> { [            4,          dollar,       sterling,       onequarter ] };
    key <AE05> { [            5,         percent,           cent,     threeeighths ] };
    key <AE06> { [            6,  dead_diaeresis,        notsign,        diaeresis ] };
    key <AE07> { [            7,       ampersand,      braceleft,     seveneighths ] };
    key <AE08> { [            8,        asterisk,    bracketleft,        trademark ] };
    key <AE09> { [            9,       parenleft,   bracketright,        plusminus ] };
    key <AE10> { [            0,      parenright,     braceright,           degree ] };
    key <AE11> { [        minus,      underscore,         endash,     questiondown ] };
    key <AE12> { [        equal,            plus,        section,      dead_ogonek ] };
    key <AE13> { [ bracketright,      braceright,      masculine,        masculine ] };
    key <BKSP> { [    BackSpace,       BackSpace,      BackSpace,        BackSpace ] };

    key <AD01> { [            q,               Q,          slash,            slash ] };
    key <AD02> { [            w,               W,       question,         question ] };
    key <AD03> { [            f,               F,       EuroSign,         EuroSign ] };
    key <AD04> { [            p,               P,          thorn,            THORN ] };
    key <AD05> { [            g,               G                                   ] }; 
    key <AD06> { [            j,               J,            yen                   ] };
    key <AD07> { [            l,               L                                   ] };
    key <AD08> { [            u,               U                                   ] };
    key <AD09> { [            y,               Y,         oacute,           Oacute ] };
    key <AD10> { [     ccedilla,        Ccedilla,                                  ] };
    key <AD11> { [   dead_acute,      dead_grave,         acute,             grave ] };
    key <AD12> { [  bracketleft,       braceleft,    ordfeminine,      dead_macron ] };

    key <AC01> { [            a,               A,             ae,               AE ] }; 
    key <AC02> { [            r,               R,     registered,       registered ] };
    key <AC03> { [            s,               S                                   ] };
    key <AC04> { [            t,               T                                   ] };
    key <AC05> { [            d,               D                                   ] };
    key <AC06> { [            h,               H                                   ] };
    key <AC07> { [            n,               N                                   ] };
    key <AC08> { [            e,               E                                   ] };
    key <AC09> { [            i,               I                                   ] };
    key <AC10> { [            o,               O,             oe,           OE     ] };
    key <AC11> { [   dead_tilde, dead_circumflex,     asciitilde,     asciicircum  ] };
    key <AC12> { [        slash,        question,   questiondown                   ] };

    key <AB01> { [            z,               Z,  guillemotleft                   ] };
    key <AB02> { [            x,               X, guillemotright                   ] };
    key <AB03> { [            c,               C       copyright,        copyright ] }; 
    key <AB04> { [            v,               V                                   ] }; 
    key <AB05> { [            b,               B                                   ] };
    key <AB06> { [            k,               K                                   ] };
    key <AB07> { [            m,               M,             mu,               mu ] };
    key <AB08> { [        comma,            less                                   ] };
    key <AB09> { [       period,         greater                                   ] };
    key <AB10> { [    semicolon,           colon                                   ] }; 

    key <SPCE> { [        space,           space,          space,     nobreakspace ] };

// Configures the "," for the numeric keypad
    include "kpdl(comma)"

// Configures the use of the AltGr key
    include "level3(ralt_switch)"
};

我还更改了 /usr/share/X11/xkb/rules 中的以下文件:

在 evdev.xml 中

    <layout>
      <configItem>
        <name>brc</name>
        <shortDescription>custom-clmk</shortDescription>
        <description>custom-colemak-abnt2</description>
        <languageList>
           <iso639Id>por</iso639Id>
        </languageList>
      </configItem>
      <variantList/>
    </layout>

在 evdev.lst 中

! layout
  brc             abnt2+colemak

这是结果:

~$ setxkbmap -v brc
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+brc+inet(evdev)
geometry:   pc(pc105)
Error loading new keyboard description

另外,这是我当前的布局:

~$ setxkbmap -v
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+br+inet(evdev)
geometry:   pc(pc105)

如何让 xkb 识别我的自定义布局?

答案1

AD10如果您只想设置两个级别,Ccedilla 后面似乎有一个逗号,它会破坏定义。您也只设置两个级别的其他键似乎很好。

AB03 中 C 和版权之间也缺少一个逗号。

    key <AD10> { [     ccedilla,        Ccedilla                                   ] };
    //    ...
    key <AB03> { [            c,               C,      copyright,        copyright ] }; 
...

答案2

我决定尝试使用 Xmodmap 来重新映射我的键盘布局而不是 XKB,并且效果非常好。与 Xmodmap 相比,在 XKB 中创建自定义布局似乎太复杂了,我推荐 Xah Lee的教程关于后者。感谢您的帮助。

答案3

对于那些想尝试更正布局的人:

default partial
xkb_symbols "basic" {
    name[Group1]= "brc";

    // Alphanumeric section
    key <TLDE> { [   apostrophe,        quotedbl,        notsign,          notsign ] };
    key <AE01> { [            1,          exclam,    onesuperior,   exclamdown ] };
    key <AE02> { [            2,              at,    twosuperior,          onehalf ] };
    key <AE03> { [            3,      numbersign,  threesuperior,    threequarters ] };
    key <AE04> { [            4,          dollar,       sterling,       onequarter ] };
    key <AE05> { [            5,         percent,           cent,     threeeighths ] };
    key <AE06> { [            6,  dead_diaeresis,        notsign,        diaeresis ] };
    key <AE07> { [            7,       ampersand,      braceleft,     seveneighths ] };
    key <AE08> { [            8,        asterisk,    bracketleft,        trademark ] };
    key <AE09> { [            9,       parenleft,   bracketright,        plusminus ] };
    key <AE10> { [            0,      parenright,     braceright,           degree ] };
    key <AE11> { [        minus,      underscore,         endash,     questiondown ] };
    key <AE12> { [        equal,            plus,        section,      dead_ogonek ] };
    key <BKSL> { [ bracketright,      braceright,      masculine,        masculine ] };
    key <BKSP> { [    BackSpace,       BackSpace,      BackSpace,        BackSpace ] };

    key <AD01> { [            q,               Q,          slash,            slash ] };
    key <AD02> { [            w,               W,       question,         question ] };
    key <AD03> { [            f,               F,       EuroSign,         EuroSign ] };
    key <AD04> { [            p,               P,          thorn,            THORN ] };
    key <AD05> { [            g,               G                                   ] }; 
    key <AD06> { [            j,               J,            yen                   ] };
    key <AD07> { [            l,               L                                   ] };
    key <AD08> { [            u,               U                                   ] };
    key <AD09> { [            y,               Y,         oacute,           Oacute ] };
    key <AD10> { [     ccedilla,        Ccedilla                                   ] };
    key <AD11> { [   dead_acute,      dead_grave,         acute,             grave ] };
    key <AD12> { [  bracketleft,       braceleft,    ordfeminine,      dead_macron ] };

    key <AC01> { [            a,               A,             ae,               AE ] }; 
    key <AC02> { [            r,               R,     registered,       registered ] };
    key <AC03> { [            s,               S                                   ] };
    key <AC04> { [            t,               T                                   ] };
    key <AC05> { [            d,               D                                   ] };
    key <AC06> { [            h,               H                                   ] };
    key <AC07> { [            n,               N                                   ] };
    key <AC08> { [            e,               E                                   ] };
    key <AC09> { [            i,               I                                   ] };
    key <AC10> { [            o,               O,             oe,           OE     ] };
    key <AC11> { [   dead_tilde, dead_circumflex,     asciitilde,     asciicircum  ] };

    key <LSGT> { [    backslash,             bar,      masculine                   ] };
    key <AB01> { [            z,               Z,  guillemotleft                   ] };
    key <AB02> { [            x,               X, guillemotright                   ] };
    key <AB03> { [            c,               C,      copyright,        copyright ] }; 
    key <AB04> { [            v,               V                                   ] }; 
    key <AB05> { [            b,               B                                   ] };
    key <AB06> { [            k,               K                                   ] };
    key <AB07> { [            m,               M,             mu,               mu ] };
    key <AB08> { [        comma,            less                                   ] };
    key <AB09> { [       period,         greater                                   ] };
    key <AB10> { [    semicolon,           colon                                   ] };
    key <AB11> { [        slash,        question,   questiondown                   ] };

    key <SPCE> { [        space,           space,          space,     nobreakspace ] };

    key <KPPT> { [ period ] };

// Configures the "," for the numeric keypad
    include "kpdl(comma)"

// Configures the use of the AltGr key
    include "level3(ralt_switch)"
};

相关内容