XKB no reconoce mi diseño personalizado

XKB no reconoce mi diseño personalizado

Creé una distribución de teclado personalizada (el archivo se llama “brc”) basado en Colemak para mi Lubuntu 18.04 y lo copié en /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)"
};

También modifiqué los siguientes archivos en /usr/share/X11/xkb/rules:

en evdev.xml

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

en evdev.lst

! layout
  brc             abnt2+colemak

Y este es el 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

Además, este es mi diseño actual:

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

¿Cómo puedo hacer que xkb reconozca mi diseño personalizado?

Respuesta1

Parece haber una coma después de Ccedilla que interrumpe la definición AD10si solo desea establecer dos niveles. Las otras claves para las que también configuró solo dos niveles parecen estar bien.

También falta una coma en AB03 entre C y copyright.

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

Respuesta2

Decidí probar Xmodmap para reasignar la distribución de mi teclado en lugar de XKB, y funcionó perfectamente. Crear diseños personalizados en XKB parece demasiado complejo en comparación con Xmodmap, y recomiendo El tutorial de Xah Leesobre este último. Gracias por tu ayuda.

Respuesta3

Para aquellos que quieran probar el diseño corregido:

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

información relacionada