Browse Source

Add keymap-extras for EurKEY layout (#24241)

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
j-hap 1 year ago
parent
commit
38eb643a82

+ 596 - 0
data/constants/keycodes/extras/keycodes_eurkey_0.0.1.hjson

@@ -0,0 +1,596 @@
+{
+    "aliases": {
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │       │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │      │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │        │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │        │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │          │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │    │    │    │                        │    │    │    │    │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+        "KC_GRV": {
+            "key": "EU_GRV",
+            "label": "`",
+        }
+        "KC_1": {
+            "key": "EU_1",
+            "label": "1",
+        }
+        "KC_2": {
+            "key": "EU_2",
+            "label": "2",
+        }
+        "KC_3": {
+            "key": "EU_3",
+            "label": "3",
+        }
+        "KC_4": {
+            "key": "EU_4",
+            "label": "4",
+        }
+        "KC_5": {
+            "key": "EU_5",
+            "label": "5",
+        }
+        "KC_6": {
+            "key": "EU_6",
+            "label": "6",
+        }
+        "KC_7": {
+            "key": "EU_7",
+            "label": "7",
+        }
+        "KC_8": {
+            "key": "EU_8",
+            "label": "8",
+        }
+        "KC_9": {
+            "key": "EU_9",
+            "label": "9",
+        }
+        "KC_0": {
+            "key": "EU_0",
+            "label": "0",
+        }
+        "KC_MINS": {
+            "key": "EU_MINS",
+            "label": "-",
+        }
+        "KC_EQL": {
+            "key": "EU_EQL",
+            "label": "=",
+        }
+        "KC_Q": {
+            "key": "EU_Q",
+            "label": "Q",
+        }
+        "KC_W": {
+            "key": "EU_W",
+            "label": "W",
+        }
+        "KC_E": {
+            "key": "EU_E",
+            "label": "E",
+        }
+        "KC_R": {
+            "key": "EU_R",
+            "label": "R",
+        }
+        "KC_T": {
+            "key": "EU_T",
+            "label": "T",
+        }
+        "KC_Y": {
+            "key": "EU_Y",
+            "label": "Y",
+        }
+        "KC_U": {
+            "key": "EU_U",
+            "label": "U",
+        }
+        "KC_I": {
+            "key": "EU_I",
+            "label": "I",
+        }
+        "KC_O": {
+            "key": "EU_O",
+            "label": "O",
+        }
+        "KC_P": {
+            "key": "EU_P",
+            "label": "P",
+        }
+        "KC_LBRC": {
+            "key": "EU_LBRC",
+            "label": "[",
+        }
+        "KC_RBRC": {
+            "key": "EU_RBRC",
+            "label": "]",
+        }
+        "KC_BSLS": {
+            "key": "EU_BSLS",
+            "label": "\\",
+        }
+        "KC_A": {
+            "key": "EU_A",
+            "label": "A",
+        }
+        "KC_S": {
+            "key": "EU_S",
+            "label": "S",
+        }
+        "KC_D": {
+            "key": "EU_D",
+            "label": "D",
+        }
+        "KC_F": {
+            "key": "EU_F",
+            "label": "F",
+        }
+        "KC_G": {
+            "key": "EU_G",
+            "label": "G",
+        }
+        "KC_H": {
+            "key": "EU_H",
+            "label": "H",
+        }
+        "KC_J": {
+            "key": "EU_J",
+            "label": "J",
+        }
+        "KC_K": {
+            "key": "EU_K",
+            "label": "K",
+        }
+        "KC_L": {
+            "key": "EU_L",
+            "label": "L",
+        }
+        "KC_SCLN": {
+            "key": "EU_SCLN",
+            "label": ";",
+        }
+        "KC_QUOT": {
+            "key": "EU_QUOT",
+            "label": "'",
+        }
+        "KC_Z": {
+            "key": "EU_Z",
+            "label": "Z",
+        }
+        "KC_X": {
+            "key": "EU_X",
+            "label": "X",
+        }
+        "KC_C": {
+            "key": "EU_C",
+            "label": "C",
+        }
+        "KC_V": {
+            "key": "EU_V",
+            "label": "V",
+        }
+        "KC_B": {
+            "key": "EU_B",
+            "label": "B",
+        }
+        "KC_N": {
+            "key": "EU_N",
+            "label": "N",
+        }
+        "KC_M": {
+            "key": "EU_M",
+            "label": "M",
+        }
+        "KC_COMM": {
+            "key": "EU_COMM",
+            "label": ",",
+        }
+        "KC_DOT": {
+            "key": "EU_DOT",
+            "label": ".",
+        }
+        "KC_SLSH": {
+            "key": "EU_SLSH",
+            "label": "/",
+        }
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │     │   │   │   │   │   │   │   │   │   │   │ { │ } │  |  │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │      │   │   │   │   │   │   │   │   │   │ : │ " │        │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │        │   │   │   │   │   │   │   │ < │ > │ ? │          │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │    │    │    │                        │    │    │    │    │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+        "S(EU_GRV)": {
+            "key": "EU_TILD",
+            "label": "~",
+        }
+        "S(EU_1)": {
+            "key": "EU_EXLM",
+            "label": "!",
+        }
+        "S(EU_2)": {
+            "key": "EU_AT",
+            "label": "@",
+        }
+        "S(EU_3)": {
+            "key": "EU_HASH",
+            "label": "#",
+        }
+        "S(EU_4)": {
+            "key": "EU_DLR",
+            "label": "$",
+        }
+        "S(EU_5)": {
+            "key": "EU_PERC",
+            "label": "%",
+        }
+        "S(EU_6)": {
+            "key": "EU_CIRC",
+            "label": "^",
+        }
+        "S(EU_7)": {
+            "key": "EU_AMPR",
+            "label": "&",
+        }
+        "S(EU_8)": {
+            "key": "EU_ASTR",
+            "label": "*",
+        }
+        "S(EU_9)": {
+            "key": "EU_LPRN",
+            "label": "(",
+        }
+        "S(EU_0)": {
+            "key": "EU_RPRN",
+            "label": ")",
+        }
+        "S(EU_MINS)": {
+            "key": "EU_UNDS",
+            "label": "_",
+        }
+        "S(EU_EQL)": {
+            "key": "EU_PLUS",
+            "label": "+",
+        }
+        "S(EU_LBRC)": {
+            "key": "EU_LCBR",
+            "label": "{",
+        }
+        "S(EU_RBRC)": {
+            "key": "EU_RCBR",
+            "label": "}",
+        }
+        "S(EU_BSLS)": {
+            "key": "EU_PIPE",
+            "label": "|",
+        }
+        "S(EU_SCLN)": {
+            "key": "EU_COLN",
+            "label": ":",
+        }
+        "S(EU_QUOT)": {
+            "key": "EU_DQUO",
+            "label": "\"",
+        }
+        "S(EU_COMM)": {
+            "key": "EU_LABK",
+            "label": "<",
+        }
+        "S(EU_DOT)": {
+            "key": "EU_RABK",
+            "label": ">",
+        }
+        "S(EU_SLSH)": {
+            "key": "EU_QUES",
+            "label": "?",
+        }
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ` │ ¡ │ ª │ º │ £ │ € │ ^ │ ˚ │ „ │ “ │ ” │ – │ × │       │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │     │ æ │ å │ ë │ ý │ þ │ ÿ │ ü │ ï │ ö │ œ │ « │ » │  ¬  │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │      │ ä │ ß │ ð │ è │ é │ ù │ ú │ ij │ ø │ ° │ ´ │        │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │        │ à │ á │ ç │ ì │ í │ ñ │ μ │ ò │ ó │ ¿ │          │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │    │    │    │                        │    │    │    │    │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+        "ALGR(EU_GRV)": {
+            "key": "EU_DGRV",
+            "label": "` (dead)",
+        }
+        "ALGR(EU_1)": {
+            "key": "EU_IEXL",
+            "label": "¡",
+        }
+        "ALGR(EU_2)": {
+            "key": "EU_FORD",
+            "label": "ª",
+        }
+        "ALGR(EU_3)": {
+            "key": "EU_MORD",
+            "label": "º",
+        }
+        "ALGR(EU_4)": {
+            "key": "EU_PND",
+            "label": "£",
+        }
+        "ALGR(EU_5)": {
+            "key": "EU_EURO",
+            "label": "€",
+        }
+        "ALGR(EU_6)": {
+            "key": "EU_DCIR",
+            "label": "^ (dead)",
+        }
+        "ALGR(EU_7)": {
+            "key": "EU_RNGA",
+            "label": "˚ (dead)",
+        }
+        "ALGR(EU_8)": {
+            "key": "EU_DLQU",
+            "label": "„",
+        }
+        "ALGR(EU_9)": {
+            "key": "EU_LDQU",
+            "label": "“",
+        }
+        "ALGR(EU_0)": {
+            "key": "EU_RDQU",
+            "label": "”",
+        }
+        "ALGR(EU_MINS)": {
+            "key": "EU_NDSH",
+            "label": "–",
+        }
+        "ALGR(EU_EQL)": {
+            "key": "EU_MUL",
+            "label": "×",
+        }
+        "ALGR(EU_Q)": {
+            "key": "EU_AE",
+            "label": "æ",
+        }
+        "ALGR(EU_W)": {
+            "key": "EU_ARNG",
+            "label": "Å",
+        }
+        "ALGR(EU_E)": {
+            "key": "EU_EDIA",
+            "label": "Ë",
+        }
+        "ALGR(EU_R)": {
+            "key": "EU_YACU",
+            "label": "Ý",
+        }
+        "ALGR(EU_T)": {
+            "key": "EU_THRN",
+            "label": "Þ",
+        }
+        "ALGR(EU_Y)": {
+            "key": "EU_YDIA",
+            "label": "Ÿ",
+        }
+        "ALGR(EU_U)": {
+            "key": "EU_UDIA",
+            "label": "Ü",
+        }
+        "ALGR(EU_I)": {
+            "key": "EU_IDIA",
+            "label": "Ï",
+        }
+        "ALGR(EU_O)": {
+            "key": "EU_ODIA",
+            "label": "Ö",
+        }
+        "ALGR(EU_P)": {
+            "key": "EU_OE",
+            "label": "Œ",
+        }
+        "ALGR(EU_LBRC)": {
+            "key": "EU_LDAQ",
+            "label": "«",
+        }
+        "ALGR(EU_RBRC)": {
+            "key": "EU_RDAQ",
+            "label": "»",
+        }
+        "ALGR(EU_BSLS)": {
+            "key": "EU_NOT",
+            "label": "¬",
+        }
+        "ALGR(EU_A)": {
+            "key": "EU_ADIA",
+            "label": "Ä",
+        }
+        "ALGR(EU_S)": {
+            "key": "EU_SS",
+            "label": "ß",
+        }
+        "ALGR(EU_D)": {
+            "key": "EU_ETH",
+            "label": "Ð",
+        }
+        "ALGR(EU_F)": {
+            "key": "EU_EGRV",
+            "label": "È",
+        }
+        "ALGR(EU_G)": {
+            "key": "EU_EACU",
+            "label": "É",
+        }
+        "ALGR(EU_H)": {
+            "key": "EU_UGRV",
+            "label": "Ù",
+        }
+        "ALGR(EU_J)": {
+            "key": "EU_UACU",
+            "label": "Ú",
+        }
+        "ALGR(EU_K)": {
+            "key": "EU_IJ",
+            "label": "IJ",
+        }
+        "ALGR(EU_L)": {
+            "key": "EU_OSTR",
+            "label": "Ø",
+        }
+        "ALGR(EU_SCLN)": {
+            "key": "EU_DEG",
+            "label": "°",
+        }
+        "ALGR(EU_QUOT)": {
+            "key": "EU_ACUT",
+            "label": "´ (dead)",
+        }
+        "ALGR(EU_Z)": {
+            "key": "EU_AGRV",
+            "label": "À",
+        }
+        "ALGR(EU_X)": {
+            "key": "EU_AACU",
+            "label": "Á",
+        }
+        "ALGR(EU_C)": {
+            "key": "EU_CCED",
+            "label": "Ç",
+        }
+        "ALGR(EU_V)": {
+            "key": "EU_IGRV",
+            "label": "Ì",
+        }
+        "ALGR(EU_B)": {
+            "key": "EU_IACU",
+            "label": "Í",
+        }
+        "ALGR(EU_N)": {
+            "key": "EU_NTIL",
+            "label": "Ñ",
+        }
+        "ALGR(EU_M)": {
+            "key": "EU_DGRK",
+            "label": "μ (dead Greek key)",
+        }
+        "ALGR(EU_COMM)": {
+            "key": "EU_OGRV",
+            "label": "Ò",
+        }
+        "ALGR(EU_DOT)": {
+            "key": "EU_OACU",
+            "label": "Ó",
+        }
+        "ALGR(EU_SLSH)": {
+            "key": "EU_IQUE",
+            "label": "¿",
+        }
+/* Shift+AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ~ │ ¹ │ ² │ ³ │ ¥ │ ¢ │ ˇ │ ¯ │ ‚ │ ‘ │ ’ │ — │ ÷ │       │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │     │   │   │   │   │   │   │   │   │   │   │ ‹ │ › │  ¦  │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │      │   │ § │   │   │   │   │   │   │   │ · │ ¨ │        │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │        │   │   │   │   │   │   │   │   │   │ … │          │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │    │    │    │                        │    │    │    │    │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+        "ALGR(EU_TILD)": {
+            "key": "EU_DTIL",
+            "label": "~ (dead)",
+        }
+        "S(ALGR(EU_1))": {
+            "key": "EU_SUP1",
+            "label": "¹",
+        }
+        "S(ALGR(EU_2))": {
+            "key": "EU_SUP2",
+            "label": "²",
+        }
+        "S(ALGR(EU_3))": {
+            "key": "EU_SUP3",
+            "label": "³",
+        }
+        "ALGR(EU_DLR)": {
+            "key": "EU_YEN",
+            "label": "¥",
+        }
+        "S(EU_EURO)": {
+            "key": "EU_CENT",
+            "label": "¢",
+        }
+        "S(EU_DCIR)": {
+            "key": "EU_CARN",
+            "label": "ˇ (dead)",
+        }
+        "S(ALGR(EU_7))": {
+            "key": "EU_MACR",
+            "label": "¯ (dead)",
+        }
+        "S(EU_DLQU)": {
+            "key": "EU_SLQU",
+            "label": "‚",
+        }
+        "S(EU_LDQU)": {
+            "key": "EU_LSQU",
+            "label": "‘",
+        }
+        "S(EU_RDQU)": {
+            "key": "EU_RSQU",
+            "label": "’",
+        }
+        "S(EU_NDSH)": {
+            "key": "EU_MDSH",
+            "label": "—",
+        }
+        "S(EU_MUL)": {
+            "key": "EU_DIV",
+            "label": "÷",
+        }
+        "S(EU_LDAQ)": {
+            "key": "EU_LSAQ",
+            "label": "‹",
+        }
+        "S(EU_RDAQ)": {
+            "key": "EU_RSAQ",
+            "label": "›",
+        }
+        "S(ALGR(EU_BSLS))": {
+            "key": "EU_BRKP",
+            "label": "¦",
+        }
+        "S(ALGR(EU_S))": {
+            "key": "EU_SECT",
+            "label": "§",
+        }
+        "S(ALGR(EU_SCLN))": {
+            "key": "EU_MDDT",
+            "label": "·",
+        }
+        "ALGR(EU_DQUO)": {
+            "key": "EU_DIAE",
+            "label": "¨ (dead)",
+        }
+        "ALGR(EU_QUES)": {
+            "key": "EU_ELLP",
+            "label": "…",
+        }
+    }
+}

+ 1 - 0
docs/reference_keymap_extras.md

@@ -55,6 +55,7 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
 |English (US International)       |`keymap_us_international.h`      |`sendstring_us_international.h`     |
 |English (US International)       |`keymap_us_international.h`      |`sendstring_us_international.h`     |
 |English (US International, Linux)|`keymap_us_international_linux.h`|                                    |
 |English (US International, Linux)|`keymap_us_international_linux.h`|                                    |
 |Estonian                         |`keymap_estonian.h`              |`sendstring_estonian.h`             |
 |Estonian                         |`keymap_estonian.h`              |`sendstring_estonian.h`             |
+|EurKEY                           |`keymap_eurkey.h`                |                                    |
 |Farsi                            |`keymap_farsi.h`                 |                                    |
 |Farsi                            |`keymap_farsi.h`                 |                                    |
 |Finnish                          |`keymap_finnish.h`               |`sendstring_finnish.h`              |
 |Finnish                          |`keymap_finnish.h`               |`sendstring_finnish.h`              |
 |French                           |`keymap_french.h`                |`sendstring_french.h`               |
 |French                           |`keymap_french.h`                |`sendstring_french.h`               |

+ 166 - 0
quantum/keymap_extras/keymap_eurkey.h

@@ -0,0 +1,166 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*******************************************************************************
+  88888888888 888      d8b                .d888 d8b 888               d8b
+      888     888      Y8P               d88P"  Y8P 888               Y8P
+      888     888                        888        888
+      888     88888b.  888 .d8888b       888888 888 888  .d88b.       888 .d8888b
+      888     888 "88b 888 88K           888    888 888 d8P  Y8b      888 88K
+      888     888  888 888 "Y8888b.      888    888 888 88888888      888 "Y8888b.
+      888     888  888 888      X88      888    888 888 Y8b.          888      X88
+      888     888  888 888  88888P'      888    888 888  "Y8888       888  88888P'
+                                                        888                 888
+                                                        888                 888
+                                                        888                 888
+     .d88b.   .d88b.  88888b.   .d88b.  888d888 8888b.  888888 .d88b.   .d88888
+    d88P"88b d8P  Y8b 888 "88b d8P  Y8b 888P"      "88b 888   d8P  Y8b d88" 888
+    888  888 88888888 888  888 88888888 888    .d888888 888   88888888 888  888
+    Y88b 888 Y8b.     888  888 Y8b.     888    888  888 Y88b. Y8b.     Y88b 888
+     "Y88888  "Y8888  888  888  "Y8888  888    "Y888888  "Y888 "Y8888   "Y88888
+         888
+    Y8b d88P
+     "Y88P"
+*******************************************************************************/
+
+#pragma once
+#include "keycodes.h"
+// clang-format off
+
+// Aliases
+#define EU_GRV  KC_GRV  // `
+#define EU_1    KC_1    // 1
+#define EU_2    KC_2    // 2
+#define EU_3    KC_3    // 3
+#define EU_4    KC_4    // 4
+#define EU_5    KC_5    // 5
+#define EU_6    KC_6    // 6
+#define EU_7    KC_7    // 7
+#define EU_8    KC_8    // 8
+#define EU_9    KC_9    // 9
+#define EU_0    KC_0    // 0
+#define EU_MINS KC_MINS // -
+#define EU_EQL  KC_EQL  // =
+#define EU_Q    KC_Q    // Q
+#define EU_W    KC_W    // W
+#define EU_E    KC_E    // E
+#define EU_R    KC_R    // R
+#define EU_T    KC_T    // T
+#define EU_Y    KC_Y    // Y
+#define EU_U    KC_U    // U
+#define EU_I    KC_I    // I
+#define EU_O    KC_O    // O
+#define EU_P    KC_P    // P
+#define EU_LBRC KC_LBRC // [
+#define EU_RBRC KC_RBRC // ]
+#define EU_BSLS KC_BSLS // (backslash)
+#define EU_A    KC_A    // A
+#define EU_S    KC_S    // S
+#define EU_D    KC_D    // D
+#define EU_F    KC_F    // F
+#define EU_G    KC_G    // G
+#define EU_H    KC_H    // H
+#define EU_J    KC_J    // J
+#define EU_K    KC_K    // K
+#define EU_L    KC_L    // L
+#define EU_SCLN KC_SCLN // ;
+#define EU_QUOT KC_QUOT // '
+#define EU_Z    KC_Z    // Z
+#define EU_X    KC_X    // X
+#define EU_C    KC_C    // C
+#define EU_V    KC_V    // V
+#define EU_B    KC_B    // B
+#define EU_N    KC_N    // N
+#define EU_M    KC_M    // M
+#define EU_COMM KC_COMM // ,
+#define EU_DOT  KC_DOT  // .
+#define EU_SLSH KC_SLSH // /
+#define EU_TILD S(EU_GRV)  // ~
+#define EU_EXLM S(EU_1)    // !
+#define EU_AT   S(EU_2)    // @
+#define EU_HASH S(EU_3)    // #
+#define EU_DLR  S(EU_4)    // $
+#define EU_PERC S(EU_5)    // %
+#define EU_CIRC S(EU_6)    // ^
+#define EU_AMPR S(EU_7)    // &
+#define EU_ASTR S(EU_8)    // *
+#define EU_LPRN S(EU_9)    // (
+#define EU_RPRN S(EU_0)    // )
+#define EU_UNDS S(EU_MINS) // _
+#define EU_PLUS S(EU_EQL)  // +
+#define EU_LCBR S(EU_LBRC) // {
+#define EU_RCBR S(EU_RBRC) // }
+#define EU_PIPE S(EU_BSLS) // |
+#define EU_COLN S(EU_SCLN) // :
+#define EU_DQUO S(EU_QUOT) // "
+#define EU_LABK S(EU_COMM) // <
+#define EU_RABK S(EU_DOT)  // >
+#define EU_QUES S(EU_SLSH) // ?
+#define EU_DGRV ALGR(EU_GRV)  // ` (dead)
+#define EU_IEXL ALGR(EU_1)    // ¡
+#define EU_FORD ALGR(EU_2)    // ª
+#define EU_MORD ALGR(EU_3)    // º
+#define EU_PND  ALGR(EU_4)    // £
+#define EU_EURO ALGR(EU_5)    // €
+#define EU_DCIR ALGR(EU_6)    // ^ (dead)
+#define EU_RNGA ALGR(EU_7)    // ˚ (dead)
+#define EU_DLQU ALGR(EU_8)    // „
+#define EU_LDQU ALGR(EU_9)    // “
+#define EU_RDQU ALGR(EU_0)    // ”
+#define EU_NDSH ALGR(EU_MINS) // –
+#define EU_MUL  ALGR(EU_EQL)  // ×
+#define EU_AE   ALGR(EU_Q)    // æ
+#define EU_ARNG ALGR(EU_W)    // Å
+#define EU_EDIA ALGR(EU_E)    // Ë
+#define EU_YACU ALGR(EU_R)    // Ý
+#define EU_THRN ALGR(EU_T)    // Þ
+#define EU_YDIA ALGR(EU_Y)    // Ÿ
+#define EU_UDIA ALGR(EU_U)    // Ü
+#define EU_IDIA ALGR(EU_I)    // Ï
+#define EU_ODIA ALGR(EU_O)    // Ö
+#define EU_OE   ALGR(EU_P)    // Œ
+#define EU_LDAQ ALGR(EU_LBRC) // «
+#define EU_RDAQ ALGR(EU_RBRC) // »
+#define EU_NOT  ALGR(EU_BSLS) // ¬
+#define EU_ADIA ALGR(EU_A)    // Ä
+#define EU_SS   ALGR(EU_S)    // ß
+#define EU_ETH  ALGR(EU_D)    // Ð
+#define EU_EGRV ALGR(EU_F)    // È
+#define EU_EACU ALGR(EU_G)    // É
+#define EU_UGRV ALGR(EU_H)    // Ù
+#define EU_UACU ALGR(EU_J)    // Ú
+#define EU_IJ   ALGR(EU_K)    // IJ
+#define EU_OSTR ALGR(EU_L)    // Ø
+#define EU_DEG  ALGR(EU_SCLN) // °
+#define EU_ACUT ALGR(EU_QUOT) // ´ (dead)
+#define EU_AGRV ALGR(EU_Z)    // À
+#define EU_AACU ALGR(EU_X)    // Á
+#define EU_CCED ALGR(EU_C)    // Ç
+#define EU_IGRV ALGR(EU_V)    // Ì
+#define EU_IACU ALGR(EU_B)    // Í
+#define EU_NTIL ALGR(EU_N)    // Ñ
+#define EU_DGRK ALGR(EU_M)    // μ (dead Greek key)
+#define EU_OGRV ALGR(EU_COMM) // Ò
+#define EU_OACU ALGR(EU_DOT)  // Ó
+#define EU_IQUE ALGR(EU_SLSH) // ¿
+#define EU_DTIL ALGR(EU_TILD) // ~ (dead)
+#define EU_SUP1 S(ALGR(EU_1))    // ¹
+#define EU_SUP2 S(ALGR(EU_2))    // ²
+#define EU_SUP3 S(ALGR(EU_3))    // ³
+#define EU_YEN  ALGR(EU_DLR)  // ¥
+#define EU_CENT S(EU_EURO) // ¢
+#define EU_CARN S(EU_DCIR) // ˇ (dead)
+#define EU_MACR S(ALGR(EU_7))    // ¯ (dead)
+#define EU_SLQU S(EU_DLQU) // ‚
+#define EU_LSQU S(EU_LDQU) // ‘
+#define EU_RSQU S(EU_RDQU) // ’
+#define EU_MDSH S(EU_NDSH) // —
+#define EU_DIV  S(EU_MUL)  // ÷
+#define EU_LSAQ S(EU_LDAQ) // ‹
+#define EU_RSAQ S(EU_RDAQ) // ›
+#define EU_BRKP S(ALGR(EU_BSLS)) // ¦
+#define EU_SECT S(ALGR(EU_S))    // §
+#define EU_MDDT S(ALGR(EU_SCLN)) // ·
+#define EU_DIAE ALGR(EU_DQUO) // ¨ (dead)
+#define EU_ELLP ALGR(EU_QUES) // …
+