// based on 
// "a very simple Brasilian ABNT2 keybaord
// by Ricardo Y. Igarashi (iga@that.com.br)
// Adds suport for dead-keys in I18N applications
// by Conectiva  (http://www.conectiva.com.br)"
//
// $XKeyboardConfig: xkbdesc/symbols/br,v 1.8 2005/09/20 21:32:55 svu Exp $
// $XdotOrg: xc/programs/xkbcomp/symbols/br,v 1.1.4.3 2004/03/05 13:41:32 eich Exp $
// $XFree86: xc/programs/xkbcomp/symbols/br,v 1.3 2003/04/19 12:22:11 pascal Exp $

default
xkb_symbols "abnt2" {

    include "pc/latin"
    name[Group1]="Brazil";

    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 <AE12>	{ [     equal,       plus,      section,  dead_ogonek ]	};

    key <AD01>  { [         q,          Q,        slash,        slash ] };   
    key <AD02>  { [         w,          W,     question,     question ] };   
    key <AD03>	{ [         e,          E,     EuroSign,     EuroSign ]	};
    key <AD04>	{ [         r,          R,   registered,   registered ]	};
    key <AD11>	{ [dead_acute, dead_grave,        acute,        grave ]	};
    key <AD12>	{ [bracketleft,  braceleft, ordfeminine,  dead_macron ]	};

    key <AC10>	{ [  ccedilla,   Ccedilla,  dead_acute, dead_doubleacute] };
    key <AC11>	{ [dead_tilde, dead_circumflex, asciitilde, asciicircum ] };
    key <AC12>  { [bracketright, braceright,  masculine,    masculine   ] };

    key <TLDE>	{ [apostrophe,   quotedbl,      notsign,      notsign ]	};

    key <BKSL>	{ [ backslash,        bar,    masculine,   dead_breve ]	};
    key <AB03>	{ [         c,          C,    copyright,    copyright ]	};
    key <AB07>  { [         m,          M,           mu,           mu ] };
    key <AB10>	{ [ semicolon,    colon, dead_belowdot, dead_abovedot ]	};

// ABNT-2 keyboard has this special key

    key <AB11>	{ [     slash,   question,       degree, questiondown ]	};

    key <KPPT>	{ [ KP_Decimal ]	};
    key <KPDL>  { [ KP_Delete,      comma ]     };

    include "level3(ralt_switch_multikey)"

};

partial alphanumeric_keys
xkb_symbols "nodeadkeys" {

    include "pc/br(abnt2)" // for consistent naming
    name[Group1]="Brazil - Eliminate dead keys";

    key <AE06> { [          6,    diaeresis,       notsign,     notsign ] };
    key <AD11> { [ apostrophe,        grave ] };
    key <AC10> { [   ccedilla,     Ccedilla,         acute, doubleacute ] };
    key <AC11> { [  asciitilde, asciicircum ] };
    key <AB10> { [   semicolon,       colon, dead_belowdot,    abovedot ] };
};



//################################################################################
//################################################################################
//################################################################################

// Teclado Nativo Brasileiro                     2005-07-19
// Brazilian Native Keyboard
//
// Driver para o X Window System, doado ao domínio público.
//
// Autor            Contato e Sugestões                  Saite
// ================================================================
// Ari Caldeira     ari [AT] tecladobrasileiro.com.br    tecladobrasileiro.com.br

//################################################################################
//################################################################################

// ####  ####        #   # ##### ##### # #   # #####
// #   # #   #       ##  # #   #   #   # #   # #   #
// ####  ####  ##### # # # #####   #   # #   # #   #
// #   # #  #        #  ## #   #   #   #  # #  #   #
// ####  #   #       #   # #   #   #   #   #   #####


//########
//######## Teclado Nativo Brasileiro padrão
//######## Standard Brazilian Native keyboard
//########

// Aqui vem a definição do teclado BR-Nativo padrão
// Here comes the default layout for standard BR-Nativo
partial alphanumeric_keys
xkb_symbols "nativo" {

    name[Group1]="Brasileiro Nativo";

// Linha numérica
// Numeric row
    key <TLDE> { [        equal,            plus,              section,        plusminus ] };
    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,       0x01002030 ] };
    key <AE06> { [            6,  dead_diaeresis,              notsign,        diaeresis ] };
    key <AE07> { [            7,       ampersand,        dead_belowdot,    dead_abovedot ] };
    key <AE08> { [            8,        asterisk,          dead_ogonek,        dead_horn ] };
    key <AE09> { [            9,       parenleft,         dead_cedilla,        dead_hook ] };
    key <AE10> { [            0,      parenright,          dead_macron,       dead_breve ] };
    key <AE11> { [  bracketleft,       braceleft,          ordfeminine,       0x01000326 ] };
    key <AE12> { [ bracketright,      braceright,            masculine,   dead_abovering ] };

// Linha superior
// Upper row
    key <AD01> { [        slash,        question,               degree,     questiondown ] };
    key <AD02> { [        comma,            less,           0x01000329,       0x01000313 ] };
    key <AD03> { [       period,         greater,           0x01002022,   periodcentered ] };
    key <AD04> { [            h,               H,            paragraph,        paragraph ] };
    key <AD05> { [            x,               X,             multiply,         division ] };
    key <AD06> { [            w,               W,               ubreve,           Ubreve ] };
    key <AD07> { [            l,               L,              lstroke,          Lstroke ] };
    key <AD08> { [            t,               T,            trademark,        trademark ] };
    key <AD09> { [            c,               C,            copyright,        copyright ] };
    key <AD10> { [            p,               P,                thorn,            THORN ] };
    key <AD11> { [   dead_tilde, dead_circumflex,           asciitilde,      asciicircum ] };
    key <AD12> { [        minus,      underscore,           0x01002015,       0x01000336 ] };

// Linha central
// Central row
    key <AC01> { [            i,               I,             idotless,        Iabovedot ] };
    key <AC02> { [            e,               E,             EuroSign,         EuroSign ] };
    key <AC03> { [            a,               A,                   ae,               AE ] };
    key <AC04> { [            o,               O,                   oe,               OE ] };
    key <AC05> { [            u,               U,               oslash,         Ooblique ] };
    key <AC06> { [            m,               M,                   mu,               mu ] };
    key <AC07> { [            d,               D,                  eth,              ETH ] };
    key <AC08> { [            s,               S,               ssharp,           ssharp ] };
    key <AC09> { [            r,               R,           registered,       registered ] };
    key <AC10> { [            n,               N,                  eng,              ENG ] };
    key <AC11> { [   dead_acute,      dead_grave,                acute,            grave ] };
    key <AC12> { [   apostrophe,        quotedbl,           dead_caron, dead_doubleacute ] };

// Linha inferior
// Lower row
    key <BKSL> { [    semicolon,           colon,           0x01000331,       0x0100032D ] };
    key <AB01> { [            y,               Y,                  yen,              yen ] };
    key <AB02> { [     ccedilla,        Ccedilla,            backslash,              bar ] };
    key <AB03> { [            j,               J,           0x01000292,       0x010001B7 ] };
    key <AB04> { [            b,               B,        guillemotleft,       0x01002039 ] };
    key <AB05> { [            k,               K,       guillemotright,       0x0100203A ] };
    key <AB06> { [            q,               Q,           0x01000259,       0x0100018F ] };
    key <AB07> { [            v,               V,   doublelowquotemark, singlelowquotemark ] };
    key <AB08> { [            g,               G,  leftdoublequotemark, leftsinglequotemark ] };
    key <AB09> { [            f,               F, rightdoublequotemark, rightsinglequotemark ] };
    key <AB10> { [            z,               Z,           0x0100201F,       0x0100201B ] };
    key <AB11> { [    backslash,             bar,             currency,        brokenbar ] };

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

// Configura o "." e a "," no teclado numérico
// Configures the "." and the "," for the numeric keypad
    key <KPPT> { [ KP_Decimal              ] };
    key <KPDL>  { [ KP_Delete,      comma ]     };

// Configura o uso de tecla AltGr
// Configures the use of the AltGr key
    include "level3(ralt_switch_multikey)"

};


//########
//######## Teclado Nativo Brasileiro invertido
//######## Shifted Brazilian Native keyboard
//########

// Primeiro, as definicoes dos blocos de teclas que mudam nesta versão
// First of all, the definitions of the key blocks that change in that version
partial hidden alphanumeric_keys
xkb_symbols "bloco-nativo-invertido" {

// Linha numérica invertida
// Numeric row for the shifted variant
    key <AE01> { [           exclam,            1,           exclamdown,      onesuperior ] };
    key <AE02> { [               at,            2,          twosuperior,          onehalf ] };
    key <AE03> { [       numbersign,            3,        threesuperior,    threequarters ] };
    key <AE04> { [           dollar,            4,             sterling,       onequarter ] };
    key <AE05> { [          percent,            5,           0x01002030,             cent ] };
    key <AE06> { [   dead_diaeresis,            6,            diaeresis,          notsign ] };
    key <AE07> { [        ampersand,            7,        dead_belowdot,    dead_abovedot ] };
    key <AE08> { [         asterisk,            8,          dead_ogonek,        dead_horn ] };
    key <AE09> { [        parenleft,            9,         dead_cedilla,        dead_hook ] };
    key <AE10> { [       parenright,            0,          dead_macron,       dead_breve ] };
    key <AE11> { [        braceleft,  bracketleft,          ordfeminine,       0x01000326 ] };
    key <AE12> { [       braceright, bracketright,            masculine,   dead_abovering ] };

// Linha superior invertida
// Upper row for the shifted variant
    key <AD01> { [         question,        slash,         questiondown,           degree ] };

// Linha central invertida
// Central row for the shifted variant
    key <AC12> { [         quotedbl,   apostrophe,           dead_caron, dead_doubleacute ] };

};

// Aqui, a definição da variante com as teclas invertidas ("shifted")
// Here comes the variant with the shifted keys
partial alphanumeric_keys
xkb_symbols "nativo-inv" {
    include "pc/br(nativo)"
    include "pc/br(bloco-nativo-invertido)"

    name[Group1]="Brasileiro Nativo Invertido";
};


//########
//######## Teclado Nativo Brasileiro invertido esperto
//######## Smart-shifted Brazilian Native keyboard
//########

// Primeiro, as definicoes dos blocos de teclas que mudam nesta versão
// First of all, the definitions of the key blocks that change in that version
partial hidden alphanumeric_keys
xkb_symbols "bloco-nativo-invertido-esperto" {

// Linha superior invertida "esperta"
// Upper row for the smart-shifted variant
    key <AE01> { type = "EIGHT_LEVEL_NUMLOCK",
	[               1,          exclam,       onesuperior,       exclamdown,
	           exclam,               1,        exclamdown,      onesuperior ] };
    key <AE02> { type = "EIGHT_LEVEL_NUMLOCK",
	[               2,              at,       twosuperior,          onehalf,
	               at,               2,       twosuperior,          onehalf ] };
    key <AE03> { type = "EIGHT_LEVEL_NUMLOCK",
	[               3,      numbersign,     threesuperior,    threequarters,
	       numbersign,               3,     threesuperior,    threequarters ] };
    key <AE04> { type = "EIGHT_LEVEL_NUMLOCK",
	[               4,          dollar,          sterling,       onequarter,
	           dollar,               4,          sterling,       onequarter ] };
    key <AE05> { type = "EIGHT_LEVEL_NUMLOCK",
	[               5,         percent,              cent,       0x01002030,
	          percent,               5,        0x01002030,             cent ] };
    key <AE06> { type = "EIGHT_LEVEL_NUMLOCK",
	[               6,  dead_diaeresis,           notsign,        diaeresis,
	   dead_diaeresis,               6,         diaeresis,          notsign ] };
    key <AE07> { type = "EIGHT_LEVEL_NUMLOCK",
	[            7,          ampersand,     dead_belowdot,    dead_abovedot,
	        ampersand,               7,     dead_belowdot,    dead_abovedot ] };
    key <AE08> { type = "EIGHT_LEVEL_NUMLOCK",
	[               8,        asterisk,       dead_ogonek,        dead_horn,
	         asterisk,               8,       dead_ogonek,        dead_horn ] };
    key <AE09> { type = "EIGHT_LEVEL_NUMLOCK",
	[               9,       parenleft,      dead_cedilla,        dead_hook,
	        parenleft,               9,      dead_cedilla,        dead_hook ] };
    key <AE10> { type = "EIGHT_LEVEL_NUMLOCK",
	[               0,      parenright,       dead_macron,       dead_breve,
	       parenright,               0,       dead_macron,       dead_breve ] };

};

// Agora, a versão "esperta" da versão invertida. Esta versão usa o estado da teclado numérico
// para ativar e desativar a inversão das teclas numéricas no teclado alfanumérico
// Now, the smart version of the shifted variant. This version uses the state of the numeric keypad
// to activate or deactivate the shifting of the number keys on the alphanumeric keypad
partial alphanumeric_keys
xkb_symbols "nativo-inv-esperto" {
    include "pc/br(nativo-inv)"
    include "pc/br(bloco-nativo-invertido-esperto)"

    name[Group1]="Brasileiro Nativo Invertido Esperto";
};


//########
//######## Teclado Nativo Brasileiro padrão - definição para teclados numéricos incorporados
//######## Standard Brazilian Native keyboard - embedded numeric keypad definition
//########

// Primeiro, as definicoes dos blocos de teclas que mudam nesta versão
// First of all, the definitions of the key blocks that change in that version

partial hidden alphanumeric_keys
xkb_symbols "bloco-nativo-notebook" {

// Linha inferior para o uso em notebooks - veja o arquivo types/notebook para mais detalhes
// Lower row for the notebook variants - see the file types/notebook for further details
    key <AB08> { type = "FIVE_LEVEL_SEMIALPHABETIC", [ g, G, leftdoublequotemark, leftsinglequotemark, period ] };

};

// Abaixo seguem as mesmas variantes, todas com a opção para o correto
// funcionamento da tecla G como vírgula em teclados numéricos embutidos
// Below are the same variants, all with the hack for the correct
// functioning of the key G as a comma on embedded numeric keypads

partial alphanumeric_keys
xkb_symbols "nativo-ntbk" {
    include "pc/br(nativo)"
    include "pc/br(bloco-nativo-notebook)"
};

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-inv" {
    include "pc/br(nativo-inv)"
    include "pc/br(bloco-nativo-notebook)"
};

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-inv-esperto" {
    include "pc/br(nativo-inv-esperto)"
    include "pc/br(bloco-nativo-notebook)"
};


//################################################################################
//################################################################################

// ####  ####        #   # ##### ##### # #   # #####       # #   # ##### #
// #   # #   #       ##  # #   #   #   # #   # #   #       # ##  #   #   #
// ####  ####  ##### # # # #####   #   # #   # #   # ##### # # # #   #   #
// #   # #  #        #  ## #   #   #   #  # #  #   #       # #  ##   #   #
// ####  #   #       #   # #   #   #   #   #   #####       # #   #   #   #####


//########
//######## Teclado Nativo Brasileiro adaptado ao teclado internacional (estadunidense)
//######## Brazilian Native keyboard for the international keyboard
//########

// Primeiro, as definicoes dos blocos de teclas que mudam nesta versão
// First of all, the definitions of the key blocks that change in that version

partial hidden alphanumeric_keys
xkb_symbols "bloco-nativo-intl" {

// Linha superior internacional
// Upper row for the international variant
    key <AD11> { [   dead_tilde, dead_circumflex,           dead_caron, dead_doubleacute ] };

// Linha central internacional
// Central row for the international variant
    key <AC11> { [   dead_acute,      dead_grave,           apostrophe,         quotedbl ] };
    key <AC12> { [    backslash,             bar,             currency,        brokenbar ] };

// Linha inferior internacional
// Lower row for the international variant
    key <AB01> { [            y,               Y,              ccedilla,        Ccedilla ] };
    key <AB02> { [    semicolon,           colon,            0x01000331,      0x0100032D ] };

};


// Aqui vem a definição do teclado BR-Nativo para o teclado internacional
// Here comes the default BR-Nativo layout for the international keyboard
partial alphanumeric_keys
xkb_symbols "nativo-intl" {
    include "pc/br(nativo)"
    include "pc/br(bloco-nativo-intl)"

    name[Group1]="Brasileiro Nativo Internacional";
};


//########
//######## Teclado Nativo Brasileiro invertido adaptado ao teclado internacional (estadunidense)
//######## Shifted Brazilian Native keyboard for the international keyboard
//########

// Aqui, a definição da variante com as teclas invertidas ("shifted")
// Here comes the variant with the shifted keys
partial alphanumeric_keys
xkb_symbols "nativo-intl-inv" {
    include "pc/br(nativo-intl)"
    include "pc/br(bloco-nativo-invertido)"

    name[Group1]="Brasileiro Nativo Internacional Invertido";
};


//########
//######## Teclado Nativo Brasileiro invertido esperto adaptado ao teclado internacional (estadunidense)
//######## Smart-shifted Brazilian Native keyboard for the international keyboard
//########

// Variante invertida esperta
// Smart shifted variant
partial alphanumeric_keys
xkb_symbols "nativo-intl-inv-esperto" {
    include "pc/br(nativo-intl-inv)"
    include "pc/br(bloco-nativo-invertido-esperto)"

    name[Group1]="Brasileiro Nativo Internacional Invertido Esperto";
};


//########
//######## Teclado Nativo Brasileiro adaptado ao teclado internacional (estadunidense) - definição para teclados numéricos incorporados
//######## Standard Brazilian Native keyboard for the international keyboard - embedded numeric keypad definition
//########

// Abaixo seguem as mesmas variantes, todas com a opção para o correto
// funcionamento da tecla G como vírgula em teclados numéricos embutidos
// Below are the same variante, all with the hack for the correct
// functioning of the key G as a comma on embedded numeric keypads

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-intl" {
    include "pc/br(nativo-intl)"
    include "pc/br(bloco-nativo-notebook)"
};

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-intl-inv" {
    include "pc/br(nativo-intl-inv)"
    include "pc/br(bloco-nativo-notebook)"
};

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-intl-inv-esperto" {
    include "pc/br(nativo-intl-inv-esperto)"
    include "pc/br(bloco-nativo-notebook)"
};



//################################################################################
//################################################################################

// ####  ####        #   # ##### ##### # #   # #####       ##### ##### ####  #####
// #   # #   #       ##  # #   #   #   # #   # #   #       #     #     #   # #   #
// ####  ####  ##### # # # #####   #   # #   # #   # ##### ####  ##### ####  #   #
// #   # #  #        #  ## #   #   #   #  # #  #   #       #         # #     #   #
// ####  #   #       #   # #   #   #   #   #   #####       ##### ##### #     #####


//########
//######## Teclado Nativo Brasileiro padrão para digitação direta em Esperanto
//######## Standard Brazilian Native keyboard for direct typing Esperanto
//########

// Aqui vem a definição do teclado BR-Nativo padrão para Esperanto
// Here comes the default layout for standard BR-Nativo for Esperanto
partial alphanumeric_keys
xkb_symbols "nativo-espo" {
    include "pc/br(nativo)"

    name[Group1]="Brasileiro Nativo Esperanto";

// Linha superior Esperanto
// Upper row Esperanto
    key <AD04> { [            h,               H,          hcircumflex,      Hcircumflex ] };
    key <AD05> { [  ccircumflex,     Ccircumflex,                    x,                X ] };
    key <AD06> { [       ubreve,          Ubreve,                    w,                W ] };

// Linha inferior Esperanto
// Lower row Esperanto
    key <AB01> { [  jcircumflex,     Jcircumflex,                    y,                Y ] };
    key <AB02> { [  scircumflex,     Scircumflex,             ccedilla,         Ccedilla ] };
    key <AB06> { [  gcircumflex,     Gcircumflex,                    q,                Q ] };

};


//########
//######## Teclado Nativo Brasileiro invertido para digitação direta em Esperanto
//######## Shifted Brazilian Native keyboard for direct typing Esperanto 
//########

// Aqui, a definição da variante com as teclas invertidas ("shifted")
// Here comes the variant with the shifted keys
partial alphanumeric_keys
xkb_symbols "nativo-espo-inv" {
    include "pc/br(nativo-espo)"
    include "pc/br(bloco-nativo-invertido)"

    name[Group1]="Brasileiro Nativo Esperanto Invertido";
};


//########
//######## Teclado Nativo Brasileiro invertido esperto para digitação direta em Esperanto
//######## Smart-shifted Brazilian Native keyboard for direct typing Esperanto
//########

// Variante invertida esperta
// Smart shifted variant
partial alphanumeric_keys
xkb_symbols "nativo-espo-inv-esperto" {
    include "pc/br(nativo-espo-inv)"
    include "pc/br(bloco-nativo-invertido-esperto)"

    name[Group1]="Brasileiro Nativo Esperanto Invertido Esperto";
};


//########
//######## Teclado Nativo Brasileiro para digitação direta em Esperanto - definição para teclados numéricos incorporados
//######## Standard Brazilian Native keyboard for direct typing Esperanto - embedded numeric keypad definition
//########

// Abaixo seguem as mesmas variantes, todas com a opção para o correto
// funcionamento da tecla G como vírgula em teclados numéricos embutidos
// Below are the same variante, all with the hack for the correct
// functioning of the key G as a comma on embedded numeric keypads

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-espo" {
    include "pc/br(nativo-espo)"
    include "pc/br(bloco-nativo-notebook)"
};

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-espo-inv" {
    include "pc/br(nativo-espo-inv)"
    include "pc/br(bloco-nativo-notebook)"
};

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-espo-inv-esperto" {
    include "pc/br(nativo-espo-inv-esperto)"
    include "pc/br(bloco-nativo-notebook)"
};



//################################################################################
//################################################################################

// ####  ####        #   # ##### ##### # #   # #####       ##### ##### ####  #####
// #   # #   #       ##  # #   #   #   # #   # #   #       #   # #     #   # #
// ####  ####  ##### # # # #####   #   # #   # #   # ##### ##### ####  ####  #
// #   # #  #        #  ## #   #   #   #  # #  #   #       #   # #     #  #  #
// ####  #   #       #   # #   #   #   #   #   #####       #   # #     #   # #####


//########
//######## Teclado Nativo Brasileiro padrão para digitação de línguas africanas
//######## Standard Brazilian Native keyboard for typing african languages
//########

// Aqui vem a definição do teclado BR-Nativo padrão para línguas africanas
// Here comes the default layout for standard BR-Nativo for african languages
partial alphanumeric_keys
xkb_symbols "nativo-afrc" {
    include "pc/br(nativo)"

    name[Group1]="Brasileiro Nativo Africa";

// Linha superior África
// Upper row Africa
    key <AD04> { [            h,               H,           0x01000266,        paragraph ] };
    key <AD05> { [            x,               X,           0x01000294,       0x01000295 ] };
    key <AD06> { [            w,               W,                   oe,               OE ] };
    key <AD07> { [            l,               L,           0x0100028C,       0x01000245 ] };
    key <AD08> { [            t,               T,           0x01000256,       0x01000189 ] };
    key <AD09> { [            c,               C,           0x01000263,       0x01000194 ] };
    key <AD10> { [            p,               P,           0x01000272,       0x0100019D ] };

// Linha central África
// Central row Africa
    key <AC01> { [            i,               I,           0x01000269,       0x01000196 ] };
    key <AC02> { [            e,               E,           0x0100025B,       0x01000190 ] };
    key <AC03> { [            a,               A,           0x01000259,       0x0100018F ] };
    key <AC04> { [            o,               O,           0x01000254,       0x01000186 ] };
    key <AC05> { [            u,               U,           0x0100028A,       0x010001B1 ] };
//    key <AC06> { [            m,               M,                0x01000275,            0x0100019F ] };
    key <AC07> { [            d,               D,           0x01000257,       0x0100018A ] };
    key <AC08> { [            s,               S,           0x01000283,       0x010001A9 ] };
    key <AC09> { [            r,               R,           0x0100027E,       0x0100027E ] };
    key <AC10> { [            n,               N,                  eng,              ENG ] };

// Linha inferior África
// Lower row Africa
    key <AB01> { [            y,               Y,           0x010001B4,       0x010001B3 ] };
    key <AB04> { [            b,               B,           0x01000253,       0x01000181 ] };
    key <AB05> { [            k,               K,           0x01000199,       0x01000198 ] };
    key <AB06> { [            q,               Q,           0x01000251,       0x01000251 ] };
    key <AB07> { [            v,               V,           0x0100028B,       0x010001B2 ] };
    key <AB08> { [            g,               G,           0x01000260,       0x01000193 ] };
    key <AB09> { [            f,               F,           0x01000192,       0x01000191 ] };
    key <AB10> { [            z,               Z,        guillemotleft,   guillemotright ] };

};


//########
//######## Teclado Nativo Brasileiro invertido para digitação de línguas africanas
//######## Shifted Brazilian Native keyboard for typing african languages
//########

// Aqui, a definição da variante com as teclas invertidas ("shifted")
// Here comes the variant with the shifted keys
partial alphanumeric_keys
xkb_symbols "nativo-afrc-inv" {
    include "pc/br(nativo-afrc)"
    include "pc/br(bloco-nativo-invertido)"

    name[Group1]="Brasileiro Nativo Africa Invertido";
};


//########
//######## Teclado Nativo Brasileiro invertido esperto para digitação de línguas africanas
//######## Smart-shifted Brazilian Native keyboard for typing african languages
//########

// Variante invertida esperta
// Smart shifted variant
partial alphanumeric_keys
xkb_symbols "nativo-afrc-inv-esperto" {
    include "pc/br(nativo-afrc-inv)"
    include "pc/br(bloco-nativo-invertido-esperto)"

    name[Group1]="Brasileiro Nativo Africa Invertido Esperto";
};


//########
//######## Teclado Nativo Brasileiro para digitação de línguas africanas - definição para teclados numéricos incorporados
//######## Standard Brazilian Native keyboard for typing african languages - embedded numeric keypad definition
//########

// Abaixo seguem as mesmas variantes, todas com a opção para o correto
// funcionamento da tecla G como vírgula em teclados numéricos embutidos
// Below are the same variante, all with the hack for the correct
// functioning of the key G as a comma on embedded numeric keypads

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-afrc" {
    include "pc/br(nativo-afrc)"
    include "pc/br(bloco-nativo-notebook)"
};

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-afrc-inv" {
    include "pc/br(nativo-afrc-inv)"
    include "pc/br(bloco-nativo-notebook)"
};

partial alphanumeric_keys
xkb_symbols "nativo-ntbk-afrc-inv-esperto" {
    include "pc/br(nativo-afrc-inv-esperto)"
    include "pc/br(bloco-nativo-notebook)"
};





//################################################################################
//################################################################################
//################################################################################

// Brazilian Dvorak keyboard                     2005-04-18
// "Teclado Simplificado Brasileiro" ou "Dvorak Brasileiro"
//
// Driver para o X Window System, doado ao domínio público.
//
// Autores          Contato e Sugestões           Website
// ================================================================
// Heitor Moraes    heitor.moraes [AT] gmail.com
// Luiz Portella    lfpor [AT] lujz.org           www.lujz.org/lfpor/dvorak.html
// Nando Florestan  nando2003 [AT] mandic.com.br  oui.com.br/n/
// Ari Caldeira     ari [AT] tecladobrasileiro.com.br tecladobrasileiro.com.br

//################################################################################
//################################################################################

// ####  ####        ####  #   # ##### ####  ##### #   #
// #   # #   #       #   # #   # #   # #   # #   # #  #
// ####  ####  ##### #   # #   # #   # ####  ##### ###
// #   # #  #        #   #  # #  #   # #  #  #   # #  #
// ####  #   #       ####    #   ##### #   # #   # #   #

//########
//######## Teclado Dvorak Brasileiro padrão
//######## Standard Brazilian Dvorak keyboard
//########


// Aqui segue a definição do teclado Dvorak adaptado para o teclado ABNT2
// Here comes the definition of the Dvorak layout adapted on the ABNT2 keyboard
partial alphanumeric_keys
xkb_symbols "dvorak" {

    name[Group1]="Dvorak Brasileiro";

// Linha numérica Dvorak
// Numeric row for the Dvorak variant
    key <TLDE> { [   apostrophe,        quotedbl,           dead_caron, dead_doubleacute ] };
    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,       0x01002030 ] };
    key <AE06> { [            6,  dead_diaeresis,              notsign,        diaeresis ] };
    key <AE07> { [            7,       ampersand,        dead_belowdot,    dead_abovedot ] };
    key <AE08> { [            8,        asterisk,          dead_ogonek,        dead_horn ] };
    key <AE09> { [            9,       parenleft,         dead_cedilla,        dead_hook ] };
    key <AE10> { [            0,      parenright,          dead_macron,       dead_breve ] };
    key <AE11> { [  bracketleft,       braceleft,          ordfeminine,       0x01000326 ] };
    key <AE12> { [ bracketright,      braceright,            masculine,   dead_abovering ] };


// Linha superior Dvorak
// Upper row for the Dvorak variant
    key <AD01> { [        slash,        question,               degree,     questiondown ] };
    key <AD02> { [        comma,            less,           0x01000329,       0x01000313 ] };
    key <AD03> { [       period,         greater,           0x01002022,   periodcentered ] };
    key <AD04> { [            p,               P,                thorn,            THORN ] };
    key <AD05> { [            y,               Y,                  yen,              yen ] };
    key <AD06> { [            f,               F,  leftdoublequotemark, leftsinglequotemark ] };
    key <AD07> { [            g,               G, rightdoublequotemark, rightsinglequotemark ] };
    key <AD08> { [            c,               C,            copyright,        copyright ] };
    key <AD09> { [            r,               R,           registered,       registered ] };
    key <AD10> { [            l,               L,              lstroke,          Lstroke ] };
    key <AD11> { [   dead_acute,      dead_grave,                acute,            grave ] };
    key <AD12> { [        equal,            plus,              section,        plusminus ] };

// Linha central Dvorak
// Central row for the dvorak variant
    key <AC01> { [            a,               A,                   ae,               AE ] };
    key <AC02> { [            o,               O,                   oe,               OE ] };
    key <AC03> { [            e,               E,             EuroSign,         EuroSign ] };
    key <AC04> { [            u,               U,               oslash,         Ooblique ] };
    key <AC05> { [            i,               I,             idotless,        Iabovedot ] };
    key <AC06> { [            d,               D,                  eth,              ETH ] };
    key <AC07> { [            h,               H,            paragraph,        paragraph ] };
    key <AC08> { [            t,               T,            trademark,        trademark ] };
    key <AC09> { [            n,               N,                  eng,              ENG ] };
    key <AC10> { [            s,               S,               ssharp,           ssharp ] };
    key <AC11> { [   dead_tilde, dead_circumflex,           asciitilde,      asciicircum ] };
    key <AC12> { [        minus,      underscore,           0x01002015,       0x01000336 ] };

// Linha inferior Dvorak
// Lower row for the Dvorak variant
    key <BKSL> { [     ccedilla,        Ccedilla,            backslash,              bar ] };
    key <AB01> { [    semicolon,           colon,           0x01000331,       0x0100032D ] };
    key <AB02> { [            q,               Q,           0x01000259,       0x0100018F ] };
    key <AB03> { [            j,               J,           0x01000292,       0x010001B7 ] };
    key <AB04> { [            k,               K,        guillemotleft,       0x01002039 ] };
    key <AB05> { [            x,               X,             multiply,         division ] };
    key <AB06> { [            b,               B,       guillemotright,       0x0100203A ] };
    key <AB07> { [            m,               M,                   mu,               mu ] };
    key <AB08> { [            w,               W,               ubreve,           Ubreve ] };
    key <AB09> { [            v,               V,   doublelowquotemark, singlelowquotemark ] };
    key <AB10> { [            z,               Z,           0x0100201F,       0x0100201B ] };
    key <AB11> { [    backslash,             bar,             currency,        brokenbar ] };

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

// Configura o "." e a "," no teclado numérico
// Configures the "." and the "," for the numeric keypad
    key <KPPT> { [ KP_Decimal              ] };
    key <KPDL>  { [ KP_Delete,      comma ]     };

// Configura o uso de tecla AltGr
// Configures the use of the AltGr key
    include "level3(ralt_switch_multikey)"

};


//########
//######## Teclado Dvorak Brasileiro invertido
//######## Shifted Brazilian Dvorak keyboard
//########

// Aqui, a definição da variante com as teclas invertidas ("shifted")
// Here comes the variant with the shifted keys
partial alphanumeric_keys
xkb_symbols "dvorak-inv" {
    include "pc/br(dvorak)"

    name[Group1]="Dvorak Brasileiro Invertido";

// Linha numérica Dvorak invertido
// Numeric row for the shifted Dvorak variant
    key <TLDE> { [         quotedbl,   apostrophe,           dead_caron, dead_doubleacute ] };
    key <AE01> { [           exclam,            1,           exclamdown,      onesuperior ] };
    key <AE02> { [               at,            2,          twosuperior,          onehalf ] };
    key <AE03> { [       numbersign,            3,        threesuperior,    threequarters ] };
    key <AE04> { [           dollar,            4,             sterling,       onequarter ] };
    key <AE05> { [          percent,            5,           0x01002030,             cent ] };
    key <AE06> { [   dead_diaeresis,            6,            diaeresis,          notsign ] };
    key <AE07> { [        ampersand,            7,        dead_belowdot,    dead_abovedot ] };
    key <AE08> { [         asterisk,            8,          dead_ogonek,        dead_horn ] };
    key <AE09> { [        parenleft,            9,         dead_cedilla,        dead_hook ] };
    key <AE10> { [       parenright,            0,          dead_macron,       dead_breve ] };
    key <AE11> { [        braceleft,  bracketleft,          ordfeminine,       0x01000326 ] };
    key <AE12> { [       braceright, bracketright,            masculine,   dead_abovering ] };

// Linha superior Dvorak invertida
// Upper row for the shifted Dvorak variant
    key <AD01> { [         question,        slash,         questiondown,           degree ] };

};

// Agora, a versão "esperta" da versão invertida. Esta versão usa o estado da teclado numérico
// para ativar e desativar a inversão das teclas numéricas no teclado alfanumérico
// Now, the smart version of the shifted variant. This version uses the state of the numeric keypad
// to activate or deactivate the shifting of the number keys on the alphanumeric keypad
partial alphanumeric_keys
xkb_symbols "dvorak-inv-esperto" {
    include "pc/br(dvorak-inv)"

    name[Group1]="Dvorak Brasileiro Invertido Esperto";

// Linha superior invertida "esperta"
// Upper row for the smart-shifted variant
    key <AE01> { type = "EIGHT_LEVEL_NUMLOCK",
	[               1,          exclam,       onesuperior,       exclamdown,
	           exclam,               1,        exclamdown,      onesuperior ] };
    key <AE02> { type = "EIGHT_LEVEL_NUMLOCK",
	[               2,              at,       twosuperior,          onehalf,
	               at,               2,       twosuperior,          onehalf ] };
    key <AE03> { type = "EIGHT_LEVEL_NUMLOCK",
	[               3,      numbersign,     threesuperior,    threequarters,
	       numbersign,               3,     threesuperior,    threequarters ] };
    key <AE04> { type = "EIGHT_LEVEL_NUMLOCK",
	[               4,          dollar,          sterling,       onequarter,
	           dollar,               4,          sterling,       onequarter ] };
    key <AE05> { type = "EIGHT_LEVEL_NUMLOCK",
	[               5,         percent,              cent,       0x01002030,
	          percent,               5,        0x01002030,             cent ] };
    key <AE06> { type = "EIGHT_LEVEL_NUMLOCK",
	[               6,  dead_diaeresis,           notsign,        diaeresis,
	   dead_diaeresis,               6,         diaeresis,          notsign ] };
    key <AE07> { type = "EIGHT_LEVEL_NUMLOCK",
	[            7,          ampersand,     dead_belowdot,    dead_abovedot,
	        ampersand,               7,     dead_belowdot,    dead_abovedot ] };
    key <AE08> { type = "EIGHT_LEVEL_NUMLOCK",
	[               8,        asterisk,       dead_ogonek,        dead_horn,
	         asterisk,               8,       dead_ogonek,        dead_horn ] };
    key <AE09> { type = "EIGHT_LEVEL_NUMLOCK",
	[               9,       parenleft,      dead_cedilla,        dead_hook,
	        parenleft,               9,      dead_cedilla,        dead_hook ] };
    key <AE10> { type = "EIGHT_LEVEL_NUMLOCK",
	[               0,      parenright,       dead_macron,       dead_breve,
	       parenright,               0,       dead_macron,       dead_breve ] };

};


//########
//######## Teclado Dvorak Brasileiro padrão - definição para teclados numéricos incorporados
//######## Standard Brazilian Dvorak keyboard - embedded numeric keypad definition
//########


// Primeiro, as definicoes dos blocos de teclas, agrupados por linhas
// First of all, the definitions of the key blocks, grouped by rows

partial hidden alphanumeric_keys
xkb_symbols "bloco-dvorak-notebook" {

// Linha inferior para o uso em notebooks - veja o arquivo types/notebook para mais detalhes
// Lower row for the notebook variants - see the file types/notebook for further details
    key <AB08> { type = "FIVE_LEVEL_SEMIALPHABETIC", [ w, W, ubreve, Ubreve, period ] };

};

// Abaixo seguem as mesmas variantes, todas com a opção para o correto
// funcionamento da tecla W como vírgula em teclados numéricos embutidos
// Below are the same variante, all with the hack for the correct
// functioning of the key W as a comma on embedded numeric keypads

partial alphanumeric_keys
xkb_symbols "dvorak-ntbk" {
    include "pc/br(dvorak)"
    include "pc/br(bloco-dvorak-notebook)"
};

partial alphanumeric_keys
xkb_symbols "dvorak-ntbk-inv" {
    include "pc/br(dvorak-inv)"
    include "pc/br(bloco-dvorak-notebook)"
};

partial alphanumeric_keys
xkb_symbols "dvorak-ntbk-inv-esperto" {
    include "pc/br(dvorak-inv-esperto)"
    include "pc/br(bloco-dvorak-notebook)"
};
