// Common Latin alphabet layout

default  partial
xkb_symbols "basic" {

    key <AE01>	{ [         1,     exclam,  onesuperior,   exclamdown ]	};
    key <AE02>	{ [         2,         at,  twosuperior,    oneeighth ]	};
    key <AE03>	{ [         3, numbersign, threesuperior,    sterling ]	};
    key <AE04>	{ [         4,     dollar,   onequarter,       dollar ]	};
    key <AE05>	{ [         5,    percent,      onehalf, threeeighths ]	};
    key <AE06>	{ [         6, asciicircum, threequarters, fiveeighths ] };
    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,    backslash, questiondown ]	};
    key <AE12>	{ [     equal,       plus, dead_cedilla,  dead_ogonek ]	};

    key <AD01>	{ [         q,          Q,           at,  Greek_OMEGA ]	};
    key <AD02>	{ [         w,          W,      lstroke,      Lstroke ]	};
    key <AD03>	{ [         e,          E,            e,            E ]	};
    key <AD04>	{ [         r,          R,    paragraph,   registered ]	};
    key <AD05>	{ [         t,          T,       tslash,       Tslash ]	};
    key <AD06>	{ [         y,          Y,    leftarrow,          yen ]	};
    key <AD07>	{ [         u,          U,    downarrow,      uparrow ]	};
    key <AD08>	{ [         i,          I,   rightarrow,     idotless ]	};
    key <AD09>	{ [         o,          O,       oslash,     Ooblique ]	};
    key <AD10>	{ [         p,          P,        thorn,        THORN ]	};
    key <AD11>	{ [bracketleft,  braceleft, dead_diaeresis, dead_abovering ] };
    key <AD12>	{ [bracketright, braceright, dead_tilde,  dead_macron ]	};

    key <AC01>	{ [         a,          A,           ae,           AE ]	};
    key <AC02>	{ [         s,          S,       ssharp,      section ]	};
    key <AC03>	{ [         d,          D,          eth,          ETH ]	};
    key <AC04>	{ [         f,          F,      dstroke,  ordfeminine ]	};
    key <AC05>	{ [         g,          G,          eng,          ENG ]	};
    key <AC06>	{ [         h,          H,      hstroke,      Hstroke ]	};
    key <AC07>	{ [         j,          J,    dead_hook,    dead_horn ] };
    key <AC08>	{ [         k,          K,          kra,    ampersand ]	};
    key <AC09>	{ [         l,          L,      lstroke,      Lstroke ]	};
    key <AC10>	{ [ semicolon,    colon, dead_acute, dead_doubleacute ]	};
    key <AC11>	{ [apostrophe, quotedbl, dead_circumflex,  dead_caron ]	};
    key <TLDE>	{ [     grave, asciitilde,      notsign,      notsign ]	};

    key <BKSL>	{ [ backslash,        bar,   dead_grave,   dead_breve ]	};
    key <AB01>	{ [         z,          Z, guillemotleft,        less ]	};
    key <AB02>	{ [         x,          X, guillemotright,    greater ]	};
    key <AB03>	{ [         c,          C,         cent,    copyright ]	};
    key <AB04>	{ [         v,          V, leftdoublequotemark, leftsinglequotemark ]	};
    key <AB05>	{ [         b,          B, rightdoublequotemark, rightsinglequotemark ] };
    key <AB06>	{ [         n,          N,            n,            N ]	};
    key <AB07>	{ [         m,          M,           mu,    masculine ]	};
    key <AB08>	{ [     comma,       less, horizconnector,   multiply ]	};
    key <AB09>	{ [    period,    greater, periodcentered,   division ]	};
    key <AB10>	{ [     slash,   question, dead_belowdot, dead_abovedot ] };

};

// Northern Europe ( Danish, Finnish, Norwegian, Swedish) common layout

partial
xkb_symbols "type2" {

    include "latin"

    key <AE01>	{ [         1,     exclam,   exclamdown,  onesuperior ]	};
    key <AE02>	{ [         2,   quotedbl,           at,  twosuperior ]	};
    key <AE03>	{ [         3, numbersign,     sterling, threesuperior]	};
    key <AE04>	{ [         4,   currency,       dollar,   onequarter ]	};
    key <AE05>	{ [         5,    percent,      onehalf,         cent ]	};
    key <AE06>	{ [         6,  ampersand,          yen,  fiveeighths ]	};
    key <AE07>	{ [         7,      slash,    braceleft,     division ]	};
    key <AE08>	{ [         8,  parenleft,  bracketleft, guillemotleft]	};
    key <AE09>	{ [         9, parenright, bracketright, guillemotright] };
    key <AE10>	{ [         0,      equal,   braceright,       degree ]	};

    key <AD03>	{ [         e,          E,     EuroSign,         cent ]	};
    key <AD04>	{ [         r,          R,   registered,   registered ]	};
    key <AD05>	{ [         t,          T,        thorn,        THORN ]	};
    key <AD09>	{ [         o,          O,           oe,           OE ]	};
    key <AD11>	{ [     aring,  Aring, dead_diaeresis, dead_abovering ]	};
    key <AD12>	{ [dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] };

    key <AC01>	{ [         a,          A,  ordfeminine,    masculine ]	};

    key <AB03>	{ [         c,          C,    copyright,    copyright ]	};
    key <AB08>	{ [     comma,  semicolon, dead_cedilla,  dead_ogonek ]	};
    key <AB09>	{ [    period,   colon, periodcentered, dead_abovedot ]	};
    key <AB10>	{ [     minus, underscore, dead_belowdot, dead_abovedot ] };
};

// Slavic Latin ( Albanian, Croatian, Polish, Slovene, Yugoslav)
// common layout

partial
xkb_symbols "type3" {

    include "latin"

    key <AD01>	{ [         q,          Q,    backslash,  Greek_OMEGA ]	};
    key <AD02>	{ [         w,          W,          bar,      Lstroke ]	};
    key <AD06>	{ [         z,          Z,    leftarrow,          yen ]	};

    key <AC04>	{ [         f,          F,  bracketleft,  ordfeminine ]	};
    key <AC05>	{ [         g,          G, bracketright,          ENG ]	};
    key <AC08>	{ [         k,          K,      lstroke,    ampersand ]	};

    key <AB01>	{ [         y,          Y, guillemotleft,        less ]	};
    key <AB04>	{ [         v,          V,           at,        grave ]	};
    key <AB05>	{ [         b,          B,    braceleft,   apostrophe ]	};
    key <AB06>	{ [         n,          N,   braceright,   braceright ]	};
    key <AB07>	{ [         m,          M,      section,    masculine ]	};
    key <AB08>	{ [     comma,  semicolon,         less,     multiply ]	};
    key <AB09>	{ [    period,      colon,      greater,     division ]	};
};

// Another common Latin layout
// (German, Estonian, Spanish, Icelandic, Italian, Latin American, Portuguese)

partial
xkb_symbols "type4" {

    include "latin"

    key <AE02>	{ [         2,   quotedbl,           at,    oneeighth ]	};
    key <AE06>	{ [         6,  ampersand,      notsign,  fiveeighths ]	};
    key <AE07>	{ [         7,      slash,    braceleft, seveneighths ]	};
    key <AE08>	{ [         8,  parenleft,  bracketleft,    trademark ]	};
    key <AE09>	{ [         9, parenright, bracketright,    plusminus ]	};
    key <AE10>	{ [         0,      equal,   braceright,       degree ]	};

    key <AD03>	{ [         e,          E,     EuroSign,         cent ]	};

    key <AB08>	{ [   comma,  semicolon, horizconnector,     multiply ]	};
    key <AB09>	{ [  period,      colon, periodcentered,     division ]	};
    key <AB10>	{ [   minus, underscore, dead_belowdot, dead_abovedot ]	};
};

partial
xkb_symbols "nodeadkeys" {

    key <AE12>	{ [     equal,       plus,     cedilla,        ogonek ]	};
    key <AD11>	{ [bracketleft,  braceleft,  diaeresis,        degree ]	};
    key <AD12>	{ [bracketright, braceright, asciitilde,       macron ]	};
    key <AC10>	{ [ semicolon,      colon,       acute,   doubleacute ]	};
    key <AC11>	{ [apostrophe,   quotedbl, asciicircum,         caron ]	};
    key <BKSL>	{ [ backslash,        bar,       grave,         breve ]	};
    key <AB10>	{ [     slash,   question, dead_belowdot,    abovedot ]	};
};

partial
xkb_symbols "type2_nodeadkeys" {

    include "latin(nodeadkeys)"

    key <AD11>	{ [     aring,      Aring,   diaeresis,        degree ]	};
    key <AD12>	{ [ diaeresis, asciicircum, asciitilde,         caron ]	};
    key <AB08>	{ [     comma,  semicolon,     cedilla,        ogonek ]	};
    key <AB09>	{ [    period,   colon, periodcentered,      abovedot ]	};
    key <AB10>	{ [   minus, underscore, dead_belowdot,      abovedot ]	};
};

partial
xkb_symbols "type3_nodeadkeys" {

    include "latin(nodeadkeys)"
};

partial
xkb_symbols "type4_nodeadkeys" {

    include "latin(nodeadkeys)"

    key <AB10>	{ [   minus, underscore, dead_belowdot,      abovedot ]	};
};

// Added 2008.03.05 by Marcin Woliński
// See http://marcinwolinski.pl/keyboard/ for a description.
// Used by pl(intl)
//
// ┌─────┐
// │ 2 4 │   2 = Shift,  4 = Level3 + Shift
// │ 1 3 │   1 = Normal, 3 = Level3
// └─────┘
// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
// │ ~ ~ │ ! ' │ @ " │ # ˝ │ $ ¸ │ % ˇ │ ^ ^ │ & ˘ │ * ̇  │ ( ̣  │ ) ° │ _ ¯ │ + ˛ ┃ ⌫ Back- ┃
// │ ` ` │ 1 ¡ │ 2 © │ 3 • │ 4 § │ 5 € │ 6 ¢ │ 7 − │ 8 × │ 9 ÷ │ 0 ° │ - – │ = — ┃  space  ┃
// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
// ┃       ┃ Q   │ W   │ E   │ R   │ T   │ Y   │ U   │ I   │ O   │ P   │ { « │ } » ┃ Enter ┃
// ┃Tab ↹  ┃ q   │ w   │ e   │ r   │ t   │ y   │ u   │ i   │ o   │ p   │ [ ‹ │ ] › ┃   ⏎   ┃
// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
// ┃        ┃ A   │ S   │ D   │ F   │ G   │ H   │ J   │ K   │ L   │ : “ │ " ” │ | ¶ ┃      ┃
// ┃Caps ⇬  ┃ a   │ s   │ d   │ f   │ g   │ h   │ j   │ k   │ l   │ ; ‘ │ ' ’ │ \   ┃      ┃
// ┣━━━━━━━━┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
// ┃             │ Z   │ X   │ C   │ V   │ B   │ N   │ M   │ < „ │ > · │ ? ¿ ┃             ┃
// ┃Shift ⇧      │ z   │ x   │ c   │ v   │ b   │ n   │ m   │ , ‚ │ . … │ / ⁄ ┃Shift ⇧      ┃
// ┣━━━━━━━┳━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
// ┃       ┃       ┃       ┃ ␣                               ⍽ ┃       ┃       ┃       ┃
// ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣           Space               ⍽ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛

partial
xkb_symbols "intl" {

    key <TLDE>	{ [     grave,  asciitilde, dead_grave,       dead_tilde ]	};
    key <AE01>	{ [         1,      exclam, exclamdown,       dead_acute ]	};
    key <AE02>	{ [         2,          at,  copyright,   dead_diaeresis ]	};
    key <AE03>	{ [         3,  numbersign,      U2022, dead_doubleacute ]	}; // U+2022 is bullet (the name bullet doesn't work)
    key <AE04>	{ [         4,      dollar,    section,     dead_cedilla ]	};
    key <AE05>	{ [         5,     percent,   EuroSign,       dead_caron ]	};
    key <AE06>	{ [         6, asciicircum,       cent,  dead_circumflex ]	};
    key <AE07>	{ [         7,   ampersand,      U2212,       dead_breve ]	}; // U+2212 is MINUS SIGN
    key <AE08>	{ [         8,    asterisk,   multiply,    dead_abovedot ]	};
    key <AE09>	{ [         9,   parenleft,   division,    dead_belowdot ]	};
    key <AE10>	{ [         0,  parenright,     degree,   dead_abovering ]	};
    key <AE11>	{ [     minus,  underscore,     endash,      dead_macron ]	};
    key <AE12>	{ [     equal,        plus,     emdash,      dead_ogonek ]	};

    key <AD01>	{ [         q,          Q ]	};
    key <AD02>	{ [         w,          W ]	};
    key <AD03>	{ [         e,          E ]	};
    key <AD04>	{ [         r,          R ]	};
    key <AD05>	{ [         t,          T ]	};
    key <AD06>	{ [         y,          Y ]	};
    key <AD07>	{ [         u,          U ]	};
    key <AD08>	{ [         i,          I ]	};
    key <AD09>	{ [         o,          O ]	};
    key <AD10>	{ [         p,          P ]	};
    key <AD11>	{ [bracketleft,   braceleft,  U2039, guillemotleft ]    };
    key <AD12>	{ [bracketright, braceright, U203A, guillemotright ]	};

    key <AC01>	{ [         a,          A ]	};
    key <AC02>	{ [         s,          S ]	};
    key <AC03>	{ [         d,          D ]	};
    key <AC04>	{ [         f,          F ]	};
    key <AC05>	{ [         g,          G ]	};
    key <AC06>	{ [         h,          H ]	};
    key <AC07>	{ [         j,          J ]	};
    key <AC08>	{ [         k,          K ]	};
    key <AC09>	{ [         l,          L ]	};
    key <AC10>	{ [ semicolon,      colon,  leftsinglequotemark,  leftdoublequotemark  ]  };
    key <AC11>	{ [apostrophe,   quotedbl, rightsinglequotemark, rightdoublequotemark  ]  };

    key <BKSL>	{ [ backslash,        bar, 	NoSymbol, paragraph ] };
    key <AB01>	{ [         z,          Z ]	};
    key <AB02>	{ [         x,          X ]	};
    key <AB03>	{ [         c,          C ]	};
    key <AB04>	{ [         v,          V ]	};
    key <AB05>	{ [         b,          B ]     };
    key <AB06>	{ [         n,          N ]	};
    key <AB07>	{ [         m,          M ]	};
    key <AB08>	{ [     comma,       less, singlelowquotemark, doublelowquotemark ]	};
    key <AB09>	{ [    period,    greater, ellipsis, periodcentered ]	};
    key <AB10>	{ [     slash,   question, U2044,  questiondown ]     };  // U+2044 is FRACTION SLASH

};
