XKB não reconhece meu layout personalizado

XKB não reconhece meu layout personalizado

Criei um layout de teclado personalizado (o arquivo é chamado “brc”) baseado no Colemak para meu Lubuntu 18.04 e copiei-o para /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)"
};

Também alterei os seguintes arquivos em /usr/share/X11/xkb/rules:

em evdev.xml

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

em evdev.lst

! layout
  brc             abnt2+colemak

E este é o resultado:

~$ 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

Além disso, este é meu layout atual:

~$ 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)

Como posso fazer com que o xkb reconheça meu layout personalizado?

Responder1

Parece haver uma vírgula após Ccedilla que quebra a definição AD10se você deseja definir apenas dois níveis. As outras teclas para as quais você também definiu apenas dois níveis parecem boas.

Também falta uma vírgula em AB03 entre C e copyright.

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

Responder2

Decidi experimentar o Xmodmap para remapear o layout do meu teclado em vez do XKB e funcionou perfeitamente. Criar layouts personalizados no XKB parece ser muito complexo em comparação com o Xmodmap, e eu recomendo Tutorial de Xah Leeneste último. Obrigado pela ajuda.

Responder3

Para quem quiser experimentar o layout corrigido:

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)"
};

informação relacionada