// Keyboard layouts for Romania.

// The first two layouts conform to the Romanian standard SR 13392:2004,
// adopted in 2004 by ASRO, "Asociația de Standardizare din România".
//
// The default layout is the Programmers layout because keyboards that are
// engraved according to the primary layout from the standard are lacking.
// The "std" variant, further down, implements the primary layout.
//
// Diacritics with cedillas, as in ISO-8859-2, are no longer supported. This
// error has been corrected in ISO-889-16 through using commabelow accents.
// Pre-Vista MS-compatible layout ("winkeys" variant) generates commabelow
// accents too now.
//
// Created by Cristian Gafton, <gafton@redhat.com> (C) 2000
// Modified by Marius Andreiana, <mandreiana@yahoo.com> (C) 2001
// Completed by Dumitru Moldovan, <dumol@gnome.org> (C) 2001, 2004-2008, 2020


default partial alphanumeric_keys
xkb_symbols "basic" {

    // This Programmers/RO_US layout has always been the "de facto" standard
    // in the Linux/Unix world, and is therefore the default here, although
    // it is the secondary layout in the Romanian standard.  It is fully
    // compatible with a US keyboard (ignoring the Euro on AltGr+5).

    include "us"

    name[Group1]="Romanian";

    key <AE01>	{[            1,      exclam,       dead_tilde              ]};
    key <AE02>	{[            2,          at,       dead_caron              ]};
    key <AE03>	{[            3,  numbersign,  dead_circumflex              ]};
    key <AE04>	{[            4,      dollar,       dead_breve              ]};
    key <AE05>	{[            5,     percent,   dead_abovering              ]};
    key <AE06>	{[            6, asciicircum,      dead_ogonek              ]};
    key <AE07>	{[            7,   ampersand,       dead_grave              ]};
    key <AE08>	{[            8,    asterisk,    dead_abovedot              ]};
    key <AE09>	{[            9,   parenleft,       dead_acute              ]};
    key <AE10>	{[            0,  parenright, dead_doubleacute              ]};
    key <AE11>	{[        minus,  underscore,   dead_diaeresis,      endash ]};
    key <AE12>	{[        equal,        plus,     dead_cedilla,   plusminus ]};

    key <AD01>	{[            q,           Q,      acircumflex, Acircumflex ]};
    key <AD02>	{[            w,           W,           ssharp,       U1e9e ]};
    key <AD03>	{[            e,           E,         EuroSign              ]};
    key <AD05>	{[            t,           T,            U021b,       U021a ]}; // ț Ț
    key <AD08>	{[            i,           I,      icircumflex, Icircumflex ]};
    key <AD10>	{[            p,           P,          section              ]};
    key <AD11>	{[  bracketleft,   braceleft, doublelowquotemark            ]};
    key <AD12>	{[ bracketright,  braceright, rightdoublequotemark          ]};

    key <AC01>	{[            a,           A,           abreve,      Abreve ]};
    key <AC02>	{[            s,           S,            U0219,       U0218 ]}; // ș Ș
    key <AC03>	{[            d,           D,          dstroke,     Dstroke ]};
    key <AC09>	{[            l,           L,          lstroke,     Lstroke ]};

    key <LSGT>	{[    backslash,         bar                                ]};
    key <AB03>	{[            c,           C,        copyright              ]};
    key <AB08>	{[        comma,        less,    guillemotleft              ]};
    key <AB09>	{[       period,     greater,   guillemotright              ]};

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

    include "level3(ralt_switch)"
};


partial alphanumeric_keys
xkb_symbols "std" {

    // Primary layout in the Romanian standard, implemented here as a variant
    // because Romanian users prefer the secondary layout of the standard.

    include "us"

    name[Group1]="Romanian (standard)";

    key <TLDE>	{[doublelowquotemark,rightdoublequotemark, grave, asciitilde]};
    key <AE01>	{[            1,      exclam,       dead_tilde              ]};
    key <AE02>	{[            2,          at,       dead_caron              ]};
    key <AE03>	{[            3,  numbersign,  dead_circumflex              ]};
    key <AE04>	{[            4,      dollar,       dead_breve              ]};
    key <AE05>	{[            5,     percent,   dead_abovering              ]};
    key <AE06>	{[            6, asciicircum,      dead_ogonek              ]};
    key <AE07>	{[            7,   ampersand,       dead_grave              ]};
    key <AE08>	{[            8,    asterisk,    dead_abovedot              ]};
    key <AE09>	{[            9,   parenleft,       dead_acute              ]};
    key <AE10>	{[            0,  parenright, dead_doubleacute              ]};
    key <AE11>	{[        minus,  underscore,   dead_diaeresis,      endash ]};
    key <AE12>	{[        equal,        plus,     dead_cedilla,   plusminus ]};

    key <AD03>	{[            e,           E,         EuroSign              ]};
    key <AD10>	{[            p,           P,          section              ]};
    key <AD11>	{[       abreve,      Abreve,      bracketleft,   braceleft ]};
    key <AD12>	{[  icircumflex, Icircumflex,     bracketright,  braceright ]};
    key <BKSL>	{[  acircumflex, Acircumflex,        backslash,         bar ]};

    key <AC02>	{[            s,           S,           ssharp,       U1e9e ]};
    key <AC03>	{[            d,           D,          dstroke,     Dstroke ]};
    key <AC09>	{[            l,           L,          lstroke,     Lstroke ]};
    key <AC10>	{[        U0219,       U0218,        semicolon,       colon ]}; // ș Ș
    key <AC11>	{[        U021b,       U021a,       apostrophe,    quotedbl ]}; // ț Ț

    key <LSGT>	{[    backslash,         bar                                ]};
    key <AB03>	{[            c,           C,        copyright              ]};
    key <AB08>	{[        comma,   semicolon,           less, guillemotleft ]};
    key <AB09>	{[       period,       colon,       greater, guillemotright ]};

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

    include "level3(ralt_switch)"
};


partial alphanumeric_keys
xkb_symbols "winkeys" {

    // Romanian (legacy) QWERTZ keyboard layout, as available on Windows 10,
    // but with the correct commabelow accents and the Euro sign on AltGr+e.
    // Some Romanian hardware keyboards are still built like this.
    // Older Romanian hardware keyboards might be slightly different.
    // Created by Manfred Pohler, <Manfred.Pohler@t-online.de> (C) 2003
    // Updated by Dumitru Moldovan, <dumol@gnome.org> (C) 2020

    include "us"

    name[Group1]="Romanian (Windows)";

    key <TLDE>	{[ bracketright, bracketleft                                ]};
    key <AE01>	{[            1,      exclam,       asciitilde              ]};
    key <AE02>	{[            2,    quotedbl,       dead_caron              ]};
    key <AE03>	{[            3,  numbersign,  dead_circumflex              ]};
    key <AE04>	{[            4,    currency,       dead_breve              ]};
    key <AE05>	{[            5,     percent,   dead_abovering              ]};
    key <AE06>	{[            6,   ampersand,      dead_ogonek              ]};
    key <AE07>	{[            7,       slash,       dead_grave              ]};
    key <AE08>	{[            8,   parenleft,    dead_abovedot              ]};
    key <AE09>	{[            9,  parenright,       dead_acute              ]};
    key <AE10>	{[            0,       equal, dead_doubleacute              ]};
    key <AE11>	{[         plus,    question,   dead_diaeresis              ]};
    key <AE12>	{[   apostrophe,    asterisk,     dead_cedilla              ]};

    key <AD01>	{[            q,           Q,        backslash              ]};
    key <AD02>	{[            w,           W,              bar              ]};
    key <AD03>	{[            e,           E,         EuroSign              ]};
    key <AD06>	{[            z,           Z                                ]};
    key <AD11>	{[       abreve,      Abreve,         division              ]};
    key <AD12>	{[  icircumflex, Icircumflex,         multiply              ]};

    key <AC02>	{[            s,           S,          dstroke              ]};
    key <AC03>	{[            d,           D,          Dstroke              ]};
    key <AC08>	{[            k,           K,          lstroke              ]};
    key <AC09>	{[            l,           L,          Lstroke              ]};
    key <AC10>	{[        U0219,       U0218,           dollar              ]}; // ș Ș
    key <AC11>	{[        U021b,       U021a,           ssharp              ]}; // ț Ț
    key <BKSL>	{[  acircumflex, Acircumflex                                ]};

    key <LSGT>	{[         less,     greater                                ]};
    key <AB01>	{[            y,           Y                                ]};
    key <AB04>	{[            v,           V,               at              ]};
    key <AB05>	{[            b,           B,        braceleft              ]};
    key <AB06>	{[            n,           N,       braceright              ]};
    key <AB07>	{[            m,           M,          section              ]};
    key <AB08>	{[        comma,   semicolon,             less              ]};
    key <AB09>	{[       period,       colon,          greater              ]};
    key <AB10>	{[        minus,  underscore                                ]};

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

    include "level3(ralt_switch)"
};


// EXTRAS:


partial
xkb_symbols "crh_dobruja" {
    // Romania-specific Crimean Tatar (Crimean Turkish) Q layout, not yet standard.
    // Reşat SABIQ <tilde.birlik @ gmail . com>, 2009, 2011
    // Özgür Qarahan <qarahan @ gmail . com>, 2009

    include "ua(crh)"

    name[Group1]="Crimean Tatar (Dobruja Q)";

    key <AD02>	{[            w,           W,           abreve,      Abreve ]};
    key <AD05>	{[            t,           T,            U021b,       U021a ]}; // ț Ț
    key <AD10>	{[            p,           P,          section              ]};
    key <AC02>	{[            s,           S,            U0219,       U0218 ]}; // ș Ș
    key <AC07>	{[       ibreve,      Ibreve,                j,           J ]};
    key <AB07>	{[            m,           M,        trademark,   masculine ]};
};


partial alphanumeric_keys
xkb_symbols "ergonomic" {
    // This layout is optimized for fast touch-typing in Romanian on a
    // US keyboard, and works by swapping out symbols infrequently used
    // in written Romanian (q, w, y, k) in favor of native ones, thus
    // reducing the need to use modifier keys.
    // Created by Gabriel Somlo, <somlo@cmu.edu> (C) 2011

    include "ro(basic)"

    name[Group1]="Romanian (ergonomic Touchtype)";

    key <AD01>	{[       abreve,      Abreve,                q,           Q ]};
    key <AD02>	{[        U0219,       U0218,                w,           W ]};
    key <AD06>	{[        U021b,       U021a,                y,           Y ]};
    key <AC01>	{[            a,           A,      acircumflex, Acircumflex ]};
    key <AC08>	{[  icircumflex, Icircumflex,                k,           K ]};
};


partial alphanumeric_keys
xkb_symbols "sun_type6" {
    include "sun_vndr/ro(sun_type6)"
};

// Compatibility mapping
partial xkb_symbols "academic" {
    include "ro(std)"
};

// Compatibility mapping
partial xkb_symbols "comma" {
    include "ro(basic)"
};

// Compatibility mapping
partial xkb_symbols "de" {
    include "ro(winkeys)"
};

// Compatibility mapping
partial xkb_symbols "std_comma" {
    include "ro(std)"
};

// Compatibility mapping
partial xkb_symbols "us" {
    include "ro(std)"
};
