From 4a8bd7b9a523601911ba467588b2a6a0aa693db6 Mon Sep 17 00:00:00 2001
From: Ryan
Date: Sun, 15 May 2022 21:27:01 +1000
Subject: Rename keymap_extras headers for consistency (#16939)
---
quantum/keymap_extras/keymap_br_abnt2.h | 160 -------------
quantum/keymap_extras/keymap_brazilian_abnt2.h | 160 +++++++++++++
quantum/keymap_extras/keymap_dvorak_programmer.h | 125 ++++++++++
quantum/keymap_extras/keymap_dvp.h | 125 ----------
quantum/keymap_extras/keymap_fr_ch.h | 164 --------------
quantum/keymap_extras/keymap_french_mac_iso.h | 248 ++++++++++++++++++++
quantum/keymap_extras/keymap_french_osx.h | 248 --------------------
quantum/keymap_extras/keymap_german_ch.h | 164 --------------
quantum/keymap_extras/keymap_german_mac_iso.h | 243 ++++++++++++++++++++
quantum/keymap_extras/keymap_german_osx.h | 243 --------------------
quantum/keymap_extras/keymap_italian_mac_ansi.h | 250 ++++++++++++++++++++
quantum/keymap_extras/keymap_italian_mac_iso.h | 251 +++++++++++++++++++++
quantum/keymap_extras/keymap_italian_osx_ansi.h | 250 --------------------
quantum/keymap_extras/keymap_italian_osx_iso.h | 251 ---------------------
quantum/keymap_extras/keymap_japanese.h | 139 ++++++++++++
quantum/keymap_extras/keymap_jp.h | 139 ------------
quantum/keymap_extras/keymap_portuguese_mac_iso.h | 234 +++++++++++++++++++
quantum/keymap_extras/keymap_portuguese_osx_iso.h | 234 -------------------
quantum/keymap_extras/keymap_swedish_mac_ansi.h | 240 ++++++++++++++++++++
quantum/keymap_extras/keymap_swedish_mac_iso.h | 239 ++++++++++++++++++++
quantum/keymap_extras/keymap_swedish_osx_ansi.h | 240 --------------------
quantum/keymap_extras/keymap_swedish_osx_iso.h | 239 --------------------
.../keymap_extras/keymap_swedish_pro_mac_ansi.h | 240 ++++++++++++++++++++
quantum/keymap_extras/keymap_swedish_pro_mac_iso.h | 239 ++++++++++++++++++++
.../keymap_extras/keymap_swedish_pro_osx_ansi.h | 240 --------------------
quantum/keymap_extras/keymap_swedish_pro_osx_iso.h | 239 --------------------
quantum/keymap_extras/keymap_swiss_de.h | 164 ++++++++++++++
quantum/keymap_extras/keymap_swiss_fr.h | 164 ++++++++++++++
quantum/keymap_extras/sendstring_br_abnt2.h | 100 --------
quantum/keymap_extras/sendstring_brazilian_abnt2.h | 100 ++++++++
.../keymap_extras/sendstring_dvorak_programmer.h | 80 +++++++
quantum/keymap_extras/sendstring_dvp.h | 80 -------
quantum/keymap_extras/sendstring_fr_ch.h | 120 ----------
quantum/keymap_extras/sendstring_french_mac_iso.h | 120 ++++++++++
quantum/keymap_extras/sendstring_french_osx.h | 120 ----------
quantum/keymap_extras/sendstring_german_ch.h | 120 ----------
quantum/keymap_extras/sendstring_german_mac_iso.h | 120 ++++++++++
quantum/keymap_extras/sendstring_german_osx.h | 120 ----------
.../keymap_extras/sendstring_italian_mac_ansi.h | 100 ++++++++
quantum/keymap_extras/sendstring_italian_mac_iso.h | 100 ++++++++
.../keymap_extras/sendstring_italian_osx_ansi.h | 100 --------
quantum/keymap_extras/sendstring_italian_osx_iso.h | 100 --------
quantum/keymap_extras/sendstring_japanese.h | 80 +++++++
quantum/keymap_extras/sendstring_jis.h | 80 -------
.../keymap_extras/sendstring_portuguese_mac_iso.h | 120 ++++++++++
.../keymap_extras/sendstring_portuguese_osx_iso.h | 120 ----------
quantum/keymap_extras/sendstring_swiss_de.h | 120 ++++++++++
quantum/keymap_extras/sendstring_swiss_fr.h | 120 ++++++++++
48 files changed, 3996 insertions(+), 3996 deletions(-)
delete mode 100644 quantum/keymap_extras/keymap_br_abnt2.h
create mode 100644 quantum/keymap_extras/keymap_brazilian_abnt2.h
create mode 100644 quantum/keymap_extras/keymap_dvorak_programmer.h
delete mode 100644 quantum/keymap_extras/keymap_dvp.h
delete mode 100644 quantum/keymap_extras/keymap_fr_ch.h
create mode 100644 quantum/keymap_extras/keymap_french_mac_iso.h
delete mode 100644 quantum/keymap_extras/keymap_french_osx.h
delete mode 100644 quantum/keymap_extras/keymap_german_ch.h
create mode 100644 quantum/keymap_extras/keymap_german_mac_iso.h
delete mode 100644 quantum/keymap_extras/keymap_german_osx.h
create mode 100644 quantum/keymap_extras/keymap_italian_mac_ansi.h
create mode 100644 quantum/keymap_extras/keymap_italian_mac_iso.h
delete mode 100644 quantum/keymap_extras/keymap_italian_osx_ansi.h
delete mode 100644 quantum/keymap_extras/keymap_italian_osx_iso.h
create mode 100644 quantum/keymap_extras/keymap_japanese.h
delete mode 100644 quantum/keymap_extras/keymap_jp.h
create mode 100644 quantum/keymap_extras/keymap_portuguese_mac_iso.h
delete mode 100644 quantum/keymap_extras/keymap_portuguese_osx_iso.h
create mode 100644 quantum/keymap_extras/keymap_swedish_mac_ansi.h
create mode 100644 quantum/keymap_extras/keymap_swedish_mac_iso.h
delete mode 100644 quantum/keymap_extras/keymap_swedish_osx_ansi.h
delete mode 100644 quantum/keymap_extras/keymap_swedish_osx_iso.h
create mode 100644 quantum/keymap_extras/keymap_swedish_pro_mac_ansi.h
create mode 100644 quantum/keymap_extras/keymap_swedish_pro_mac_iso.h
delete mode 100644 quantum/keymap_extras/keymap_swedish_pro_osx_ansi.h
delete mode 100644 quantum/keymap_extras/keymap_swedish_pro_osx_iso.h
create mode 100644 quantum/keymap_extras/keymap_swiss_de.h
create mode 100644 quantum/keymap_extras/keymap_swiss_fr.h
delete mode 100644 quantum/keymap_extras/sendstring_br_abnt2.h
create mode 100644 quantum/keymap_extras/sendstring_brazilian_abnt2.h
create mode 100644 quantum/keymap_extras/sendstring_dvorak_programmer.h
delete mode 100644 quantum/keymap_extras/sendstring_dvp.h
delete mode 100644 quantum/keymap_extras/sendstring_fr_ch.h
create mode 100644 quantum/keymap_extras/sendstring_french_mac_iso.h
delete mode 100644 quantum/keymap_extras/sendstring_french_osx.h
delete mode 100644 quantum/keymap_extras/sendstring_german_ch.h
create mode 100644 quantum/keymap_extras/sendstring_german_mac_iso.h
delete mode 100644 quantum/keymap_extras/sendstring_german_osx.h
create mode 100644 quantum/keymap_extras/sendstring_italian_mac_ansi.h
create mode 100644 quantum/keymap_extras/sendstring_italian_mac_iso.h
delete mode 100644 quantum/keymap_extras/sendstring_italian_osx_ansi.h
delete mode 100644 quantum/keymap_extras/sendstring_italian_osx_iso.h
create mode 100644 quantum/keymap_extras/sendstring_japanese.h
delete mode 100644 quantum/keymap_extras/sendstring_jis.h
create mode 100644 quantum/keymap_extras/sendstring_portuguese_mac_iso.h
delete mode 100644 quantum/keymap_extras/sendstring_portuguese_osx_iso.h
create mode 100644 quantum/keymap_extras/sendstring_swiss_de.h
create mode 100644 quantum/keymap_extras/sendstring_swiss_fr.h
(limited to 'quantum/keymap_extras')
diff --git a/quantum/keymap_extras/keymap_br_abnt2.h b/quantum/keymap_extras/keymap_br_abnt2.h
deleted file mode 100644
index b5892183be..0000000000
--- a/quantum/keymap_extras/keymap_br_abnt2.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Copyright 2017 Potiguar Faga
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ ' │ 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 │ , │ . │ ; │ / │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define BR_QUOT KC_GRV // '
-#define BR_1 KC_1 // 1
-#define BR_2 KC_2 // 2
-#define BR_3 KC_3 // 3
-#define BR_4 KC_4 // 4
-#define BR_5 KC_5 // 5
-#define BR_6 KC_6 // 6
-#define BR_7 KC_7 // 7
-#define BR_8 KC_8 // 8
-#define BR_9 KC_9 // 9
-#define BR_0 KC_0 // 0
-#define BR_MINS KC_MINS // -
-#define BR_EQL KC_EQL // =
-// Row 2
-#define BR_Q KC_Q // Q
-#define BR_W KC_W // W
-#define BR_E KC_E // E
-#define BR_R KC_R // R
-#define BR_T KC_T // T
-#define BR_Y KC_Y // Y
-#define BR_U KC_U // U
-#define BR_I KC_I // I
-#define BR_O KC_O // O
-#define BR_P KC_P // P
-#define BR_ACUT KC_LBRC // ´ (dead)
-#define BR_LBRC KC_RBRC // [
-// Row 3
-#define BR_A KC_A // A
-#define BR_S KC_S // S
-#define BR_D KC_D // D
-#define BR_F KC_F // F
-#define BR_G KC_G // G
-#define BR_H KC_H // H
-#define BR_J KC_J // J
-#define BR_K KC_K // K
-#define BR_L KC_L // L
-#define BR_CCED KC_SCLN // Ç
-#define BR_TILD KC_QUOT // ~ (dead)
-#define BR_RBRC KC_BSLS // ]
-// Row 4
-#define BR_BSLS KC_NUBS // (backslash)
-#define BR_Z KC_Z // Z
-#define BR_X KC_X // X
-#define BR_C KC_C // C
-#define BR_V KC_V // V
-#define BR_B KC_B // B
-#define BR_N KC_N // N
-#define BR_M KC_M // M
-#define BR_COMM KC_COMM // ,
-#define BR_DOT KC_DOT // .
-#define BR_SCLN KC_SLSH // ;
-#define BR_SLSH KC_INT1 // /
-// Numpad
-#define BR_PDOT KC_PCMM // .
-#define BR_PCMM KC_PDOT // ,
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ " │ ! │ @ │ # │ $ │ % │ ¨ │ & │ * │ ( │ ) │ _ │ + │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ │ │ │ │ │ │ │ │ ` │ { │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ } │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
- * │ │ | │ │ │ │ │ │ │ │ < │ > │ : │ ? │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define BR_DQUO S(BR_QUOT) // "
-#define BR_EXLM S(BR_1) // !
-#define BR_AT S(BR_2) // @
-#define BR_HASH S(BR_3) // #
-#define BR_DLR S(BR_4) // $
-#define BR_PERC S(BR_5) // %
-#define BR_DIAE S(BR_6) // ¨ (dead)
-#define BR_AMPR S(BR_7) // &
-#define BR_ASTR S(BR_8) // *
-#define BR_LPRN S(BR_9) // (
-#define BR_RPRN S(BR_0) // )
-#define BR_UNDS S(BR_MINS) // _
-#define BR_PLUS S(BR_EQL) // +
-// Row 2
-#define BR_GRV S(BR_ACUT) // ` (dead)
-#define BR_LCBR S(BR_LBRC) // {
-// Row 3
-#define BR_CIRC S(BR_TILD) // ^ (dead)
-#define BR_RCBR S(BR_RBRC) // }
-// Row 4
-#define BR_PIPE S(BR_BSLS) // |
-#define BR_LABK S(BR_COMM) // <
-#define BR_RABK S(BR_DOT) // >
-#define BR_COLN S(BR_SCLN) // :
-#define BR_QUES S(BR_SLSH) // ?
-
-/* AltGr symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ │ ¹ │ ² │ ³ │ £ │ ¢ │ ¬ │ │ │ │ │ │ § │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ ° │ │ │ │ │ │ │ │ │ ª │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ │ º │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
- * │ │ │ │ │ ₢ │ │ │ │ │ │ │ │ │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define BR_SUP1 ALGR(BR_1) // ¹
-#define BR_SUP2 ALGR(BR_2) // ²
-#define BR_SUP3 ALGR(BR_3) // ³
-#define BR_PND ALGR(BR_4) // £
-#define BR_CENT ALGR(BR_5) // ¢
-#define BR_NOT ALGR(BR_6) // ¬
-#define BR_SECT ALGR(BR_EQL) // §
-// Row 2
-#define BR_DEG ALGR(BR_E) // °
-#define BR_FORD ALGR(BR_LBRC) // ª
-// Row 3
-#define BR_MORD ALGR(BR_RBRC) // º
-// Row 4
-#define BR_CRUZ ALGR(BR_C) // ₢
diff --git a/quantum/keymap_extras/keymap_brazilian_abnt2.h b/quantum/keymap_extras/keymap_brazilian_abnt2.h
new file mode 100644
index 0000000000..b5892183be
--- /dev/null
+++ b/quantum/keymap_extras/keymap_brazilian_abnt2.h
@@ -0,0 +1,160 @@
+/* Copyright 2017 Potiguar Faga
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ' │ 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 │ , │ . │ ; │ / │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define BR_QUOT KC_GRV // '
+#define BR_1 KC_1 // 1
+#define BR_2 KC_2 // 2
+#define BR_3 KC_3 // 3
+#define BR_4 KC_4 // 4
+#define BR_5 KC_5 // 5
+#define BR_6 KC_6 // 6
+#define BR_7 KC_7 // 7
+#define BR_8 KC_8 // 8
+#define BR_9 KC_9 // 9
+#define BR_0 KC_0 // 0
+#define BR_MINS KC_MINS // -
+#define BR_EQL KC_EQL // =
+// Row 2
+#define BR_Q KC_Q // Q
+#define BR_W KC_W // W
+#define BR_E KC_E // E
+#define BR_R KC_R // R
+#define BR_T KC_T // T
+#define BR_Y KC_Y // Y
+#define BR_U KC_U // U
+#define BR_I KC_I // I
+#define BR_O KC_O // O
+#define BR_P KC_P // P
+#define BR_ACUT KC_LBRC // ´ (dead)
+#define BR_LBRC KC_RBRC // [
+// Row 3
+#define BR_A KC_A // A
+#define BR_S KC_S // S
+#define BR_D KC_D // D
+#define BR_F KC_F // F
+#define BR_G KC_G // G
+#define BR_H KC_H // H
+#define BR_J KC_J // J
+#define BR_K KC_K // K
+#define BR_L KC_L // L
+#define BR_CCED KC_SCLN // Ç
+#define BR_TILD KC_QUOT // ~ (dead)
+#define BR_RBRC KC_BSLS // ]
+// Row 4
+#define BR_BSLS KC_NUBS // (backslash)
+#define BR_Z KC_Z // Z
+#define BR_X KC_X // X
+#define BR_C KC_C // C
+#define BR_V KC_V // V
+#define BR_B KC_B // B
+#define BR_N KC_N // N
+#define BR_M KC_M // M
+#define BR_COMM KC_COMM // ,
+#define BR_DOT KC_DOT // .
+#define BR_SCLN KC_SLSH // ;
+#define BR_SLSH KC_INT1 // /
+// Numpad
+#define BR_PDOT KC_PCMM // .
+#define BR_PCMM KC_PDOT // ,
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ " │ ! │ @ │ # │ $ │ % │ ¨ │ & │ * │ ( │ ) │ _ │ + │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ ` │ { │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ } │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
+ * │ │ | │ │ │ │ │ │ │ │ < │ > │ : │ ? │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define BR_DQUO S(BR_QUOT) // "
+#define BR_EXLM S(BR_1) // !
+#define BR_AT S(BR_2) // @
+#define BR_HASH S(BR_3) // #
+#define BR_DLR S(BR_4) // $
+#define BR_PERC S(BR_5) // %
+#define BR_DIAE S(BR_6) // ¨ (dead)
+#define BR_AMPR S(BR_7) // &
+#define BR_ASTR S(BR_8) // *
+#define BR_LPRN S(BR_9) // (
+#define BR_RPRN S(BR_0) // )
+#define BR_UNDS S(BR_MINS) // _
+#define BR_PLUS S(BR_EQL) // +
+// Row 2
+#define BR_GRV S(BR_ACUT) // ` (dead)
+#define BR_LCBR S(BR_LBRC) // {
+// Row 3
+#define BR_CIRC S(BR_TILD) // ^ (dead)
+#define BR_RCBR S(BR_RBRC) // }
+// Row 4
+#define BR_PIPE S(BR_BSLS) // |
+#define BR_LABK S(BR_COMM) // <
+#define BR_RABK S(BR_DOT) // >
+#define BR_COLN S(BR_SCLN) // :
+#define BR_QUES S(BR_SLSH) // ?
+
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ │ ¹ │ ² │ ³ │ £ │ ¢ │ ¬ │ │ │ │ │ │ § │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ ° │ │ │ │ │ │ │ │ │ ª │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ º │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
+ * │ │ │ │ │ ₢ │ │ │ │ │ │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define BR_SUP1 ALGR(BR_1) // ¹
+#define BR_SUP2 ALGR(BR_2) // ²
+#define BR_SUP3 ALGR(BR_3) // ³
+#define BR_PND ALGR(BR_4) // £
+#define BR_CENT ALGR(BR_5) // ¢
+#define BR_NOT ALGR(BR_6) // ¬
+#define BR_SECT ALGR(BR_EQL) // §
+// Row 2
+#define BR_DEG ALGR(BR_E) // °
+#define BR_FORD ALGR(BR_LBRC) // ª
+// Row 3
+#define BR_MORD ALGR(BR_RBRC) // º
+// Row 4
+#define BR_CRUZ ALGR(BR_C) // ₢
diff --git a/quantum/keymap_extras/keymap_dvorak_programmer.h b/quantum/keymap_extras/keymap_dvorak_programmer.h
new file mode 100644
index 0000000000..6de7033cb4
--- /dev/null
+++ b/quantum/keymap_extras/keymap_dvorak_programmer.h
@@ -0,0 +1,125 @@
+/* Copyright 2016 Artyom Mironov
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ $ │ & │ [ │ { │ } │ ( │ = │ * │ ) │ + │ ] │ ! │ # │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ ; │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ @ │ \ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │ │ ' │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define DP_DLR KC_GRV // $
+#define DP_AMPR KC_1 // &
+#define DP_LBRC KC_2 // [
+#define DP_LCBR KC_3 // {
+#define DP_RCBR KC_4 // }
+#define DP_LPRN KC_5 // (
+#define DP_EQL KC_6 // =
+#define DP_ASTR KC_7 // *
+#define DP_RPRN KC_8 // )
+#define DP_PLUS KC_9 // +
+#define DP_RBRC KC_0 // ]
+#define DP_EXLM KC_MINS // !
+#define DP_HASH KC_EQL // #
+// Row 2
+#define DP_SCLN KC_Q // ;
+#define DP_COMM KC_W // ,
+#define DP_DOT KC_E // .
+#define DP_P KC_R // P
+#define DP_Y KC_T // Y
+#define DP_F KC_Y // F
+#define DP_G KC_U // G
+#define DP_C KC_I // C
+#define DP_R KC_O // R
+#define DP_L KC_P // L
+#define DP_SLSH KC_LBRC // /
+#define DP_AT KC_RBRC // @
+#define DP_BSLS KC_BSLS // (backslash)
+// Row 3
+#define DP_A KC_A // A
+#define DP_O KC_S // O
+#define DP_E KC_D // E
+#define DP_U KC_F // U
+#define DP_I KC_G // I
+#define DP_D KC_H // D
+#define DP_H KC_J // H
+#define DP_T KC_K // T
+#define DP_N KC_L // N
+#define DP_S KC_SCLN // S
+#define DP_MINS KC_QUOT // -
+// Row 4
+#define DP_QUOT KC_Z // '
+#define DP_Q KC_X // Q
+#define DP_J KC_C // J
+#define DP_K KC_V // K
+#define DP_X KC_B // X
+#define DP_B KC_N // B
+#define DP_M KC_M // M
+#define DP_W KC_COMM // W
+#define DP_V KC_DOT // V
+#define DP_Z KC_SLSH // Z
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ~ │ % │ 7 │ 5 │ 3 │ 1 │ 9 │ 0 │ 2 │ 4 │ 6 │ 8 │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ : │ < │ > │ │ │ │ │ │ │ │ ? │ ^ │ | │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ _ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │ │ " │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define DP_TILD S(DP_DLR) // ~
+#define DP_PERC S(DP_AMPR) // %
+#define DP_7 S(DP_LBRC) // 7
+#define DP_5 S(DP_LCBR) // 5
+#define DP_3 S(DP_RCBR) // 3
+#define DP_1 S(DP_LPRN) // 1
+#define DP_9 S(DP_EQL) // 9
+#define DP_0 S(DP_ASTR) // 0
+#define DP_2 S(DP_RPRN) // 2
+#define DP_4 S(DP_PLUS) // 4
+#define DP_6 S(DP_RBRC) // 6
+#define DP_8 S(DP_EXLM) // 8
+#define DP_GRV S(DP_HASH) // `
+// Row 2
+#define DP_COLN S(DP_SCLN) // :
+#define DP_LABK S(DP_COMM) // <
+#define DP_RABK S(DP_DOT) // >
+#define DP_QUES S(DP_SLSH) // ?
+#define DP_CIRC S(DP_AT) // ^
+#define DP_PIPE S(DP_BSLS) // |
+// Row 3
+#define DP_UNDS S(DP_MINS) // _
+// Row 4
+#define DP_DQUO S(DP_QUOT) // "
diff --git a/quantum/keymap_extras/keymap_dvp.h b/quantum/keymap_extras/keymap_dvp.h
deleted file mode 100644
index 6de7033cb4..0000000000
--- a/quantum/keymap_extras/keymap_dvp.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Copyright 2016 Artyom Mironov
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ $ │ & │ [ │ { │ } │ ( │ = │ * │ ) │ + │ ] │ ! │ # │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ ; │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ @ │ \ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │ │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
- * │ │ ' │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │ │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define DP_DLR KC_GRV // $
-#define DP_AMPR KC_1 // &
-#define DP_LBRC KC_2 // [
-#define DP_LCBR KC_3 // {
-#define DP_RCBR KC_4 // }
-#define DP_LPRN KC_5 // (
-#define DP_EQL KC_6 // =
-#define DP_ASTR KC_7 // *
-#define DP_RPRN KC_8 // )
-#define DP_PLUS KC_9 // +
-#define DP_RBRC KC_0 // ]
-#define DP_EXLM KC_MINS // !
-#define DP_HASH KC_EQL // #
-// Row 2
-#define DP_SCLN KC_Q // ;
-#define DP_COMM KC_W // ,
-#define DP_DOT KC_E // .
-#define DP_P KC_R // P
-#define DP_Y KC_T // Y
-#define DP_F KC_Y // F
-#define DP_G KC_U // G
-#define DP_C KC_I // C
-#define DP_R KC_O // R
-#define DP_L KC_P // L
-#define DP_SLSH KC_LBRC // /
-#define DP_AT KC_RBRC // @
-#define DP_BSLS KC_BSLS // (backslash)
-// Row 3
-#define DP_A KC_A // A
-#define DP_O KC_S // O
-#define DP_E KC_D // E
-#define DP_U KC_F // U
-#define DP_I KC_G // I
-#define DP_D KC_H // D
-#define DP_H KC_J // H
-#define DP_T KC_K // T
-#define DP_N KC_L // N
-#define DP_S KC_SCLN // S
-#define DP_MINS KC_QUOT // -
-// Row 4
-#define DP_QUOT KC_Z // '
-#define DP_Q KC_X // Q
-#define DP_J KC_C // J
-#define DP_K KC_V // K
-#define DP_X KC_B // X
-#define DP_B KC_N // B
-#define DP_M KC_M // M
-#define DP_W KC_COMM // W
-#define DP_V KC_DOT // V
-#define DP_Z KC_SLSH // Z
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ ~ │ % │ 7 │ 5 │ 3 │ 1 │ 9 │ 0 │ 2 │ 4 │ 6 │ 8 │ ` │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ : │ < │ > │ │ │ │ │ │ │ │ ? │ ^ │ | │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │ │ │ │ │ │ │ │ │ │ │ │ _ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
- * │ │ " │ │ │ │ │ │ │ │ │ │ │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define DP_TILD S(DP_DLR) // ~
-#define DP_PERC S(DP_AMPR) // %
-#define DP_7 S(DP_LBRC) // 7
-#define DP_5 S(DP_LCBR) // 5
-#define DP_3 S(DP_RCBR) // 3
-#define DP_1 S(DP_LPRN) // 1
-#define DP_9 S(DP_EQL) // 9
-#define DP_0 S(DP_ASTR) // 0
-#define DP_2 S(DP_RPRN) // 2
-#define DP_4 S(DP_PLUS) // 4
-#define DP_6 S(DP_RBRC) // 6
-#define DP_8 S(DP_EXLM) // 8
-#define DP_GRV S(DP_HASH) // `
-// Row 2
-#define DP_COLN S(DP_SCLN) // :
-#define DP_LABK S(DP_COMM) // <
-#define DP_RABK S(DP_DOT) // >
-#define DP_QUES S(DP_SLSH) // ?
-#define DP_CIRC S(DP_AT) // ^
-#define DP_PIPE S(DP_BSLS) // |
-// Row 3
-#define DP_UNDS S(DP_MINS) // _
-// Row 4
-#define DP_DQUO S(DP_QUOT) // "
diff --git a/quantum/keymap_extras/keymap_fr_ch.h b/quantum/keymap_extras/keymap_fr_ch.h
deleted file mode 100644
index b1f2455a68..0000000000
--- a/quantum/keymap_extras/keymap_fr_ch.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/* Copyright 2016 Vincent Pochet
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-#ifdef CH_H
-// The ChibiOS ch.h file defines this...
-# undef CH_H
-#endif
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ^ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ è │ ¨ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ é │ à │ $ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define CH_SECT KC_GRV // §
-#define CH_1 KC_1 // 1
-#define CH_2 KC_2 // 2
-#define CH_3 KC_3 // 3
-#define CH_4 KC_4 // 4
-#define CH_5 KC_5 // 5
-#define CH_6 KC_6 // 6
-#define CH_7 KC_7 // 7
-#define CH_8 KC_8 // 8
-#define CH_9 KC_9 // 9
-#define CH_0 KC_0 // 0
-#define CH_QUOT KC_MINS // '
-#define CH_CIRC KC_EQL // ^ (dead)
-// Row 2
-#define CH_Q KC_Q // Q
-#define CH_W KC_W // W
-#define CH_E KC_E // E
-#define CH_R KC_R // R
-#define CH_T KC_T // T
-#define CH_Z KC_Y // Z
-#define CH_U KC_U // U
-#define CH_I KC_I // I
-#define CH_O KC_O // O
-#define CH_P KC_P // P
-#define CH_EGRV KC_LBRC // è
-#define CH_DIAE KC_RBRC // ¨ (dead)
-// Row 3
-#define CH_A KC_A // A
-#define CH_S KC_S // S
-#define CH_D KC_D // D
-#define CH_F KC_F // F
-#define CH_G KC_G // G
-#define CH_H KC_H // H
-#define CH_J KC_J // J
-#define CH_K KC_K // K
-#define CH_L KC_L // L
-#define CH_EACU KC_SCLN // é
-#define CH_AGRV KC_QUOT // à
-#define CH_DLR KC_NUHS // $
-// Row 4
-#define CH_LABK KC_NUBS // <
-#define CH_Y KC_Z // Y
-#define CH_X KC_X // X
-#define CH_C KC_C // C
-#define CH_V KC_V // V
-#define CH_B KC_B // B
-#define CH_N KC_N // N
-#define CH_M KC_M // M
-#define CH_COMM KC_COMM // ,
-#define CH_DOT KC_DOT // .
-#define CH_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ ° │ + │ " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ │ │ │ │ │ │ │ │ ü │ ! │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ ö │ ä │ £ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define CH_DEG S(CH_SECT) // °
-#define CH_PLUS S(CH_1) // +
-#define CH_DQUO S(CH_2) // "
-#define CH_ASTR S(CH_3) // *
-#define CH_CCED S(CH_4) // ç
-#define CH_PERC S(CH_5) // %
-#define CH_AMPR S(CH_6) // &
-#define CH_SLSH S(CH_7) // /
-#define CH_LPRN S(CH_8) // (
-#define CH_RPRN S(CH_9) // )
-#define CH_EQL S(CH_0) // =
-#define CH_QUES S(CH_QUOT) // ?
-#define CH_GRV S(CH_CIRC) // ` (dead)
-// Row 2
-#define CH_UDIA S(CH_EGRV) // ü
-#define CH_EXLM S(CH_DIAE) // !
-// Row 3
-#define CH_ODIA S(CH_EACU) // ö
-#define CH_ADIA S(CH_AGRV) // ä
-#define CH_PND S(CH_DLR) // £
-// Row 4
-#define CH_RABK S(CH_LABK) // >
-#define CH_SCLN S(CH_COMM) // ;
-#define CH_COLN S(CH_DOT) // :
-#define CH_UNDS S(CH_MINS) // _
-
-/* AltGr symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ │ ¦ │ @ │ # │ │ │ ¬ │ | │ ¢ │ │ │ ´ │ ~ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ \ │ │ │ │ │ │ │ │ │ │ │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define CH_BRKP ALGR(CH_1) // ¦
-#define CH_AT ALGR(CH_2) // @
-#define CH_HASH ALGR(CH_3) // #
-#define CH_NOT ALGR(CH_6) // ¬
-#define CH_PIPE ALGR(CH_7) // |
-#define CH_CENT ALGR(CH_8) // ¢
-#define CH_ACUT ALGR(CH_QUOT) // ´ (dead)
-#define CH_TILD ALGR(CH_CIRC) // ~ (dead)
-// Row 2
-#define CH_EURO ALGR(CH_E) // €
-#define CH_LBRC ALGR(CH_EGRV) // [
-#define CH_RBRC ALGR(CH_DIAE) // ]
-// Row 3
-#define CH_LCBR ALGR(CH_AGRV) // {
-#define CH_RCBR ALGR(CH_DLR) // }
-// Row 4
-#define CH_BSLS ALGR(CH_LABK) // (backslash)
diff --git a/quantum/keymap_extras/keymap_french_mac_iso.h b/quantum/keymap_extras/keymap_french_mac_iso.h
new file mode 100644
index 0000000000..590a57e55c
--- /dev/null
+++ b/quantum/keymap_extras/keymap_french_mac_iso.h
@@ -0,0 +1,248 @@
+/* Copyright 2016 Sébastien Pérochon
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ @ │ & │ é │ " │ ' │ ( │ § │ è │ ! │ ç │ à │ ) │ - │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ ` │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ = │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define FR_AT KC_GRV // @
+#define FR_AMPR KC_1 // &
+#define FR_LEAC KC_2 // é
+#define FR_DQUO KC_3 // "
+#define FR_QUOT KC_4 // '
+#define FR_LPRN KC_5 // (
+#define FR_SECT KC_6 // §
+#define FR_LEGR KC_7 // è
+#define FR_EXLM KC_8 // !
+#define FR_LCCE KC_9 // ç
+#define FR_LAGR KC_0 // à
+#define FR_RPRN KC_MINS // )
+#define FR_MINS KC_EQL // -
+// Row 2
+#define FR_A KC_Q // A
+#define FR_Z KC_W // Z
+#define FR_E KC_E // E
+#define FR_R KC_R // R
+#define FR_T KC_T // T
+#define FR_Y KC_Y // Y
+#define FR_U KC_U // U
+#define FR_I KC_I // I
+#define FR_O KC_O // O
+#define FR_P KC_P // P
+#define FR_CIRC KC_LBRC // ^
+#define FR_DLR KC_RBRC // $
+// Row 3
+#define FR_Q KC_A // Q
+#define FR_S KC_S // S
+#define FR_D KC_D // D
+#define FR_F KC_F // F
+#define FR_G KC_G // G
+#define FR_H KC_H // H
+#define FR_J KC_J // J
+#define FR_K KC_K // K
+#define FR_L KC_L // L
+#define FR_M KC_SCLN // M
+#define FR_LUGR KC_QUOT // ù
+#define FR_GRV KC_NUHS // `
+// Row 4
+#define FR_LABK KC_NUBS // <
+#define FR_W KC_Z // W
+#define FR_X KC_X // X
+#define FR_C KC_C // C
+#define FR_V KC_V // V
+#define FR_B KC_B // B
+#define FR_N KC_N // N
+#define FR_COMM KC_M // ,
+#define FR_SCLN KC_COMM // ;
+#define FR_COLN KC_DOT // :
+#define FR_EQL KC_SLSH // =
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ _ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ * │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ % │ £ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ > │ │ │ │ │ │ │ ? │ . │ / │ + │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define FR_HASH S(FR_AT) // #
+#define FR_1 S(FR_AMPR) // 1
+#define FR_2 S(FR_LEAC) // 2
+#define FR_3 S(FR_DQUO) // 3
+#define FR_4 S(FR_QUOT) // 4
+#define FR_5 S(FR_LPRN) // 5
+#define FR_6 S(FR_SECT) // 6
+#define FR_7 S(FR_LEGR) // 7
+#define FR_8 S(FR_EXLM) // 8
+#define FR_9 S(FR_LCCE) // 9
+#define FR_0 S(FR_LAGR) // 0
+#define FR_DEG S(FR_RPRN) // °
+#define FR_UNDS S(FR_MINS) // _
+// Row 2
+#define FR_DIAE S(FR_CIRC) // ¨ (dead)
+#define FR_ASTR S(FR_DLR) // *
+// Row 3
+#define FR_PERC S(FR_LUGR) // %
+#define FR_PND S(FR_GRV) // £
+// Row 4
+#define FR_RABK S(FR_LABK) // >
+#define FR_QUES S(FR_COMM) // ?
+#define FR_DOT S(FR_SCLN) // .
+#define FR_SLSH S(FR_COLN) // /
+#define FR_PLUS S(FR_EQL) // +
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ • │ │ ë │ “ │ ‘ │ { │ ¶ │ « │ ¡ │ Ç │ Ø │ } │ — │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ Æ │  │ Ê │ ® │ † │ Ú │ º │ î │ Œ │ π │ Ô │ € │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ ‡ │ Ò │ ∂ │ ƒ │ fi │ Ì │ Ï │ È │ ¬ │ µ │ Ù │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≤ │ ‹ │ ≈ │ © │ ◊ │ ß │ ~ │ ∞ │ … │ ÷ │ ≠ │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define FR_BULT A(FR_AT) // •
+#define FR_APPL A(FR_AMPR) // (Apple logo)
+#define FR_LEDI A(FR_LEAC) // ë
+#define FR_LDQU A(FR_DQUO) // “
+#define FR_LSQU A(FR_QUOT) // ‘
+#define FR_LCBR A(FR_LPRN) // {
+#define FR_PILC A(FR_SECT) // ¶
+#define FR_LDAQ A(FR_LEGR) // «
+#define FR_IEXL A(FR_EXLM) // ¡
+#define FR_CCCE A(FR_LCCE) // Ç
+#define FR_OSTR A(FR_LAGR) // Ø
+#define FR_RCBR A(FR_RPRN) // }
+#define FR_MDSH A(FR_MINS) // —
+// Row 2
+#define FR_AE A(FR_A) // Æ
+#define FR_CACI A(FR_Z) // Â
+#define FR_ECIR A(FR_E) // Ê
+#define FR_REGD A(FR_R) // ®
+#define FR_DAGG A(FR_T) // †
+#define FR_CUAC A(FR_Y) // Ú
+#define FR_MORD A(FR_U) // º
+#define FR_LICI A(FR_I) // î
+#define FR_OE A(FR_O) // Œ
+#define FR_PI A(FR_P) // π
+#define FR_OCIR A(FR_CIRC) // Ô
+#define FR_EURO A(FR_DLR) // €
+// Row 3
+#define FR_DDAG A(FR_Q) // ‡
+#define FR_COGR A(FR_S) // Ò
+#define FR_PDIF A(FR_D) // ∂
+#define FR_FHK A(FR_F) // ƒ
+#define FR_FI A(FR_G) // fi
+#define FR_CIGR A(FR_H) // Ì
+#define FR_CIDI A(FR_J) // Ï
+#define FR_CEGR A(FR_K) // È
+#define FR_NOT A(FR_L) // ¬
+#define FR_MICR A(FR_M) // µ
+#define FR_CUGR A(FR_LUGR) // Ù
+// Row 4
+#define FR_LTEQ A(FR_LABK) // ≤
+#define FR_LSAQ A(FR_W) // ‹
+#define FR_AEQL A(FR_X) // ≈
+#define FR_COPY A(FR_C) // ©
+#define FR_LOZN A(FR_V) // ◊
+#define FR_SS A(FR_B) // ß
+#define FR_TILD A(FR_N) // ~ (dead)
+#define FR_INFN A(FR_COMM) // ∞
+#define FR_ELLP A(FR_SCLN) // …
+#define FR_DIV A(FR_COLN) // ÷
+#define FR_NEQL A(FR_EQL) // ≠
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ Ÿ │ ´ │ „ │ │ │ [ │ å │ » │ Û │ Á │ │ ] │ – │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ Å │ │ ‚ │ ™ │ │ ª │ ï │ │ ∏ │ │ ¥ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ Ω │ ∑ │ ∆ │ · │ fl │ Î │ Í │ Ë │ | │ Ó │ ‰ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≥ │ › │ ⁄ │ ¢ │ √ │ ∫ │ ı │ ¿ │ │ \ │ ± │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define FR_CYDI S(A(FR_AT)) // Ÿ
+#define FR_ACUT S(A(FR_AMPR)) // ´ (dead)
+#define FR_DLQU S(A(FR_LEAC)) // „
+#define FR_LBRC S(A(FR_LPRN)) // [
+#define FR_LARI S(A(FR_SECT)) // å
+#define FR_RDAQ S(A(FR_LEGR)) // »
+#define FR_CUCI S(A(FR_EXLM)) // Û
+#define FR_CAAC S(A(FR_LCCE)) // Á
+#define FR_RBRC S(A(FR_RPRN)) // ]
+#define FR_NDSH S(A(FR_MINS)) // –
+// Row 2
+#define FR_CARI S(A(FR_Z)) // Å
+#define FR_SLQU S(A(FR_R)) // ‚
+#define FR_TM S(A(FR_T)) // ™
+#define FR_FORD S(A(FR_U)) // ª
+#define FR_LIDI S(A(FR_I)) // ï
+#define FR_NARP S(A(FR_P)) // ∏
+#define FR_YEN S(A(FR_DLR)) // ¥
+// Row 3
+#define FR_OMEG S(A(FR_Q)) // Ω
+#define FR_NARS S(A(FR_S)) // ∑
+#define FR_INCR S(A(FR_D)) // ∆
+#define FR_MDDT S(A(FR_F)) // ·
+#define FR_FL S(A(FR_G)) // fl
+#define FR_CICI S(A(FR_H)) // Î
+#define FR_CIAC S(A(FR_J)) // Í
+#define FR_CEDI S(A(FR_K)) // Ë
+#define FR_PIPE S(A(FR_L)) // |
+#define FR_COAC S(A(FR_M)) // Ó
+#define FR_PERM S(A(FR_LUGR)) // ‰
+// Row 4
+#define FR_GTEQ S(A(FR_LABK)) // ≥
+#define FR_RSAQ S(A(FR_W)) // ›
+#define FR_FRSL S(A(FR_X)) // ⁄
+#define FR_CENT S(A(FR_C)) // ¢
+#define FR_SQRT S(A(FR_V)) // √
+#define FR_INTG S(A(FR_B)) // ∫
+#define FR_DLSI S(A(FR_N)) // ı
+#define FR_IQUE S(A(FR_COMM)) // ¿
+#define FR_BSLS S(A(FR_COLN)) // (backslash)
+#define FR_PLMN S(A(FR_EQL)) // ±
diff --git a/quantum/keymap_extras/keymap_french_osx.h b/quantum/keymap_extras/keymap_french_osx.h
deleted file mode 100644
index 590a57e55c..0000000000
--- a/quantum/keymap_extras/keymap_french_osx.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/* Copyright 2016 Sébastien Pérochon
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ @ │ & │ é │ " │ ' │ ( │ § │ è │ ! │ ç │ à │ ) │ - │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ A │ Z │ E │ R │ T │ Y │ U │ I │ O │ P │ ^ │ $ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ Q │ S │ D │ F │ G │ H │ J │ K │ L │ M │ ù │ ` │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ < │ W │ X │ C │ V │ B │ N │ , │ ; │ : │ = │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define FR_AT KC_GRV // @
-#define FR_AMPR KC_1 // &
-#define FR_LEAC KC_2 // é
-#define FR_DQUO KC_3 // "
-#define FR_QUOT KC_4 // '
-#define FR_LPRN KC_5 // (
-#define FR_SECT KC_6 // §
-#define FR_LEGR KC_7 // è
-#define FR_EXLM KC_8 // !
-#define FR_LCCE KC_9 // ç
-#define FR_LAGR KC_0 // à
-#define FR_RPRN KC_MINS // )
-#define FR_MINS KC_EQL // -
-// Row 2
-#define FR_A KC_Q // A
-#define FR_Z KC_W // Z
-#define FR_E KC_E // E
-#define FR_R KC_R // R
-#define FR_T KC_T // T
-#define FR_Y KC_Y // Y
-#define FR_U KC_U // U
-#define FR_I KC_I // I
-#define FR_O KC_O // O
-#define FR_P KC_P // P
-#define FR_CIRC KC_LBRC // ^
-#define FR_DLR KC_RBRC // $
-// Row 3
-#define FR_Q KC_A // Q
-#define FR_S KC_S // S
-#define FR_D KC_D // D
-#define FR_F KC_F // F
-#define FR_G KC_G // G
-#define FR_H KC_H // H
-#define FR_J KC_J // J
-#define FR_K KC_K // K
-#define FR_L KC_L // L
-#define FR_M KC_SCLN // M
-#define FR_LUGR KC_QUOT // ù
-#define FR_GRV KC_NUHS // `
-// Row 4
-#define FR_LABK KC_NUBS // <
-#define FR_W KC_Z // W
-#define FR_X KC_X // X
-#define FR_C KC_C // C
-#define FR_V KC_V // V
-#define FR_B KC_B // B
-#define FR_N KC_N // N
-#define FR_COMM KC_M // ,
-#define FR_SCLN KC_COMM // ;
-#define FR_COLN KC_DOT // :
-#define FR_EQL KC_SLSH // =
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ # │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ° │ _ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ ¨ │ * │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ % │ £ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ > │ │ │ │ │ │ │ ? │ . │ / │ + │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define FR_HASH S(FR_AT) // #
-#define FR_1 S(FR_AMPR) // 1
-#define FR_2 S(FR_LEAC) // 2
-#define FR_3 S(FR_DQUO) // 3
-#define FR_4 S(FR_QUOT) // 4
-#define FR_5 S(FR_LPRN) // 5
-#define FR_6 S(FR_SECT) // 6
-#define FR_7 S(FR_LEGR) // 7
-#define FR_8 S(FR_EXLM) // 8
-#define FR_9 S(FR_LCCE) // 9
-#define FR_0 S(FR_LAGR) // 0
-#define FR_DEG S(FR_RPRN) // °
-#define FR_UNDS S(FR_MINS) // _
-// Row 2
-#define FR_DIAE S(FR_CIRC) // ¨ (dead)
-#define FR_ASTR S(FR_DLR) // *
-// Row 3
-#define FR_PERC S(FR_LUGR) // %
-#define FR_PND S(FR_GRV) // £
-// Row 4
-#define FR_RABK S(FR_LABK) // >
-#define FR_QUES S(FR_COMM) // ?
-#define FR_DOT S(FR_SCLN) // .
-#define FR_SLSH S(FR_COLN) // /
-#define FR_PLUS S(FR_EQL) // +
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ • │ │ ë │ “ │ ‘ │ { │ ¶ │ « │ ¡ │ Ç │ Ø │ } │ — │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ Æ │  │ Ê │ ® │ † │ Ú │ º │ î │ Œ │ π │ Ô │ € │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ ‡ │ Ò │ ∂ │ ƒ │ fi │ Ì │ Ï │ È │ ¬ │ µ │ Ù │ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≤ │ ‹ │ ≈ │ © │ ◊ │ ß │ ~ │ ∞ │ … │ ÷ │ ≠ │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define FR_BULT A(FR_AT) // •
-#define FR_APPL A(FR_AMPR) // (Apple logo)
-#define FR_LEDI A(FR_LEAC) // ë
-#define FR_LDQU A(FR_DQUO) // “
-#define FR_LSQU A(FR_QUOT) // ‘
-#define FR_LCBR A(FR_LPRN) // {
-#define FR_PILC A(FR_SECT) // ¶
-#define FR_LDAQ A(FR_LEGR) // «
-#define FR_IEXL A(FR_EXLM) // ¡
-#define FR_CCCE A(FR_LCCE) // Ç
-#define FR_OSTR A(FR_LAGR) // Ø
-#define FR_RCBR A(FR_RPRN) // }
-#define FR_MDSH A(FR_MINS) // —
-// Row 2
-#define FR_AE A(FR_A) // Æ
-#define FR_CACI A(FR_Z) // Â
-#define FR_ECIR A(FR_E) // Ê
-#define FR_REGD A(FR_R) // ®
-#define FR_DAGG A(FR_T) // †
-#define FR_CUAC A(FR_Y) // Ú
-#define FR_MORD A(FR_U) // º
-#define FR_LICI A(FR_I) // î
-#define FR_OE A(FR_O) // Œ
-#define FR_PI A(FR_P) // π
-#define FR_OCIR A(FR_CIRC) // Ô
-#define FR_EURO A(FR_DLR) // €
-// Row 3
-#define FR_DDAG A(FR_Q) // ‡
-#define FR_COGR A(FR_S) // Ò
-#define FR_PDIF A(FR_D) // ∂
-#define FR_FHK A(FR_F) // ƒ
-#define FR_FI A(FR_G) // fi
-#define FR_CIGR A(FR_H) // Ì
-#define FR_CIDI A(FR_J) // Ï
-#define FR_CEGR A(FR_K) // È
-#define FR_NOT A(FR_L) // ¬
-#define FR_MICR A(FR_M) // µ
-#define FR_CUGR A(FR_LUGR) // Ù
-// Row 4
-#define FR_LTEQ A(FR_LABK) // ≤
-#define FR_LSAQ A(FR_W) // ‹
-#define FR_AEQL A(FR_X) // ≈
-#define FR_COPY A(FR_C) // ©
-#define FR_LOZN A(FR_V) // ◊
-#define FR_SS A(FR_B) // ß
-#define FR_TILD A(FR_N) // ~ (dead)
-#define FR_INFN A(FR_COMM) // ∞
-#define FR_ELLP A(FR_SCLN) // …
-#define FR_DIV A(FR_COLN) // ÷
-#define FR_NEQL A(FR_EQL) // ≠
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ Ÿ │ ´ │ „ │ │ │ [ │ å │ » │ Û │ Á │ │ ] │ – │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ Å │ │ ‚ │ ™ │ │ ª │ ï │ │ ∏ │ │ ¥ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ Ω │ ∑ │ ∆ │ · │ fl │ Î │ Í │ Ë │ | │ Ó │ ‰ │ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≥ │ › │ ⁄ │ ¢ │ √ │ ∫ │ ı │ ¿ │ │ \ │ ± │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define FR_CYDI S(A(FR_AT)) // Ÿ
-#define FR_ACUT S(A(FR_AMPR)) // ´ (dead)
-#define FR_DLQU S(A(FR_LEAC)) // „
-#define FR_LBRC S(A(FR_LPRN)) // [
-#define FR_LARI S(A(FR_SECT)) // å
-#define FR_RDAQ S(A(FR_LEGR)) // »
-#define FR_CUCI S(A(FR_EXLM)) // Û
-#define FR_CAAC S(A(FR_LCCE)) // Á
-#define FR_RBRC S(A(FR_RPRN)) // ]
-#define FR_NDSH S(A(FR_MINS)) // –
-// Row 2
-#define FR_CARI S(A(FR_Z)) // Å
-#define FR_SLQU S(A(FR_R)) // ‚
-#define FR_TM S(A(FR_T)) // ™
-#define FR_FORD S(A(FR_U)) // ª
-#define FR_LIDI S(A(FR_I)) // ï
-#define FR_NARP S(A(FR_P)) // ∏
-#define FR_YEN S(A(FR_DLR)) // ¥
-// Row 3
-#define FR_OMEG S(A(FR_Q)) // Ω
-#define FR_NARS S(A(FR_S)) // ∑
-#define FR_INCR S(A(FR_D)) // ∆
-#define FR_MDDT S(A(FR_F)) // ·
-#define FR_FL S(A(FR_G)) // fl
-#define FR_CICI S(A(FR_H)) // Î
-#define FR_CIAC S(A(FR_J)) // Í
-#define FR_CEDI S(A(FR_K)) // Ë
-#define FR_PIPE S(A(FR_L)) // |
-#define FR_COAC S(A(FR_M)) // Ó
-#define FR_PERM S(A(FR_LUGR)) // ‰
-// Row 4
-#define FR_GTEQ S(A(FR_LABK)) // ≥
-#define FR_RSAQ S(A(FR_W)) // ›
-#define FR_FRSL S(A(FR_X)) // ⁄
-#define FR_CENT S(A(FR_C)) // ¢
-#define FR_SQRT S(A(FR_V)) // √
-#define FR_INTG S(A(FR_B)) // ∫
-#define FR_DLSI S(A(FR_N)) // ı
-#define FR_IQUE S(A(FR_COMM)) // ¿
-#define FR_BSLS S(A(FR_COLN)) // (backslash)
-#define FR_PLMN S(A(FR_EQL)) // ±
diff --git a/quantum/keymap_extras/keymap_german_ch.h b/quantum/keymap_extras/keymap_german_ch.h
deleted file mode 100644
index 6723836870..0000000000
--- a/quantum/keymap_extras/keymap_german_ch.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/* Copyright 2016 heartsekai
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-#ifdef CH_H
-// The ChibiOS ch.h file defines this...
-# undef CH_H
-#endif
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ^ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ü │ ¨ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ö │ ä │ $ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define CH_SECT KC_GRV // §
-#define CH_1 KC_1 // 1
-#define CH_2 KC_2 // 2
-#define CH_3 KC_3 // 3
-#define CH_4 KC_4 // 4
-#define CH_5 KC_5 // 5
-#define CH_6 KC_6 // 6
-#define CH_7 KC_7 // 7
-#define CH_8 KC_8 // 8
-#define CH_9 KC_9 // 9
-#define CH_0 KC_0 // 0
-#define CH_QUOT KC_MINS // '
-#define CH_CIRC KC_EQL // ^ (dead)
-// Row 2
-#define CH_Q KC_Q // Q
-#define CH_W KC_W // W
-#define CH_E KC_E // E
-#define CH_R KC_R // R
-#define CH_T KC_T // T
-#define CH_Z KC_Y // Z
-#define CH_U KC_U // U
-#define CH_I KC_I // I
-#define CH_O KC_O // O
-#define CH_P KC_P // P
-#define CH_UDIA KC_LBRC // ü
-#define CH_DIAE KC_RBRC // ¨ (dead)
-// Row 3
-#define CH_A KC_A // A
-#define CH_S KC_S // S
-#define CH_D KC_D // D
-#define CH_F KC_F // F
-#define CH_G KC_G // G
-#define CH_H KC_H // H
-#define CH_J KC_J // J
-#define CH_K KC_K // K
-#define CH_L KC_L // L
-#define CH_ODIA KC_SCLN // ö
-#define CH_ADIA KC_QUOT // ä
-#define CH_DLR KC_NUHS // $
-// Row 4
-#define CH_LABK KC_NUBS // <
-#define CH_Y KC_Z // Y
-#define CH_X KC_X // X
-#define CH_C KC_C // C
-#define CH_V KC_V // V
-#define CH_B KC_B // B
-#define CH_N KC_N // N
-#define CH_M KC_M // M
-#define CH_COMM KC_COMM // ,
-#define CH_DOT KC_DOT // .
-#define CH_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ ° │ + │ " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ │ │ │ │ │ │ │ │ è │ ! │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ é │ à │ £ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define CH_DEG S(CH_SECT) // °
-#define CH_PLUS S(CH_1) // +
-#define CH_DQUO S(CH_2) // "
-#define CH_ASTR S(CH_3) // *
-#define CH_CCED S(CH_4) // ç
-#define CH_PERC S(CH_5) // %
-#define CH_AMPR S(CH_6) // &
-#define CH_SLSH S(CH_7) // /
-#define CH_LPRN S(CH_8) // (
-#define CH_RPRN S(CH_9) // )
-#define CH_EQL S(CH_0) // =
-#define CH_QUES S(CH_QUOT) // ?
-#define CH_GRV S(CH_CIRC) // ` (dead)
-// Row 2
-#define CH_EGRV S(CH_UDIA) // è
-#define CH_EXLM S(CH_DIAE) // !
-// Row 3
-#define CH_EACU S(CH_ODIA) // é
-#define CH_AGRV S(CH_ADIA) // à
-#define CH_PND S(CH_DLR) // £
-// Row 4
-#define CH_RABK S(CH_LABK) // >
-#define CH_SCLN S(CH_COMM) // ;
-#define CH_COLN S(CH_DOT) // :
-#define CH_UNDS S(CH_MINS) // _
-
-/* AltGr symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ │ ¦ │ @ │ # │ │ │ ¬ │ | │ ¢ │ │ │ ´ │ ~ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
- * │ │ \ │ │ │ │ │ │ │ │ │ │ │ │
- * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │ │ │ │ │ │ │ │ │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
-// Row 1
-#define CH_BRKP ALGR(CH_1) // ¦
-#define CH_AT ALGR(CH_2) // @
-#define CH_HASH ALGR(CH_3) // #
-#define CH_NOT ALGR(CH_6) // ¬
-#define CH_PIPE ALGR(CH_7) // |
-#define CH_CENT ALGR(CH_8) // ¢
-#define CH_ACUT ALGR(CH_QUOT) // ´ (dead)
-#define CH_TILD ALGR(CH_CIRC) // ~ (dead)
-// Row 2
-#define CH_EURO ALGR(CH_E) // €
-#define CH_LBRC ALGR(CH_UDIA) // [
-#define CH_RBRC ALGR(CH_DIAE) // ]
-// Row 3
-#define CH_LCBR ALGR(CH_ADIA) // {
-#define CH_RCBR ALGR(CH_DLR) // }
-// Row 4
-#define CH_BSLS ALGR(CH_LABK) // (backslash)
diff --git a/quantum/keymap_extras/keymap_german_mac_iso.h b/quantum/keymap_extras/keymap_german_mac_iso.h
new file mode 100644
index 0000000000..82404fa5fd
--- /dev/null
+++ b/quantum/keymap_extras/keymap_german_mac_iso.h
@@ -0,0 +1,243 @@
+/* Copyright 2016 Stephen Bösebeck
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define DE_CIRC KC_GRV // ^ (dead)
+#define DE_1 KC_1 // 1
+#define DE_2 KC_2 // 2
+#define DE_3 KC_3 // 3
+#define DE_4 KC_4 // 4
+#define DE_5 KC_5 // 5
+#define DE_6 KC_6 // 6
+#define DE_7 KC_7 // 7
+#define DE_8 KC_8 // 8
+#define DE_9 KC_9 // 9
+#define DE_0 KC_0 // 0
+#define DE_SS KC_MINS // ß
+#define DE_ACUT KC_EQL // ´ (dead)
+// Row 2
+#define DE_Q KC_Q // Q
+#define DE_W KC_W // W
+#define DE_E KC_E // E
+#define DE_R KC_R // R
+#define DE_T KC_T // T
+#define DE_Z KC_Y // Z
+#define DE_U KC_U // U
+#define DE_I KC_I // I
+#define DE_O KC_O // O
+#define DE_P KC_P // P
+#define DE_UDIA KC_LBRC // Ü
+#define DE_PLUS KC_RBRC // +
+// Row 3
+#define DE_A KC_A // A
+#define DE_S KC_S // S
+#define DE_D KC_D // D
+#define DE_F KC_F // F
+#define DE_G KC_G // G
+#define DE_H KC_H // H
+#define DE_J KC_J // J
+#define DE_K KC_K // K
+#define DE_L KC_L // L
+#define DE_ODIA KC_SCLN // Ö
+#define DE_ADIA KC_QUOT // Ä
+#define DE_HASH KC_NUHS // #
+// Row 4
+#define DE_LABK KC_NUBS // <
+#define DE_Y KC_Z // Y
+#define DE_X KC_X // X
+#define DE_C KC_C // C
+#define DE_V KC_V // V
+#define DE_B KC_B // B
+#define DE_N KC_N // N
+#define DE_M KC_M // M
+#define DE_COMM KC_COMM // ,
+#define DE_DOT KC_DOT // .
+#define DE_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ ' │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define DE_DEG S(DE_CIRC) // °
+#define DE_EXLM S(DE_1) // !
+#define DE_DQUO S(DE_2) // "
+#define DE_SECT S(DE_3) // §
+#define DE_DLR S(DE_4) // $
+#define DE_PERC S(DE_5) // %
+#define DE_AMPR S(DE_6) // &
+#define DE_SLSH S(DE_7) // /
+#define DE_LPRN S(DE_8) // (
+#define DE_RPRN S(DE_9) // )
+#define DE_EQL S(DE_0) // =
+#define DE_QUES S(DE_SS) // ?
+#define DE_GRV S(DE_ACUT) // ` (dead)
+// Row 2
+#define DE_ASTR S(DE_PLUS) // *
+// Row 3
+#define DE_QUOT S(DE_HASH) // '
+// Row 4
+#define DE_RABK S(DE_LABK) // >
+#define DE_SCLN S(DE_COMM) // ;
+#define DE_COLN S(DE_DOT) // :
+#define DE_UNDS S(DE_MINS) // _
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ „ │ ¡ │ “ │ ¶ │ ¢ │ [ │ ] │ | │ { │ } │ ≠ │ ¿ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ « │ ∑ │ € │ ® │ † │ Ω │ ¨ │ ⁄ │ Ø │ π │ • │ ± │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ Å │ ‚ │ ∂ │ ƒ │ © │ ª │ º │ ∆ │ @ │ Œ │ Æ │ ‘ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≤ │ ¥ │ ≈ │ Ç │ √ │ ∫ │ ~ │ µ │ ∞ │ … │ – │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define DE_DLQU A(DE_CIRC) // „
+#define DE_IEXL A(DE_1) // ¡
+#define DE_LDQU A(DE_2) // “
+#define DE_PILC A(DE_3) // ¶
+#define DE_CENT A(DE_4) // ¢
+#define DE_LBRC A(DE_5) // [
+#define DE_RBRC A(DE_6) // ]
+#define DE_PIPE A(DE_7) // |
+#define DE_LCBR A(DE_8) // {
+#define DE_RCBR A(DE_9) // }
+#define DE_NEQL A(DE_0) // ≠
+#define DE_IQUE A(DE_SS) // ¿
+// Row 2
+#define DE_LDAQ A(DE_Q) // «
+#define DE_NARS A(DE_W) // ∑
+#define DE_EURO A(DE_E) // €
+#define DE_REGD A(DE_R) // ®
+#define DE_DAGG A(DE_T) // †
+#define DE_OMEG A(DE_Z) // Ω
+#define DE_DIAE A(DE_U) // ¨ (dead)
+#define DE_FRSL A(DE_I) // ⁄
+#define DE_OSTR A(DE_O) // Ø
+#define DE_PI A(DE_P) // π
+#define DE_BULT A(DE_UDIA) // •
+#define DE_PLMN A(DE_PLUS) // ±
+// Row 3
+#define DE_ARNG A(DE_A) // Å
+#define DE_SLQU A(DE_S) // ‚
+#define DE_PDIF A(DE_D) // ∂
+#define DE_FHK A(DE_F) // ƒ
+#define DE_COPY A(DE_G) // ©
+#define DE_FORD A(DE_H) // ª
+#define DE_MORD A(DE_J) // º
+#define DE_INCR A(DE_K) // ∆
+#define DE_AT A(DE_L) // @
+#define DE_OE A(DE_ODIA) // Œ
+#define DE_AE A(DE_ADIA) // Æ
+#define DE_LSQU A(DE_HASH) // ‘
+// Row 4
+#define DE_LTEQ A(DE_LABK) // ≤
+#define DE_YEN A(DE_Y) // ¥
+#define DE_AEQL A(DE_X) // ≈
+#define DE_CCCE A(DE_C) // Ç
+#define DE_SQRT A(DE_V) // √
+#define DE_INTG A(DE_B) // ∫
+#define DE_TILD A(DE_N) // ~ (dead)
+#define DE_MICR A(DE_M) // µ
+#define DE_INFN A(DE_COMM) // ∞
+#define DE_ELLP A(DE_DOT) // …
+#define DE_NDSH A(DE_MINS) // –
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ │ ¬ │ ” │ │ £ │ fi │ │ \ │ ˜ │ · │ ¯ │ ˙ │ ˚ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ » │ │ ‰ │ ¸ │ ˝ │ ˇ │ Á │ Û │ │ ∏ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ Í │ ™ │ Ï │ Ì │ Ó │ ı │ │ fl │ │ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≥ │ ‡ │ Ù │ │ ◊ │ ‹ │ › │ ˘ │ ˛ │ ÷ │ — │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define DE_NOT S(A(DE_1)) // ¬
+#define DE_RDQU S(A(DE_2)) // ”
+#define DE_PND S(A(DE_4)) // £
+#define DE_FI S(A(DE_5)) // fi
+#define DE_BSLS S(A(DE_7)) // (backslash)
+#define DE_STIL S(A(DE_8)) // ˜
+#define DE_MDDT S(A(DE_9)) // ·
+#define DE_MACR S(A(DE_0)) // ¯
+#define DE_DOTA S(A(DE_SS)) // ˙
+#define DE_RNGA S(A(DE_ACUT)) // ˚
+// Row 2
+#define DE_RDAQ S(A(DE_Q)) // »
+#define DE_PERM S(A(DE_E)) // ‰
+#define DE_CEDL S(A(DE_R)) // ¸
+#define DE_DACU S(A(DE_T)) // ˝
+#define DE_CARN S(A(DE_Z)) // ˇ
+#define DE_AACU S(A(DE_U)) // Á
+#define DE_UCIR S(A(DE_I)) // Û
+#define DE_NARP S(A(DE_P)) // ∏
+#define DE_APPL S(A(DE_PLUS)) // (Apple logo)
+// Row 3
+#define DE_IACU S(A(DE_S)) // Í
+#define DE_TM S(A(DE_D)) // ™
+#define DE_IDIA S(A(DE_F)) // Ï
+#define DE_IGRV S(A(DE_G)) // Ì
+#define DE_OACU S(A(DE_H)) // Ó
+#define DE_DLSI S(A(DE_J)) // ı
+#define DE_FL S(A(DE_L)) // fl
+// Row 4
+#define DE_GTEQ S(A(DE_LABK)) // ≥
+#define DE_DDAG S(A(DE_Y)) // ‡
+#define DE_UGRV S(A(DE_X)) // Ù
+#define DE_LOZN S(A(DE_V)) // ◊
+#define DE_LSAQ S(A(DE_B)) // ‹
+#define DE_RSAQ S(A(DE_N)) // ›
+#define DE_BREV S(A(DE_M)) // ˘
+#define DE_OGON S(A(DE_COMM)) // ˛
+#define DE_DIV S(A(DE_DOT)) // ÷
+#define DE_MDSH S(A(DE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_german_osx.h b/quantum/keymap_extras/keymap_german_osx.h
deleted file mode 100644
index 82404fa5fd..0000000000
--- a/quantum/keymap_extras/keymap_german_osx.h
+++ /dev/null
@@ -1,243 +0,0 @@
-/* Copyright 2016 Stephen Bösebeck
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ^ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ß │ ´ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ Ü │ + │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Ö │ Ä │ # │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define DE_CIRC KC_GRV // ^ (dead)
-#define DE_1 KC_1 // 1
-#define DE_2 KC_2 // 2
-#define DE_3 KC_3 // 3
-#define DE_4 KC_4 // 4
-#define DE_5 KC_5 // 5
-#define DE_6 KC_6 // 6
-#define DE_7 KC_7 // 7
-#define DE_8 KC_8 // 8
-#define DE_9 KC_9 // 9
-#define DE_0 KC_0 // 0
-#define DE_SS KC_MINS // ß
-#define DE_ACUT KC_EQL // ´ (dead)
-// Row 2
-#define DE_Q KC_Q // Q
-#define DE_W KC_W // W
-#define DE_E KC_E // E
-#define DE_R KC_R // R
-#define DE_T KC_T // T
-#define DE_Z KC_Y // Z
-#define DE_U KC_U // U
-#define DE_I KC_I // I
-#define DE_O KC_O // O
-#define DE_P KC_P // P
-#define DE_UDIA KC_LBRC // Ü
-#define DE_PLUS KC_RBRC // +
-// Row 3
-#define DE_A KC_A // A
-#define DE_S KC_S // S
-#define DE_D KC_D // D
-#define DE_F KC_F // F
-#define DE_G KC_G // G
-#define DE_H KC_H // H
-#define DE_J KC_J // J
-#define DE_K KC_K // K
-#define DE_L KC_L // L
-#define DE_ODIA KC_SCLN // Ö
-#define DE_ADIA KC_QUOT // Ä
-#define DE_HASH KC_NUHS // #
-// Row 4
-#define DE_LABK KC_NUBS // <
-#define DE_Y KC_Z // Y
-#define DE_X KC_X // X
-#define DE_C KC_C // C
-#define DE_V KC_V // V
-#define DE_B KC_B // B
-#define DE_N KC_N // N
-#define DE_M KC_M // M
-#define DE_COMM KC_COMM // ,
-#define DE_DOT KC_DOT // .
-#define DE_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ° │ ! │ " │ § │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ │ ' │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define DE_DEG S(DE_CIRC) // °
-#define DE_EXLM S(DE_1) // !
-#define DE_DQUO S(DE_2) // "
-#define DE_SECT S(DE_3) // §
-#define DE_DLR S(DE_4) // $
-#define DE_PERC S(DE_5) // %
-#define DE_AMPR S(DE_6) // &
-#define DE_SLSH S(DE_7) // /
-#define DE_LPRN S(DE_8) // (
-#define DE_RPRN S(DE_9) // )
-#define DE_EQL S(DE_0) // =
-#define DE_QUES S(DE_SS) // ?
-#define DE_GRV S(DE_ACUT) // ` (dead)
-// Row 2
-#define DE_ASTR S(DE_PLUS) // *
-// Row 3
-#define DE_QUOT S(DE_HASH) // '
-// Row 4
-#define DE_RABK S(DE_LABK) // >
-#define DE_SCLN S(DE_COMM) // ;
-#define DE_COLN S(DE_DOT) // :
-#define DE_UNDS S(DE_MINS) // _
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ „ │ ¡ │ “ │ ¶ │ ¢ │ [ │ ] │ | │ { │ } │ ≠ │ ¿ │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ « │ ∑ │ € │ ® │ † │ Ω │ ¨ │ ⁄ │ Ø │ π │ • │ ± │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ Å │ ‚ │ ∂ │ ƒ │ © │ ª │ º │ ∆ │ @ │ Œ │ Æ │ ‘ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≤ │ ¥ │ ≈ │ Ç │ √ │ ∫ │ ~ │ µ │ ∞ │ … │ – │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define DE_DLQU A(DE_CIRC) // „
-#define DE_IEXL A(DE_1) // ¡
-#define DE_LDQU A(DE_2) // “
-#define DE_PILC A(DE_3) // ¶
-#define DE_CENT A(DE_4) // ¢
-#define DE_LBRC A(DE_5) // [
-#define DE_RBRC A(DE_6) // ]
-#define DE_PIPE A(DE_7) // |
-#define DE_LCBR A(DE_8) // {
-#define DE_RCBR A(DE_9) // }
-#define DE_NEQL A(DE_0) // ≠
-#define DE_IQUE A(DE_SS) // ¿
-// Row 2
-#define DE_LDAQ A(DE_Q) // «
-#define DE_NARS A(DE_W) // ∑
-#define DE_EURO A(DE_E) // €
-#define DE_REGD A(DE_R) // ®
-#define DE_DAGG A(DE_T) // †
-#define DE_OMEG A(DE_Z) // Ω
-#define DE_DIAE A(DE_U) // ¨ (dead)
-#define DE_FRSL A(DE_I) // ⁄
-#define DE_OSTR A(DE_O) // Ø
-#define DE_PI A(DE_P) // π
-#define DE_BULT A(DE_UDIA) // •
-#define DE_PLMN A(DE_PLUS) // ±
-// Row 3
-#define DE_ARNG A(DE_A) // Å
-#define DE_SLQU A(DE_S) // ‚
-#define DE_PDIF A(DE_D) // ∂
-#define DE_FHK A(DE_F) // ƒ
-#define DE_COPY A(DE_G) // ©
-#define DE_FORD A(DE_H) // ª
-#define DE_MORD A(DE_J) // º
-#define DE_INCR A(DE_K) // ∆
-#define DE_AT A(DE_L) // @
-#define DE_OE A(DE_ODIA) // Œ
-#define DE_AE A(DE_ADIA) // Æ
-#define DE_LSQU A(DE_HASH) // ‘
-// Row 4
-#define DE_LTEQ A(DE_LABK) // ≤
-#define DE_YEN A(DE_Y) // ¥
-#define DE_AEQL A(DE_X) // ≈
-#define DE_CCCE A(DE_C) // Ç
-#define DE_SQRT A(DE_V) // √
-#define DE_INTG A(DE_B) // ∫
-#define DE_TILD A(DE_N) // ~ (dead)
-#define DE_MICR A(DE_M) // µ
-#define DE_INFN A(DE_COMM) // ∞
-#define DE_ELLP A(DE_DOT) // …
-#define DE_NDSH A(DE_MINS) // –
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ │ ¬ │ ” │ │ £ │ fi │ │ \ │ ˜ │ · │ ¯ │ ˙ │ ˚ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ » │ │ ‰ │ ¸ │ ˝ │ ˇ │ Á │ Û │ │ ∏ │ │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ Í │ ™ │ Ï │ Ì │ Ó │ ı │ │ fl │ │ │ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≥ │ ‡ │ Ù │ │ ◊ │ ‹ │ › │ ˘ │ ˛ │ ÷ │ — │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define DE_NOT S(A(DE_1)) // ¬
-#define DE_RDQU S(A(DE_2)) // ”
-#define DE_PND S(A(DE_4)) // £
-#define DE_FI S(A(DE_5)) // fi
-#define DE_BSLS S(A(DE_7)) // (backslash)
-#define DE_STIL S(A(DE_8)) // ˜
-#define DE_MDDT S(A(DE_9)) // ·
-#define DE_MACR S(A(DE_0)) // ¯
-#define DE_DOTA S(A(DE_SS)) // ˙
-#define DE_RNGA S(A(DE_ACUT)) // ˚
-// Row 2
-#define DE_RDAQ S(A(DE_Q)) // »
-#define DE_PERM S(A(DE_E)) // ‰
-#define DE_CEDL S(A(DE_R)) // ¸
-#define DE_DACU S(A(DE_T)) // ˝
-#define DE_CARN S(A(DE_Z)) // ˇ
-#define DE_AACU S(A(DE_U)) // Á
-#define DE_UCIR S(A(DE_I)) // Û
-#define DE_NARP S(A(DE_P)) // ∏
-#define DE_APPL S(A(DE_PLUS)) // (Apple logo)
-// Row 3
-#define DE_IACU S(A(DE_S)) // Í
-#define DE_TM S(A(DE_D)) // ™
-#define DE_IDIA S(A(DE_F)) // Ï
-#define DE_IGRV S(A(DE_G)) // Ì
-#define DE_OACU S(A(DE_H)) // Ó
-#define DE_DLSI S(A(DE_J)) // ı
-#define DE_FL S(A(DE_L)) // fl
-// Row 4
-#define DE_GTEQ S(A(DE_LABK)) // ≥
-#define DE_DDAG S(A(DE_Y)) // ‡
-#define DE_UGRV S(A(DE_X)) // Ù
-#define DE_LOZN S(A(DE_V)) // ◊
-#define DE_LSAQ S(A(DE_B)) // ‹
-#define DE_RSAQ S(A(DE_N)) // ›
-#define DE_BREV S(A(DE_M)) // ˘
-#define DE_OGON S(A(DE_COMM)) // ˛
-#define DE_DIV S(A(DE_DOT)) // ÷
-#define DE_MDSH S(A(DE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_italian_mac_ansi.h b/quantum/keymap_extras/keymap_italian_mac_ansi.h
new file mode 100644
index 0000000000..c2b8e3cad6
--- /dev/null
+++ b/quantum/keymap_extras/keymap_italian_mac_ansi.h
@@ -0,0 +1,250 @@
+/* Copyright 2015-2016 Matthias Schmidtt
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ < │ 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 │ , │ . │ - │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define IT_LABK KC_GRV // <
+#define IT_1 KC_1 // 1
+#define IT_2 KC_2 // 2
+#define IT_3 KC_3 // 3
+#define IT_4 KC_4 // 4
+#define IT_5 KC_5 // 5
+#define IT_6 KC_6 // 6
+#define IT_7 KC_7 // 7
+#define IT_8 KC_8 // 8
+#define IT_9 KC_9 // 9
+#define IT_0 KC_0 // 0
+#define IT_QUOT KC_MINS // '
+#define IT_IGRV KC_EQL // ì
+// Row 2
+#define IT_Q KC_Q // Q
+#define IT_W KC_W // W
+#define IT_E KC_E // E
+#define IT_R KC_R // R
+#define IT_T KC_T // T
+#define IT_Y KC_Y // Y
+#define IT_U KC_U // U
+#define IT_I KC_I // I
+#define IT_O KC_O // O
+#define IT_P KC_P // P
+#define IT_EGRV KC_LBRC // è
+#define IT_PLUS KC_RBRC // +
+#define IT_UGRV KC_BSLS // ù
+// Row 3
+#define IT_A KC_A // A
+#define IT_S KC_S // S
+#define IT_D KC_D // D
+#define IT_F KC_F // F
+#define IT_G KC_G // G
+#define IT_H KC_H // H
+#define IT_J KC_J // J
+#define IT_K KC_K // K
+#define IT_L KC_L // L
+#define IT_OGRV KC_SCLN // ò
+#define IT_AGRV KC_QUOT // à
+// Row 4
+#define IT_BSLS KC_NUBS // (backslash, not physically present)
+#define IT_Z KC_Z // Z
+#define IT_X KC_X // X
+#define IT_C KC_C // C
+#define IT_V KC_V // V
+#define IT_B KC_B // B
+#define IT_N KC_N // N
+#define IT_M KC_M // M
+#define IT_COMM KC_COMM // ,
+#define IT_DOT KC_DOT // .
+#define IT_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ > │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ § │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define IT_RABK S(IT_LABK) // >
+#define IT_EXLM S(IT_1) // !
+#define IT_DQUO S(IT_2) // "
+#define IT_PND S(IT_3) // £
+#define IT_DLR S(IT_4) // $
+#define IT_PERC S(IT_5) // %
+#define IT_AMPR S(IT_6) // &
+#define IT_SLSH S(IT_7) // /
+#define IT_LPRN S(IT_8) // (
+#define IT_RPRN S(IT_9) // )
+#define IT_EQL S(IT_0) // =
+#define IT_QUES S(IT_QUOT) // ?
+#define IT_CIRC S(IT_IGRV) // ^
+// Row 2
+#define IT_EACU S(IT_EGRV) // é
+#define IT_ASTR S(IT_PLUS) // *
+#define IT_SECT S(IT_UGRV) // §
+// Row 3
+#define IT_LCCE S(IT_OGRV) // ç
+#define IT_DEG S(IT_AGRV) // °
+// Row 4
+#define IT_PIPE S(IT_BSLS) // | (not physically present)
+#define IT_SCLN S(IT_COMM) // ;
+#define IT_COLN S(IT_DOT) // :
+#define IT_UNDS S(IT_MINS) // _
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ≤ │ « │ “ │ ‘ │ ¥ │ ~ │ ‹ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ ¶ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ – │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define IT_LTEQ A(IT_LABK) // ≤
+#define IT_LDAQ A(IT_1) // «
+#define IT_LDQU A(IT_2) // “
+#define IT_LSQU A(IT_3) // ‘
+#define IT_YEN A(IT_4) // ¥
+#define IT_TILD A(IT_5) // ~
+#define IT_LSAQ A(IT_6) // ‹
+#define IT_DIV A(IT_7) // ÷
+#define IT_ACUT A(IT_8) // ´ (dead)
+#define IT_DGRV A(IT_9) // ` (dead)
+#define IT_NEQL A(IT_0) // ≠
+#define IT_IEXL A(IT_QUOT) // ¡
+#define IT_DCIR A(IT_IGRV) // ˆ (dead)
+// Row 2
+#define IT_DLQU A(IT_Q) // „
+#define IT_OMEG A(IT_W) // Ω
+#define IT_EURO A(IT_E) // €
+#define IT_REGD A(IT_R) // ®
+#define IT_TM A(IT_T) // ™
+#define IT_AE A(IT_Y) // Æ
+#define IT_DIAE A(IT_U) // ¨ (dead)
+#define IT_OE A(IT_I) // Œ
+#define IT_OSTR A(IT_O) // Ø
+#define IT_PI A(IT_P) // π
+#define IT_LBRC A(IT_EGRV) // [
+#define IT_RBRC A(IT_PLUS) // ]
+// Row 3
+#define IT_ARNG A(IT_A) // Å
+#define IT_SS A(IT_S) // ß
+#define IT_PDIF A(IT_D) // ∂
+#define IT_FHK A(IT_F) // ƒ
+#define IT_INFN A(IT_G) // ∞
+#define IT_INCR A(IT_H) // ∆
+#define IT_FORD A(IT_J) // ª
+#define IT_MORD A(IT_K) // º
+#define IT_NOT A(IT_L) // ¬
+#define IT_AT A(IT_OGRV) // @
+#define IT_HASH A(IT_AGRV) // #
+#define IT_PILC A(IT_UGRV) // ¶
+// Row 4
+#define IT_GRV A(IT_BSLS) // ` (not physically present)
+#define IT_NARS A(IT_Z) // ∑
+#define IT_DAGG A(IT_X) // †
+#define IT_COPY A(IT_C) // ©
+#define IT_SQRT A(IT_V) // √
+#define IT_INTG A(IT_B) // ∫
+#define IT_STIL A(IT_N) // ˜ (dead)
+#define IT_MICR A(IT_M) // µ
+#define IT_ELLP A(IT_COMM) // …
+#define IT_BULT A(IT_DOT) // •
+#define IT_NDSH A(IT_MINS) // –
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ≥ │ » │ ” │ ’ │ ¢ │ ‰ │ › │ ⁄ │ │ │ ≈ │ ¿ │ ± │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ ‚ │ À │ È │ Ì │ Ò │ │ Ù │ │ │ ∏ │ { │ } │ ◊ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ ∞ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ │ ‡ │ Á │ É │ Í │ Ó │ Ú │ │ · │ — │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define IT_GTEQ S(A(IT_LABK)) // ≥
+#define IT_RDAQ S(A(IT_1)) // »
+#define IT_RDQU S(A(IT_2)) // ”
+#define IT_RSQU S(A(IT_3)) // ’
+#define IT_CENT S(A(IT_4)) // ¢
+#define IT_PERM S(A(IT_5)) // ‰
+#define IT_RSAQ S(A(IT_6)) // ›
+#define IT_FRSL S(A(IT_7)) // ⁄
+#define IT_APPL S(A(IT_8)) // (Apple logo)
+#define IT_AEQL S(A(IT_0)) // ≈
+#define IT_IQUE S(A(IT_QUOT)) // ¿
+#define IT_PLMN S(A(IT_IGRV)) // ±
+// Row 2
+#define IT_SLQU S(A(IT_Q)) // ‚
+#define IT_CAGR S(A(IT_W)) // À
+#define IT_CEGR S(A(IT_E)) // È
+#define IT_CIGR S(A(IT_R)) // Ì
+#define IT_COGR S(A(IT_T)) // Ò
+#define IT_CUGR S(A(IT_U)) // Ù
+#define IT_NARP S(A(IT_P)) // ∏
+#define IT_LCBR S(A(IT_EGRV)) // {
+#define IT_RCBR S(A(IT_PLUS)) // }
+#define IT_LOZN S(A(IT_UGRV)) // ◊
+// Row 3
+#define IT_MACR S(A(IT_S)) // ¯
+#define IT_BREV S(A(IT_D)) // ˘
+#define IT_DOTA S(A(IT_F)) // ˙
+#define IT_RGNA S(A(IT_G)) // ˚
+#define IT_CEDL S(A(IT_H)) // ¸
+#define IT_DACU S(A(IT_J)) // ˝
+#define IT_OGON S(A(IT_K)) // ˛
+#define IT_CARN S(A(IT_L)) // ˇ
+#define IT_CCCE S(A(IT_OGRV)) // Ç
+// Row 4
+#define IT_DDAG S(A(IT_X)) // ‡
+#define IT_CAAC S(A(IT_C)) // Á
+#define IT_CEAC S(A(IT_V)) // É
+#define IT_CIAC S(A(IT_B)) // Í
+#define IT_COAC S(A(IT_N)) // Ó
+#define IT_CUAC S(A(IT_M)) // Ú
+#define IT_MDDT S(A(IT_DOT)) // ·
+#define IT_MDSH S(A(IT_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_italian_mac_iso.h b/quantum/keymap_extras/keymap_italian_mac_iso.h
new file mode 100644
index 0000000000..61f76ddba7
--- /dev/null
+++ b/quantum/keymap_extras/keymap_italian_mac_iso.h
@@ -0,0 +1,251 @@
+/* Copyright 2015-2016 Matthias Schmidtt
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ \ │ 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 │ , │ . │ - │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define IT_BSLS KC_GRV // (backslash)
+#define IT_1 KC_1 // 1
+#define IT_2 KC_2 // 2
+#define IT_3 KC_3 // 3
+#define IT_4 KC_4 // 4
+#define IT_5 KC_5 // 5
+#define IT_6 KC_6 // 6
+#define IT_7 KC_7 // 7
+#define IT_8 KC_8 // 8
+#define IT_9 KC_9 // 9
+#define IT_0 KC_0 // 0
+#define IT_QUOT KC_MINS // '
+#define IT_IGRV KC_EQL // ì
+// Row 2
+#define IT_Q KC_Q // Q
+#define IT_W KC_W // W
+#define IT_E KC_E // E
+#define IT_R KC_R // R
+#define IT_T KC_T // T
+#define IT_Y KC_Y // Y
+#define IT_U KC_U // U
+#define IT_I KC_I // I
+#define IT_O KC_O // O
+#define IT_P KC_P // P
+#define IT_EGRV KC_LBRC // è
+#define IT_PLUS KC_RBRC // +
+// Row 3
+#define IT_A KC_A // A
+#define IT_S KC_S // S
+#define IT_D KC_D // D
+#define IT_F KC_F // F
+#define IT_G KC_G // G
+#define IT_H KC_H // H
+#define IT_J KC_J // J
+#define IT_K KC_K // K
+#define IT_L KC_L // L
+#define IT_OGRV KC_SCLN // ò
+#define IT_AGRV KC_QUOT // à
+#define IT_UGRV KC_NUHS // ù
+// Row 4
+#define IT_LABK KC_NUBS // <
+#define IT_Z KC_Z // Z
+#define IT_X KC_X // X
+#define IT_C KC_C // C
+#define IT_V KC_V // V
+#define IT_B KC_B // B
+#define IT_N KC_N // N
+#define IT_M KC_M // M
+#define IT_COMM KC_COMM // ,
+#define IT_DOT KC_DOT // .
+#define IT_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ | │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ § │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define IT_PIPE S(IT_BSLS) // |
+#define IT_EXLM S(IT_1) // !
+#define IT_DQUO S(IT_2) // "
+#define IT_PND S(IT_3) // £
+#define IT_DLR S(IT_4) // $
+#define IT_PERC S(IT_5) // %
+#define IT_AMPR S(IT_6) // &
+#define IT_SLSH S(IT_7) // /
+#define IT_LPRN S(IT_8) // (
+#define IT_RPRN S(IT_9) // )
+#define IT_EQL S(IT_0) // =
+#define IT_QUES S(IT_QUOT) // ?
+#define IT_CIRC S(IT_IGRV) // ^
+// Row 2
+#define IT_EACU S(IT_EGRV) // é
+#define IT_ASTR S(IT_PLUS) // *
+// Row 3
+#define IT_LCCE S(IT_OGRV) // ç
+#define IT_DEG S(IT_AGRV) // °
+#define IT_SECT S(IT_UGRV) // §
+// Row 4
+#define IT_RABK S(IT_LABK) // >
+#define IT_SCLN S(IT_COMM) // ;
+#define IT_COLN S(IT_DOT) // :
+#define IT_UNDS S(IT_MINS) // _
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ` │ « │ “ │ ‘ │ ¥ │ ~ │ ‹ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ ¶ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≤ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ – │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define IT_GRV A(IT_BSLS) // `
+#define IT_LDAQ A(IT_1) // «
+#define IT_LDQU A(IT_2) // “
+#define IT_LSQU A(IT_3) // ‘
+#define IT_YEN A(IT_4) // ¥
+#define IT_TILD A(IT_5) // ~
+#define IT_LSAQ A(IT_6) // ‹
+#define IT_DIV A(IT_7) // ÷
+#define IT_ACUT A(IT_8) // ´ (dead)
+#define IT_DGRV A(IT_9) // ` (dead)
+#define IT_NEQL A(IT_0) // ≠
+#define IT_IEXL A(IT_QUOT) // ¡
+#define IT_DCIR A(IT_IGRV) // ˆ (dead)
+// Row 2
+#define IT_DLQU A(IT_Q) // „
+#define IT_OMEG A(IT_W) // Ω
+#define IT_EURO A(IT_E) // €
+#define IT_REGD A(IT_R) // ®
+#define IT_TM A(IT_T) // ™
+#define IT_AE A(IT_Y) // Æ
+#define IT_DIAE A(IT_U) // ¨ (dead)
+#define IT_OE A(IT_I) // Œ
+#define IT_OSTR A(IT_O) // Ø
+#define IT_PI A(IT_P) // π
+#define IT_LBRC A(IT_EGRV) // [
+#define IT_RBRC A(IT_PLUS) // ]
+// Row 3
+#define IT_ARNG A(IT_A) // Å
+#define IT_SS A(IT_S) // ß
+#define IT_PDIF A(IT_D) // ∂
+#define IT_FHK A(IT_F) // ƒ
+#define IT_INFN A(IT_G) // ∞
+#define IT_INCR A(IT_H) // ∆
+#define IT_FORD A(IT_J) // ª
+#define IT_MORD A(IT_K) // º
+#define IT_NOT A(IT_L) // ¬
+#define IT_AT A(IT_OGRV) // @
+#define IT_HASH A(IT_AGRV) // #
+#define IT_PILC A(IT_UGRV) // ¶
+// Row 4
+#define IT_LTEQ A(IT_LABK) // ≤
+#define IT_NARS A(IT_Z) // ∑
+#define IT_DAGG A(IT_X) // †
+#define IT_COPY A(IT_C) // ©
+#define IT_SQRT A(IT_V) // √
+#define IT_INTG A(IT_B) // ∫
+#define IT_STIL A(IT_N) // ˜ (dead)
+#define IT_MICR A(IT_M) // µ
+#define IT_ELLP A(IT_COMM) // …
+#define IT_BULT A(IT_DOT) // •
+#define IT_NDSH A(IT_MINS) // –
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ı │ » │ ” │ ’ │ ¢ │ ‰ │ › │ ⁄ │ │ │ ≈ │ ¿ │ ± │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ ‚ │ À │ È │ Ì │ Ò │ │ Ù │ │ │ ∏ │ { │ } │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ │ ◊ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≥ │ │ ‡ │ Á │ É │ Í │ Ó │ Ú │ │ · │ — │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define IT_DLSI S(A(IT_BSLS)) // ı
+#define IT_RDAQ S(A(IT_1)) // »
+#define IT_RDQU S(A(IT_2)) // ”
+#define IT_RSQU S(A(IT_3)) // ’
+#define IT_CENT S(A(IT_4)) // ¢
+#define IT_PERM S(A(IT_5)) // ‰
+#define IT_RSAQ S(A(IT_6)) // ›
+#define IT_FRSL S(A(IT_7)) // ⁄
+#define IT_APPL S(A(IT_8)) // (Apple logo)
+#define IT_AEQL S(A(IT_0)) // ≈
+#define IT_IQUE S(A(IT_QUOT)) // ¿
+#define IT_PLMN S(A(IT_IGRV)) // ±
+// Row 2
+#define IT_SLQU S(A(IT_Q)) // ‚
+#define IT_CAGR S(A(IT_W)) // À
+#define IT_CEGR S(A(IT_E)) // È
+#define IT_CIGR S(A(IT_R)) // Ì
+#define IT_COGR S(A(IT_T)) // Ò
+#define IT_CUGR S(A(IT_U)) // Ù
+#define IT_NARP S(A(IT_P)) // ∏
+#define IT_LCBR S(A(IT_EGRV)) // {
+#define IT_RCBR S(A(IT_PLUS)) // }
+// Row 3
+#define IT_MACR S(A(IT_S)) // ¯
+#define IT_BREV S(A(IT_D)) // ˘
+#define IT_DOTA S(A(IT_F)) // ˙
+#define IT_RNGA S(A(IT_G)) // ˚
+#define IT_CEDL S(A(IT_H)) // ¸
+#define IT_DACU S(A(IT_J)) // ˝
+#define IT_OGON S(A(IT_K)) // ˛
+#define IT_CARN S(A(IT_L)) // ˇ
+#define IT_CCCE S(A(IT_OGRV)) // Ç
+#define IT_LOZN S(A(IT_UGRV)) // ◊
+// Row 4
+#define IT_GTEQ S(A(IT_LABK)) // ≥
+#define IT_DDAG S(A(IT_X)) // ‡
+#define IT_CAAC S(A(IT_C)) // Á
+#define IT_CEAC S(A(IT_V)) // É
+#define IT_CIAC S(A(IT_B)) // Í
+#define IT_COAC S(A(IT_N)) // Ó
+#define IT_CUAC S(A(IT_M)) // Ú
+#define IT_MDDT S(A(IT_DOT)) // ·
+#define IT_MDSH S(A(IT_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_italian_osx_ansi.h b/quantum/keymap_extras/keymap_italian_osx_ansi.h
deleted file mode 100644
index c2b8e3cad6..0000000000
--- a/quantum/keymap_extras/keymap_italian_osx_ansi.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/* Copyright 2015-2016 Matthias Schmidtt
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ < │ 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 │ , │ . │ - │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define IT_LABK KC_GRV // <
-#define IT_1 KC_1 // 1
-#define IT_2 KC_2 // 2
-#define IT_3 KC_3 // 3
-#define IT_4 KC_4 // 4
-#define IT_5 KC_5 // 5
-#define IT_6 KC_6 // 6
-#define IT_7 KC_7 // 7
-#define IT_8 KC_8 // 8
-#define IT_9 KC_9 // 9
-#define IT_0 KC_0 // 0
-#define IT_QUOT KC_MINS // '
-#define IT_IGRV KC_EQL // ì
-// Row 2
-#define IT_Q KC_Q // Q
-#define IT_W KC_W // W
-#define IT_E KC_E // E
-#define IT_R KC_R // R
-#define IT_T KC_T // T
-#define IT_Y KC_Y // Y
-#define IT_U KC_U // U
-#define IT_I KC_I // I
-#define IT_O KC_O // O
-#define IT_P KC_P // P
-#define IT_EGRV KC_LBRC // è
-#define IT_PLUS KC_RBRC // +
-#define IT_UGRV KC_BSLS // ù
-// Row 3
-#define IT_A KC_A // A
-#define IT_S KC_S // S
-#define IT_D KC_D // D
-#define IT_F KC_F // F
-#define IT_G KC_G // G
-#define IT_H KC_H // H
-#define IT_J KC_J // J
-#define IT_K KC_K // K
-#define IT_L KC_L // L
-#define IT_OGRV KC_SCLN // ò
-#define IT_AGRV KC_QUOT // à
-// Row 4
-#define IT_BSLS KC_NUBS // (backslash, not physically present)
-#define IT_Z KC_Z // Z
-#define IT_X KC_X // X
-#define IT_C KC_C // C
-#define IT_V KC_V // V
-#define IT_B KC_B // B
-#define IT_N KC_N // N
-#define IT_M KC_M // M
-#define IT_COMM KC_COMM // ,
-#define IT_DOT KC_DOT // .
-#define IT_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ > │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ § │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define IT_RABK S(IT_LABK) // >
-#define IT_EXLM S(IT_1) // !
-#define IT_DQUO S(IT_2) // "
-#define IT_PND S(IT_3) // £
-#define IT_DLR S(IT_4) // $
-#define IT_PERC S(IT_5) // %
-#define IT_AMPR S(IT_6) // &
-#define IT_SLSH S(IT_7) // /
-#define IT_LPRN S(IT_8) // (
-#define IT_RPRN S(IT_9) // )
-#define IT_EQL S(IT_0) // =
-#define IT_QUES S(IT_QUOT) // ?
-#define IT_CIRC S(IT_IGRV) // ^
-// Row 2
-#define IT_EACU S(IT_EGRV) // é
-#define IT_ASTR S(IT_PLUS) // *
-#define IT_SECT S(IT_UGRV) // §
-// Row 3
-#define IT_LCCE S(IT_OGRV) // ç
-#define IT_DEG S(IT_AGRV) // °
-// Row 4
-#define IT_PIPE S(IT_BSLS) // | (not physically present)
-#define IT_SCLN S(IT_COMM) // ;
-#define IT_COLN S(IT_DOT) // :
-#define IT_UNDS S(IT_MINS) // _
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ≤ │ « │ “ │ ‘ │ ¥ │ ~ │ ‹ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ ¶ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ – │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define IT_LTEQ A(IT_LABK) // ≤
-#define IT_LDAQ A(IT_1) // «
-#define IT_LDQU A(IT_2) // “
-#define IT_LSQU A(IT_3) // ‘
-#define IT_YEN A(IT_4) // ¥
-#define IT_TILD A(IT_5) // ~
-#define IT_LSAQ A(IT_6) // ‹
-#define IT_DIV A(IT_7) // ÷
-#define IT_ACUT A(IT_8) // ´ (dead)
-#define IT_DGRV A(IT_9) // ` (dead)
-#define IT_NEQL A(IT_0) // ≠
-#define IT_IEXL A(IT_QUOT) // ¡
-#define IT_DCIR A(IT_IGRV) // ˆ (dead)
-// Row 2
-#define IT_DLQU A(IT_Q) // „
-#define IT_OMEG A(IT_W) // Ω
-#define IT_EURO A(IT_E) // €
-#define IT_REGD A(IT_R) // ®
-#define IT_TM A(IT_T) // ™
-#define IT_AE A(IT_Y) // Æ
-#define IT_DIAE A(IT_U) // ¨ (dead)
-#define IT_OE A(IT_I) // Œ
-#define IT_OSTR A(IT_O) // Ø
-#define IT_PI A(IT_P) // π
-#define IT_LBRC A(IT_EGRV) // [
-#define IT_RBRC A(IT_PLUS) // ]
-// Row 3
-#define IT_ARNG A(IT_A) // Å
-#define IT_SS A(IT_S) // ß
-#define IT_PDIF A(IT_D) // ∂
-#define IT_FHK A(IT_F) // ƒ
-#define IT_INFN A(IT_G) // ∞
-#define IT_INCR A(IT_H) // ∆
-#define IT_FORD A(IT_J) // ª
-#define IT_MORD A(IT_K) // º
-#define IT_NOT A(IT_L) // ¬
-#define IT_AT A(IT_OGRV) // @
-#define IT_HASH A(IT_AGRV) // #
-#define IT_PILC A(IT_UGRV) // ¶
-// Row 4
-#define IT_GRV A(IT_BSLS) // ` (not physically present)
-#define IT_NARS A(IT_Z) // ∑
-#define IT_DAGG A(IT_X) // †
-#define IT_COPY A(IT_C) // ©
-#define IT_SQRT A(IT_V) // √
-#define IT_INTG A(IT_B) // ∫
-#define IT_STIL A(IT_N) // ˜ (dead)
-#define IT_MICR A(IT_M) // µ
-#define IT_ELLP A(IT_COMM) // …
-#define IT_BULT A(IT_DOT) // •
-#define IT_NDSH A(IT_MINS) // –
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ≥ │ » │ ” │ ’ │ ¢ │ ‰ │ › │ ⁄ │ │ │ ≈ │ ¿ │ ± │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ ‚ │ À │ È │ Ì │ Ò │ │ Ù │ │ │ ∏ │ { │ } │ ◊ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ ∞ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ │ ‡ │ Á │ É │ Í │ Ó │ Ú │ │ · │ — │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define IT_GTEQ S(A(IT_LABK)) // ≥
-#define IT_RDAQ S(A(IT_1)) // »
-#define IT_RDQU S(A(IT_2)) // ”
-#define IT_RSQU S(A(IT_3)) // ’
-#define IT_CENT S(A(IT_4)) // ¢
-#define IT_PERM S(A(IT_5)) // ‰
-#define IT_RSAQ S(A(IT_6)) // ›
-#define IT_FRSL S(A(IT_7)) // ⁄
-#define IT_APPL S(A(IT_8)) // (Apple logo)
-#define IT_AEQL S(A(IT_0)) // ≈
-#define IT_IQUE S(A(IT_QUOT)) // ¿
-#define IT_PLMN S(A(IT_IGRV)) // ±
-// Row 2
-#define IT_SLQU S(A(IT_Q)) // ‚
-#define IT_CAGR S(A(IT_W)) // À
-#define IT_CEGR S(A(IT_E)) // È
-#define IT_CIGR S(A(IT_R)) // Ì
-#define IT_COGR S(A(IT_T)) // Ò
-#define IT_CUGR S(A(IT_U)) // Ù
-#define IT_NARP S(A(IT_P)) // ∏
-#define IT_LCBR S(A(IT_EGRV)) // {
-#define IT_RCBR S(A(IT_PLUS)) // }
-#define IT_LOZN S(A(IT_UGRV)) // ◊
-// Row 3
-#define IT_MACR S(A(IT_S)) // ¯
-#define IT_BREV S(A(IT_D)) // ˘
-#define IT_DOTA S(A(IT_F)) // ˙
-#define IT_RGNA S(A(IT_G)) // ˚
-#define IT_CEDL S(A(IT_H)) // ¸
-#define IT_DACU S(A(IT_J)) // ˝
-#define IT_OGON S(A(IT_K)) // ˛
-#define IT_CARN S(A(IT_L)) // ˇ
-#define IT_CCCE S(A(IT_OGRV)) // Ç
-// Row 4
-#define IT_DDAG S(A(IT_X)) // ‡
-#define IT_CAAC S(A(IT_C)) // Á
-#define IT_CEAC S(A(IT_V)) // É
-#define IT_CIAC S(A(IT_B)) // Í
-#define IT_COAC S(A(IT_N)) // Ó
-#define IT_CUAC S(A(IT_M)) // Ú
-#define IT_MDDT S(A(IT_DOT)) // ·
-#define IT_MDSH S(A(IT_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_italian_osx_iso.h b/quantum/keymap_extras/keymap_italian_osx_iso.h
deleted file mode 100644
index 61f76ddba7..0000000000
--- a/quantum/keymap_extras/keymap_italian_osx_iso.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/* Copyright 2015-2016 Matthias Schmidtt
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ \ │ 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 │ , │ . │ - │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define IT_BSLS KC_GRV // (backslash)
-#define IT_1 KC_1 // 1
-#define IT_2 KC_2 // 2
-#define IT_3 KC_3 // 3
-#define IT_4 KC_4 // 4
-#define IT_5 KC_5 // 5
-#define IT_6 KC_6 // 6
-#define IT_7 KC_7 // 7
-#define IT_8 KC_8 // 8
-#define IT_9 KC_9 // 9
-#define IT_0 KC_0 // 0
-#define IT_QUOT KC_MINS // '
-#define IT_IGRV KC_EQL // ì
-// Row 2
-#define IT_Q KC_Q // Q
-#define IT_W KC_W // W
-#define IT_E KC_E // E
-#define IT_R KC_R // R
-#define IT_T KC_T // T
-#define IT_Y KC_Y // Y
-#define IT_U KC_U // U
-#define IT_I KC_I // I
-#define IT_O KC_O // O
-#define IT_P KC_P // P
-#define IT_EGRV KC_LBRC // è
-#define IT_PLUS KC_RBRC // +
-// Row 3
-#define IT_A KC_A // A
-#define IT_S KC_S // S
-#define IT_D KC_D // D
-#define IT_F KC_F // F
-#define IT_G KC_G // G
-#define IT_H KC_H // H
-#define IT_J KC_J // J
-#define IT_K KC_K // K
-#define IT_L KC_L // L
-#define IT_OGRV KC_SCLN // ò
-#define IT_AGRV KC_QUOT // à
-#define IT_UGRV KC_NUHS // ù
-// Row 4
-#define IT_LABK KC_NUBS // <
-#define IT_Z KC_Z // Z
-#define IT_X KC_X // X
-#define IT_C KC_C // C
-#define IT_V KC_V // V
-#define IT_B KC_B // B
-#define IT_N KC_N // N
-#define IT_M KC_M // M
-#define IT_COMM KC_COMM // ,
-#define IT_DOT KC_DOT // .
-#define IT_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ | │ ! │ " │ £ │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ ^ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ é │ * │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ ç │ ° │ § │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define IT_PIPE S(IT_BSLS) // |
-#define IT_EXLM S(IT_1) // !
-#define IT_DQUO S(IT_2) // "
-#define IT_PND S(IT_3) // £
-#define IT_DLR S(IT_4) // $
-#define IT_PERC S(IT_5) // %
-#define IT_AMPR S(IT_6) // &
-#define IT_SLSH S(IT_7) // /
-#define IT_LPRN S(IT_8) // (
-#define IT_RPRN S(IT_9) // )
-#define IT_EQL S(IT_0) // =
-#define IT_QUES S(IT_QUOT) // ?
-#define IT_CIRC S(IT_IGRV) // ^
-// Row 2
-#define IT_EACU S(IT_EGRV) // é
-#define IT_ASTR S(IT_PLUS) // *
-// Row 3
-#define IT_LCCE S(IT_OGRV) // ç
-#define IT_DEG S(IT_AGRV) // °
-#define IT_SECT S(IT_UGRV) // §
-// Row 4
-#define IT_RABK S(IT_LABK) // >
-#define IT_SCLN S(IT_COMM) // ;
-#define IT_COLN S(IT_DOT) // :
-#define IT_UNDS S(IT_MINS) // _
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ` │ « │ “ │ ‘ │ ¥ │ ~ │ ‹ │ ÷ │ ´ │ ` │ ≠ │ ¡ │ ˆ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ „ │ Ω │ € │ ® │ ™ │ Æ │ ¨ │ Œ │ Ø │ π │ [ │ ] │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ Å │ ß │ ∂ │ ƒ │ ∞ │ ∆ │ ª │ º │ ¬ │ @ │ # │ ¶ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≤ │ ∑ │ † │ © │ √ │ ∫ │ ˜ │ µ │ … │ • │ – │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define IT_GRV A(IT_BSLS) // `
-#define IT_LDAQ A(IT_1) // «
-#define IT_LDQU A(IT_2) // “
-#define IT_LSQU A(IT_3) // ‘
-#define IT_YEN A(IT_4) // ¥
-#define IT_TILD A(IT_5) // ~
-#define IT_LSAQ A(IT_6) // ‹
-#define IT_DIV A(IT_7) // ÷
-#define IT_ACUT A(IT_8) // ´ (dead)
-#define IT_DGRV A(IT_9) // ` (dead)
-#define IT_NEQL A(IT_0) // ≠
-#define IT_IEXL A(IT_QUOT) // ¡
-#define IT_DCIR A(IT_IGRV) // ˆ (dead)
-// Row 2
-#define IT_DLQU A(IT_Q) // „
-#define IT_OMEG A(IT_W) // Ω
-#define IT_EURO A(IT_E) // €
-#define IT_REGD A(IT_R) // ®
-#define IT_TM A(IT_T) // ™
-#define IT_AE A(IT_Y) // Æ
-#define IT_DIAE A(IT_U) // ¨ (dead)
-#define IT_OE A(IT_I) // Œ
-#define IT_OSTR A(IT_O) // Ø
-#define IT_PI A(IT_P) // π
-#define IT_LBRC A(IT_EGRV) // [
-#define IT_RBRC A(IT_PLUS) // ]
-// Row 3
-#define IT_ARNG A(IT_A) // Å
-#define IT_SS A(IT_S) // ß
-#define IT_PDIF A(IT_D) // ∂
-#define IT_FHK A(IT_F) // ƒ
-#define IT_INFN A(IT_G) // ∞
-#define IT_INCR A(IT_H) // ∆
-#define IT_FORD A(IT_J) // ª
-#define IT_MORD A(IT_K) // º
-#define IT_NOT A(IT_L) // ¬
-#define IT_AT A(IT_OGRV) // @
-#define IT_HASH A(IT_AGRV) // #
-#define IT_PILC A(IT_UGRV) // ¶
-// Row 4
-#define IT_LTEQ A(IT_LABK) // ≤
-#define IT_NARS A(IT_Z) // ∑
-#define IT_DAGG A(IT_X) // †
-#define IT_COPY A(IT_C) // ©
-#define IT_SQRT A(IT_V) // √
-#define IT_INTG A(IT_B) // ∫
-#define IT_STIL A(IT_N) // ˜ (dead)
-#define IT_MICR A(IT_M) // µ
-#define IT_ELLP A(IT_COMM) // …
-#define IT_BULT A(IT_DOT) // •
-#define IT_NDSH A(IT_MINS) // –
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ı │ » │ ” │ ’ │ ¢ │ ‰ │ › │ ⁄ │ │ │ ≈ │ ¿ │ ± │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ ‚ │ À │ È │ Ì │ Ò │ │ Ù │ │ │ ∏ │ { │ } │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ ¯ │ ˘ │ ˙ │ ˚ │ ¸ │ ˝ │ ˛ │ ˇ │ Ç │ │ ◊ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≥ │ │ ‡ │ Á │ É │ Í │ Ó │ Ú │ │ · │ — │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define IT_DLSI S(A(IT_BSLS)) // ı
-#define IT_RDAQ S(A(IT_1)) // »
-#define IT_RDQU S(A(IT_2)) // ”
-#define IT_RSQU S(A(IT_3)) // ’
-#define IT_CENT S(A(IT_4)) // ¢
-#define IT_PERM S(A(IT_5)) // ‰
-#define IT_RSAQ S(A(IT_6)) // ›
-#define IT_FRSL S(A(IT_7)) // ⁄
-#define IT_APPL S(A(IT_8)) // (Apple logo)
-#define IT_AEQL S(A(IT_0)) // ≈
-#define IT_IQUE S(A(IT_QUOT)) // ¿
-#define IT_PLMN S(A(IT_IGRV)) // ±
-// Row 2
-#define IT_SLQU S(A(IT_Q)) // ‚
-#define IT_CAGR S(A(IT_W)) // À
-#define IT_CEGR S(A(IT_E)) // È
-#define IT_CIGR S(A(IT_R)) // Ì
-#define IT_COGR S(A(IT_T)) // Ò
-#define IT_CUGR S(A(IT_U)) // Ù
-#define IT_NARP S(A(IT_P)) // ∏
-#define IT_LCBR S(A(IT_EGRV)) // {
-#define IT_RCBR S(A(IT_PLUS)) // }
-// Row 3
-#define IT_MACR S(A(IT_S)) // ¯
-#define IT_BREV S(A(IT_D)) // ˘
-#define IT_DOTA S(A(IT_F)) // ˙
-#define IT_RNGA S(A(IT_G)) // ˚
-#define IT_CEDL S(A(IT_H)) // ¸
-#define IT_DACU S(A(IT_J)) // ˝
-#define IT_OGON S(A(IT_K)) // ˛
-#define IT_CARN S(A(IT_L)) // ˇ
-#define IT_CCCE S(A(IT_OGRV)) // Ç
-#define IT_LOZN S(A(IT_UGRV)) // ◊
-// Row 4
-#define IT_GTEQ S(A(IT_LABK)) // ≥
-#define IT_DDAG S(A(IT_X)) // ‡
-#define IT_CAAC S(A(IT_C)) // Á
-#define IT_CEAC S(A(IT_V)) // É
-#define IT_CIAC S(A(IT_B)) // Í
-#define IT_COAC S(A(IT_N)) // Ó
-#define IT_CUAC S(A(IT_M)) // Ú
-#define IT_MDDT S(A(IT_DOT)) // ·
-#define IT_MDSH S(A(IT_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_japanese.h b/quantum/keymap_extras/keymap_japanese.h
new file mode 100644
index 0000000000..d10feb5856
--- /dev/null
+++ b/quantum/keymap_extras/keymap_japanese.h
@@ -0,0 +1,139 @@
+/* Copyright 2016 h-youhei
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * JP106-layout (Japanese Standard)
+ *
+ * For more information, see
+ * http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html
+ * note: This website is written in Japanese.
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Z↔︎H│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ^ │ ¥ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ @ │ [ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ Eisū │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ : │ ] │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
+ * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ \ │ │
+ * ├─────┬──┴┬──┴──┬┴───┴┬──┴───┴──┬┴───┴┬──┴┬──┴┬──┴┬──┴┬─────┤
+ * │ │ │ │Muhen│ │ Hen │K↔H│ │ │ │ │
+ * └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘
+ */
+// Row 1
+#define JP_ZKHK KC_GRV // Zenkaku ↔︎ Hankaku ↔ Kanji (半角 ↔ 全角 ↔ 漢字)
+#define JP_1 KC_1 // 1
+#define JP_2 KC_2 // 2
+#define JP_3 KC_3 // 3
+#define JP_4 KC_4 // 4
+#define JP_5 KC_5 // 5
+#define JP_6 KC_6 // 6
+#define JP_7 KC_7 // 7
+#define JP_8 KC_8 // 8
+#define JP_9 KC_9 // 9
+#define JP_0 KC_0 // 0
+#define JP_MINS KC_MINS // -
+#define JP_CIRC KC_EQL // ^
+#define JP_YEN KC_INT3 // ¥
+// Row 2
+#define JP_Q KC_Q // Q
+#define JP_W KC_W // W
+#define JP_E KC_E // E
+#define JP_R KC_R // R
+#define JP_T KC_T // T
+#define JP_Y KC_Y // Y
+#define JP_U KC_U // U
+#define JP_I KC_I // I
+#define JP_O KC_O // O
+#define JP_P KC_P // P
+#define JP_AT KC_LBRC // @
+#define JP_LBRC KC_RBRC // [
+// Row 3
+#define JP_EISU KC_CAPS // Eisū (英数)
+#define JP_A KC_A // A
+#define JP_S KC_S // S
+#define JP_D KC_D // D
+#define JP_F KC_F // F
+#define JP_G KC_G // G
+#define JP_H KC_H // H
+#define JP_J KC_J // J
+#define JP_K KC_K // K
+#define JP_L KC_L // L
+#define JP_SCLN KC_SCLN // ;
+#define JP_COLN KC_QUOT // :
+#define JP_RBRC KC_NUHS // ]
+// Row 4
+#define JP_Z KC_Z // Z
+#define JP_X KC_X // X
+#define JP_C KC_C // C
+#define JP_V KC_V // V
+#define JP_B KC_B // B
+#define JP_N KC_N // N
+#define JP_M KC_M // M
+#define JP_COMM KC_COMM // ,
+#define JP_DOT KC_DOT // .
+#define JP_SLSH KC_SLSH // /
+#define JP_BSLS KC_INT1 // (backslash)
+// Row 5
+#define JP_MHEN KC_INT5 // Muhenkan (無変換)
+#define JP_HENK KC_INT4 // Henkan (変換)
+#define JP_KANA KC_INT2 // Katakana ↔ Hiragana ↔ Rōmaji (カタカナ ↔ ひらがな ↔ ローマ字)
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ │ ! │ " │ # │ $ │ % │ & │ ' │ ( │ ) │ │ = │ ~ │ | │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ ` │ { │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ Caps │ │ │ │ │ │ │ │ │ │ + │ * │ } │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
+ * │ │ │ │ │ │ │ │ │ < │ > │ ? │ _ │ │
+ * ├─────┬──┴┬──┴──┬┴───┴┬──┴───┴──┬┴───┴┬──┴┬──┴┬──┴┬──┴┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │
+ * └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘
+ */
+// Row 1
+#define JP_EXLM S(JP_1) // !
+#define JP_DQUO S(JP_2) // "
+#define JP_HASH S(JP_3) // #
+#define JP_DLR S(JP_4) // $
+#define JP_PERC S(JP_5) // %
+#define JP_AMPR S(JP_6) // &
+#define JP_QUOT S(JP_7) // '
+#define JP_LPRN S(JP_8) // (
+#define JP_RPRN S(JP_9) // )
+#define JP_EQL S(JP_MINS) // =
+#define JP_TILD S(JP_CIRC) // ~
+#define JP_PIPE S(JP_YEN) // |
+// Row 2
+#define JP_GRV S(JP_AT) // `
+#define JP_LCBR S(JP_LBRC) // {
+// Row 3
+#define JP_CAPS S(JP_EISU) // Caps Lock
+#define JP_PLUS S(JP_SCLN) // +
+#define JP_ASTR S(JP_COLN) // *
+#define JP_RCBR S(JP_RBRC) // }
+// Row 4
+#define JP_LABK S(JP_COMM) // <
+#define JP_RABK S(JP_DOT) // >
+#define JP_QUES S(JP_SLSH) // ?
+#define JP_UNDS S(JP_BSLS) // _
diff --git a/quantum/keymap_extras/keymap_jp.h b/quantum/keymap_extras/keymap_jp.h
deleted file mode 100644
index d10feb5856..0000000000
--- a/quantum/keymap_extras/keymap_jp.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/* Copyright 2016 h-youhei
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * JP106-layout (Japanese Standard)
- *
- * For more information, see
- * http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html
- * note: This website is written in Japanese.
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │Z↔︎H│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ^ │ ¥ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
- * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ @ │ [ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ Eisū │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ : │ ] │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
- * │ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ \ │ │
- * ├─────┬──┴┬──┴──┬┴───┴┬──┴───┴──┬┴───┴┬──┴┬──┴┬──┴┬──┴┬─────┤
- * │ │ │ │Muhen│ │ Hen │K↔H│ │ │ │ │
- * └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘
- */
-// Row 1
-#define JP_ZKHK KC_GRV // Zenkaku ↔︎ Hankaku ↔ Kanji (半角 ↔ 全角 ↔ 漢字)
-#define JP_1 KC_1 // 1
-#define JP_2 KC_2 // 2
-#define JP_3 KC_3 // 3
-#define JP_4 KC_4 // 4
-#define JP_5 KC_5 // 5
-#define JP_6 KC_6 // 6
-#define JP_7 KC_7 // 7
-#define JP_8 KC_8 // 8
-#define JP_9 KC_9 // 9
-#define JP_0 KC_0 // 0
-#define JP_MINS KC_MINS // -
-#define JP_CIRC KC_EQL // ^
-#define JP_YEN KC_INT3 // ¥
-// Row 2
-#define JP_Q KC_Q // Q
-#define JP_W KC_W // W
-#define JP_E KC_E // E
-#define JP_R KC_R // R
-#define JP_T KC_T // T
-#define JP_Y KC_Y // Y
-#define JP_U KC_U // U
-#define JP_I KC_I // I
-#define JP_O KC_O // O
-#define JP_P KC_P // P
-#define JP_AT KC_LBRC // @
-#define JP_LBRC KC_RBRC // [
-// Row 3
-#define JP_EISU KC_CAPS // Eisū (英数)
-#define JP_A KC_A // A
-#define JP_S KC_S // S
-#define JP_D KC_D // D
-#define JP_F KC_F // F
-#define JP_G KC_G // G
-#define JP_H KC_H // H
-#define JP_J KC_J // J
-#define JP_K KC_K // K
-#define JP_L KC_L // L
-#define JP_SCLN KC_SCLN // ;
-#define JP_COLN KC_QUOT // :
-#define JP_RBRC KC_NUHS // ]
-// Row 4
-#define JP_Z KC_Z // Z
-#define JP_X KC_X // X
-#define JP_C KC_C // C
-#define JP_V KC_V // V
-#define JP_B KC_B // B
-#define JP_N KC_N // N
-#define JP_M KC_M // M
-#define JP_COMM KC_COMM // ,
-#define JP_DOT KC_DOT // .
-#define JP_SLSH KC_SLSH // /
-#define JP_BSLS KC_INT1 // (backslash)
-// Row 5
-#define JP_MHEN KC_INT5 // Muhenkan (無変換)
-#define JP_HENK KC_INT4 // Henkan (変換)
-#define JP_KANA KC_INT2 // Katakana ↔ Hiragana ↔ Rōmaji (カタカナ ↔ ひらがな ↔ ローマ字)
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │ │ ! │ " │ # │ $ │ % │ & │ ' │ ( │ ) │ │ = │ ~ │ | │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ ` │ { │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ Caps │ │ │ │ │ │ │ │ │ │ + │ * │ } │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤
- * │ │ │ │ │ │ │ │ │ < │ > │ ? │ _ │ │
- * ├─────┬──┴┬──┴──┬┴───┴┬──┴───┴──┬┴───┴┬──┴┬──┴┬──┴┬──┴┬─────┤
- * │ │ │ │ │ │ │ │ │ │ │ │
- * └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘
- */
-// Row 1
-#define JP_EXLM S(JP_1) // !
-#define JP_DQUO S(JP_2) // "
-#define JP_HASH S(JP_3) // #
-#define JP_DLR S(JP_4) // $
-#define JP_PERC S(JP_5) // %
-#define JP_AMPR S(JP_6) // &
-#define JP_QUOT S(JP_7) // '
-#define JP_LPRN S(JP_8) // (
-#define JP_RPRN S(JP_9) // )
-#define JP_EQL S(JP_MINS) // =
-#define JP_TILD S(JP_CIRC) // ~
-#define JP_PIPE S(JP_YEN) // |
-// Row 2
-#define JP_GRV S(JP_AT) // `
-#define JP_LCBR S(JP_LBRC) // {
-// Row 3
-#define JP_CAPS S(JP_EISU) // Caps Lock
-#define JP_PLUS S(JP_SCLN) // +
-#define JP_ASTR S(JP_COLN) // *
-#define JP_RCBR S(JP_RBRC) // }
-// Row 4
-#define JP_LABK S(JP_COMM) // <
-#define JP_RABK S(JP_DOT) // >
-#define JP_QUES S(JP_SLSH) // ?
-#define JP_UNDS S(JP_BSLS) // _
diff --git a/quantum/keymap_extras/keymap_portuguese_mac_iso.h b/quantum/keymap_extras/keymap_portuguese_mac_iso.h
new file mode 100644
index 0000000000..78346af285
--- /dev/null
+++ b/quantum/keymap_extras/keymap_portuguese_mac_iso.h
@@ -0,0 +1,234 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ § │ 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 │ , │ . │ - │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define PT_SECT KC_GRV // §
+#define PT_1 KC_1 // 1
+#define PT_2 KC_2 // 2
+#define PT_3 KC_3 // 3
+#define PT_4 KC_4 // 4
+#define PT_5 KC_5 // 5
+#define PT_6 KC_6 // 6
+#define PT_7 KC_7 // 7
+#define PT_8 KC_8 // 8
+#define PT_9 KC_9 // 9
+#define PT_0 KC_0 // 0
+#define PT_QUOT KC_MINS // '
+#define PT_PLUS KC_EQL // +
+// Row 2
+#define PT_Q KC_Q // Q
+#define PT_W KC_W // W
+#define PT_E KC_E // E
+#define PT_R KC_R // R
+#define PT_T KC_T // T
+#define PT_Y KC_Y // Y
+#define PT_U KC_U // U
+#define PT_I KC_I // I
+#define PT_O KC_O // O
+#define PT_P KC_P // P
+#define PT_MORD KC_LBRC // º
+#define PT_ACUT KC_RBRC // ´ (dead)
+// Row 3
+#define PT_A KC_A // A
+#define PT_S KC_S // S
+#define PT_D KC_D // D
+#define PT_F KC_F // F
+#define PT_G KC_G // G
+#define PT_H KC_H // H
+#define PT_J KC_J // J
+#define PT_K KC_K // K
+#define PT_L KC_L // L
+#define PT_CCED KC_SCLN // Ç
+#define PT_TILD KC_QUOT // ~ (dead)
+#define PT_BSLS KC_NUHS // (backslash)
+// Row 4
+#define PT_LABK KC_NUBS // <
+#define PT_Z KC_Z // Z
+#define PT_X KC_X // X
+#define PT_C KC_C // C
+#define PT_V KC_V // V
+#define PT_B KC_B // B
+#define PT_N KC_N // N
+#define PT_M KC_M // M
+#define PT_COMM KC_COMM // ,
+#define PT_DOT KC_DOT // .
+#define PT_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ± │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ ª │ ` │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ | │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define PT_PLMN S(PT_SECT) // ±
+#define PT_EXLM S(PT_1) // !
+#define PT_DQUO S(PT_2) // "
+#define PT_HASH S(PT_3) // #
+#define PT_DLR S(PT_4) // $
+#define PT_PERC S(PT_5) // %
+#define PT_AMPR S(PT_6) // &
+#define PT_SLSH S(PT_7) // /
+#define PT_LPRN S(PT_8) // (
+#define PT_RPRN S(PT_9) // )
+#define PT_EQL S(PT_0) // =
+#define PT_QUES S(PT_QUOT) // ?
+#define PT_ASTR S(PT_PLUS) // *
+// Row 2
+#define PT_FORD S(PT_MORD) // ª
+#define PT_GRV S(PT_ACUT) // ` (dead)
+// Row 3
+#define PT_CIRC S(PT_TILD) // ^ (dead)
+#define PT_PIPE S(PT_BSLS) // |
+// Row 4
+#define PT_RABK S(PT_LABK) // >
+#define PT_SCLN S(PT_COMM) // ;
+#define PT_COLN S(PT_DOT) // :
+#define PT_UNDS S(PT_MINS) // _
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ │ │ @ │ € │ £ │ ‰ │ ¶ │ ÷ │ [ │ ] │ ≠ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ Œ │ ∑ │ Æ │ ® │ ™ │ ¥ │ † │ ı │ Ø │ π │ ° │ ¨ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ Å │ ß │ ∂ │ ƒ │ ˙ │ ˇ │ ¯ │ „ │ ‘ │ ¸ │ ˜ │ ‹ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≤ │ Ω │ « │ © │ √ │ ∫ │ ¬ │ µ │ “ │ … │ — │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define PT_APPL A(PT_1) // (Apple logo)
+#define PT_AT A(PT_2) // @
+#define PT_EURO A(PT_3) // €
+#define PT_PND A(PT_4) // £
+#define PT_PERM A(PT_5) // ‰
+#define PT_PILC A(PT_6) // ¶
+#define PT_DIV A(PT_7) // ÷
+#define PT_LBRC A(PT_8) // [
+#define PT_RBRC A(PT_9) // ]
+#define PT_NEQL A(PT_0) // ≠
+// Row 2
+#define PT_OE A(PT_Q) // Œ
+#define PT_NARS A(PT_W) // ∑
+#define PT_AE A(PT_E) // Æ
+#define PT_REGD A(PT_R) // ®
+#define PT_TM A(PT_T) // ™
+#define PT_YEN A(PT_Y) // ¥
+#define PT_DAGG A(PT_U) // †
+#define PT_DLSI A(PT_I) // ı
+#define PT_OSTR A(PT_O) // Ø
+#define PT_PI A(PT_P) // π
+#define PT_DEG A(PT_MORD) // °
+#define PT_DIAE A(PT_ACUT) // ¨ (dead)
+// Row 3
+#define PT_ARNG A(PT_A) // å
+#define PT_SS A(PT_S) // ß
+#define PT_PDIF A(PT_D) // ∂
+#define PT_FHK A(PT_F) // ƒ
+#define PT_DOTA A(PT_G) // ˙
+#define PT_CARN A(PT_H) // ˇ
+#define PT_MACR A(PT_J) // ¯
+#define PT_DLQU A(PT_K) // „
+#define PT_LSQU A(PT_L) // ‘
+#define PT_CEDL A(PT_CCED) // ¸
+#define PT_STIL A(PT_TILD) // ˜ (dead)
+#define PT_LSAQ A(PT_BSLS) // ‹
+// Row 4
+#define PT_LTEQ A(PT_LABK) // ≤
+#define PT_OMEG A(PT_Z) // Ω
+#define PT_LDAQ A(PT_X) // «
+#define PT_COPY A(PT_C) // ©
+#define PT_SQRT A(PT_V) // √
+#define PT_INTG A(PT_B) // ∫
+#define PT_NOT A(PT_N) // ¬
+#define PT_MICR A(PT_M) // µ
+#define PT_LDQU A(PT_COMM) // “
+#define PT_ELLP A(PT_DOT) // …
+#define PT_MDSH A(PT_MINS) // —
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ │ ¡ │ fi │ fl │ ¢ │ ∞ │ • │ ⁄ │ { │ } │ ≈ │ ¿ │ ◊ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ ‡ │ ˚ │ │ ∏ │ │ ˝ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ ∆ │ │ │ │ │ ‚ │ ’ │ ˛ │ ˆ │ › │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≥ │ │ » │ │ │ │ │ │ ” │ · │ – │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define PT_IEXL S(A(PT_1)) // ¡
+#define PT_FI S(A(PT_2)) // fi
+#define PT_FL S(A(PT_3)) // fl
+#define PT_CENT S(A(PT_4)) // ¢
+#define PT_INFN S(A(PT_5)) // ∞
+#define PT_BULT S(A(PT_6)) // •
+#define PT_FRSL S(A(PT_7)) // ⁄
+#define PT_LCBR S(A(PT_8)) // {
+#define PT_RCBR S(A(PT_9)) // }
+#define PT_AEQL S(A(PT_0)) // ≈
+#define PT_IQUE S(A(PT_QUOT)) // ¿
+#define PT_LOZN S(A(PT_PLUS)) // ◊
+// Row 2
+#define PT_DDAG S(A(PT_U)) // ‡
+#define PT_RNGA S(A(PT_I)) // ˚
+#define PT_NARP S(A(PT_P)) // ∏
+#define PT_DACU S(A(PT_ACUT)) // ˝
+// Row 3
+#define PT_INCR S(A(PT_D)) // ∆
+#define PT_SLQU S(A(PT_K)) // ‚
+#define PT_RSQU S(A(PT_L)) // ’
+#define PT_OGON S(A(PT_CCED)) // ˛
+#define PT_DCIR S(A(PT_TILD)) // ˆ (dead)
+#define PT_RSAQ S(A(PT_BSLS)) // ›
+// Row 4
+#define PT_GTEQ S(A(PT_LABK)) // ≥
+#define PT_RDAQ S(A(PT_X)) // »
+#define PT_RDQU S(A(PT_COMM)) // ”
+#define PT_MDDT S(A(PT_DOT)) // ·
+#define PT_NDSH S(A(PT_MINS)) // –
diff --git a/quantum/keymap_extras/keymap_portuguese_osx_iso.h b/quantum/keymap_extras/keymap_portuguese_osx_iso.h
deleted file mode 100644
index 78346af285..0000000000
--- a/quantum/keymap_extras/keymap_portuguese_osx_iso.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ § │ 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 │ , │ . │ - │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define PT_SECT KC_GRV // §
-#define PT_1 KC_1 // 1
-#define PT_2 KC_2 // 2
-#define PT_3 KC_3 // 3
-#define PT_4 KC_4 // 4
-#define PT_5 KC_5 // 5
-#define PT_6 KC_6 // 6
-#define PT_7 KC_7 // 7
-#define PT_8 KC_8 // 8
-#define PT_9 KC_9 // 9
-#define PT_0 KC_0 // 0
-#define PT_QUOT KC_MINS // '
-#define PT_PLUS KC_EQL // +
-// Row 2
-#define PT_Q KC_Q // Q
-#define PT_W KC_W // W
-#define PT_E KC_E // E
-#define PT_R KC_R // R
-#define PT_T KC_T // T
-#define PT_Y KC_Y // Y
-#define PT_U KC_U // U
-#define PT_I KC_I // I
-#define PT_O KC_O // O
-#define PT_P KC_P // P
-#define PT_MORD KC_LBRC // º
-#define PT_ACUT KC_RBRC // ´ (dead)
-// Row 3
-#define PT_A KC_A // A
-#define PT_S KC_S // S
-#define PT_D KC_D // D
-#define PT_F KC_F // F
-#define PT_G KC_G // G
-#define PT_H KC_H // H
-#define PT_J KC_J // J
-#define PT_K KC_K // K
-#define PT_L KC_L // L
-#define PT_CCED KC_SCLN // Ç
-#define PT_TILD KC_QUOT // ~ (dead)
-#define PT_BSLS KC_NUHS // (backslash)
-// Row 4
-#define PT_LABK KC_NUBS // <
-#define PT_Z KC_Z // Z
-#define PT_X KC_X // X
-#define PT_C KC_C // C
-#define PT_V KC_V // V
-#define PT_B KC_B // B
-#define PT_N KC_N // N
-#define PT_M KC_M // M
-#define PT_COMM KC_COMM // ,
-#define PT_DOT KC_DOT // .
-#define PT_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ± │ ! │ " │ # │ $ │ % │ & │ / │ ( │ ) │ = │ ? │ * │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ ª │ ` │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ ^ │ | │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define PT_PLMN S(PT_SECT) // ±
-#define PT_EXLM S(PT_1) // !
-#define PT_DQUO S(PT_2) // "
-#define PT_HASH S(PT_3) // #
-#define PT_DLR S(PT_4) // $
-#define PT_PERC S(PT_5) // %
-#define PT_AMPR S(PT_6) // &
-#define PT_SLSH S(PT_7) // /
-#define PT_LPRN S(PT_8) // (
-#define PT_RPRN S(PT_9) // )
-#define PT_EQL S(PT_0) // =
-#define PT_QUES S(PT_QUOT) // ?
-#define PT_ASTR S(PT_PLUS) // *
-// Row 2
-#define PT_FORD S(PT_MORD) // ª
-#define PT_GRV S(PT_ACUT) // ` (dead)
-// Row 3
-#define PT_CIRC S(PT_TILD) // ^ (dead)
-#define PT_PIPE S(PT_BSLS) // |
-// Row 4
-#define PT_RABK S(PT_LABK) // >
-#define PT_SCLN S(PT_COMM) // ;
-#define PT_COLN S(PT_DOT) // :
-#define PT_UNDS S(PT_MINS) // _
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ │ │ @ │ € │ £ │ ‰ │ ¶ │ ÷ │ [ │ ] │ ≠ │ │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ Œ │ ∑ │ Æ │ ® │ ™ │ ¥ │ † │ ı │ Ø │ π │ ° │ ¨ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ Å │ ß │ ∂ │ ƒ │ ˙ │ ˇ │ ¯ │ „ │ ‘ │ ¸ │ ˜ │ ‹ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≤ │ Ω │ « │ © │ √ │ ∫ │ ¬ │ µ │ “ │ … │ — │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define PT_APPL A(PT_1) // (Apple logo)
-#define PT_AT A(PT_2) // @
-#define PT_EURO A(PT_3) // €
-#define PT_PND A(PT_4) // £
-#define PT_PERM A(PT_5) // ‰
-#define PT_PILC A(PT_6) // ¶
-#define PT_DIV A(PT_7) // ÷
-#define PT_LBRC A(PT_8) // [
-#define PT_RBRC A(PT_9) // ]
-#define PT_NEQL A(PT_0) // ≠
-// Row 2
-#define PT_OE A(PT_Q) // Œ
-#define PT_NARS A(PT_W) // ∑
-#define PT_AE A(PT_E) // Æ
-#define PT_REGD A(PT_R) // ®
-#define PT_TM A(PT_T) // ™
-#define PT_YEN A(PT_Y) // ¥
-#define PT_DAGG A(PT_U) // †
-#define PT_DLSI A(PT_I) // ı
-#define PT_OSTR A(PT_O) // Ø
-#define PT_PI A(PT_P) // π
-#define PT_DEG A(PT_MORD) // °
-#define PT_DIAE A(PT_ACUT) // ¨ (dead)
-// Row 3
-#define PT_ARNG A(PT_A) // å
-#define PT_SS A(PT_S) // ß
-#define PT_PDIF A(PT_D) // ∂
-#define PT_FHK A(PT_F) // ƒ
-#define PT_DOTA A(PT_G) // ˙
-#define PT_CARN A(PT_H) // ˇ
-#define PT_MACR A(PT_J) // ¯
-#define PT_DLQU A(PT_K) // „
-#define PT_LSQU A(PT_L) // ‘
-#define PT_CEDL A(PT_CCED) // ¸
-#define PT_STIL A(PT_TILD) // ˜ (dead)
-#define PT_LSAQ A(PT_BSLS) // ‹
-// Row 4
-#define PT_LTEQ A(PT_LABK) // ≤
-#define PT_OMEG A(PT_Z) // Ω
-#define PT_LDAQ A(PT_X) // «
-#define PT_COPY A(PT_C) // ©
-#define PT_SQRT A(PT_V) // √
-#define PT_INTG A(PT_B) // ∫
-#define PT_NOT A(PT_N) // ¬
-#define PT_MICR A(PT_M) // µ
-#define PT_LDQU A(PT_COMM) // “
-#define PT_ELLP A(PT_DOT) // …
-#define PT_MDSH A(PT_MINS) // —
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ │ ¡ │ fi │ fl │ ¢ │ ∞ │ • │ ⁄ │ { │ } │ ≈ │ ¿ │ ◊ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ ‡ │ ˚ │ │ ∏ │ │ ˝ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ ∆ │ │ │ │ │ ‚ │ ’ │ ˛ │ ˆ │ › │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≥ │ │ » │ │ │ │ │ │ ” │ · │ – │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define PT_IEXL S(A(PT_1)) // ¡
-#define PT_FI S(A(PT_2)) // fi
-#define PT_FL S(A(PT_3)) // fl
-#define PT_CENT S(A(PT_4)) // ¢
-#define PT_INFN S(A(PT_5)) // ∞
-#define PT_BULT S(A(PT_6)) // •
-#define PT_FRSL S(A(PT_7)) // ⁄
-#define PT_LCBR S(A(PT_8)) // {
-#define PT_RCBR S(A(PT_9)) // }
-#define PT_AEQL S(A(PT_0)) // ≈
-#define PT_IQUE S(A(PT_QUOT)) // ¿
-#define PT_LOZN S(A(PT_PLUS)) // ◊
-// Row 2
-#define PT_DDAG S(A(PT_U)) // ‡
-#define PT_RNGA S(A(PT_I)) // ˚
-#define PT_NARP S(A(PT_P)) // ∏
-#define PT_DACU S(A(PT_ACUT)) // ˝
-// Row 3
-#define PT_INCR S(A(PT_D)) // ∆
-#define PT_SLQU S(A(PT_K)) // ‚
-#define PT_RSQU S(A(PT_L)) // ’
-#define PT_OGON S(A(PT_CCED)) // ˛
-#define PT_DCIR S(A(PT_TILD)) // ˆ (dead)
-#define PT_RSAQ S(A(PT_BSLS)) // ›
-// Row 4
-#define PT_GTEQ S(A(PT_LABK)) // ≥
-#define PT_RDAQ S(A(PT_X)) // »
-#define PT_RDQU S(A(PT_COMM)) // ”
-#define PT_MDDT S(A(PT_DOT)) // ·
-#define PT_NDSH S(A(PT_MINS)) // –
diff --git a/quantum/keymap_extras/keymap_swedish_mac_ansi.h b/quantum/keymap_extras/keymap_swedish_mac_ansi.h
new file mode 100644
index 0000000000..0d0426f866
--- /dev/null
+++ b/quantum/keymap_extras/keymap_swedish_mac_ansi.h
@@ -0,0 +1,240 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ < │ 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 │ , │ . │ - │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_LABK KC_GRV // <
+#define SE_1 KC_1 // 1
+#define SE_2 KC_2 // 2
+#define SE_3 KC_3 // 3
+#define SE_4 KC_4 // 4
+#define SE_5 KC_5 // 5
+#define SE_6 KC_6 // 6
+#define SE_7 KC_7 // 7
+#define SE_8 KC_8 // 8
+#define SE_9 KC_9 // 9
+#define SE_0 KC_0 // 0
+#define SE_PLUS KC_MINS // +
+#define SE_ACUT KC_EQL // ´ (dead)
+// Row 2
+#define SE_Q KC_Q // Q
+#define SE_W KC_W // W
+#define SE_E KC_E // E
+#define SE_R KC_R // R
+#define SE_T KC_T // T
+#define SE_Y KC_Y // Y
+#define SE_U KC_U // U
+#define SE_I KC_I // I
+#define SE_O KC_O // O
+#define SE_P KC_P // P
+#define SE_ARNG KC_LBRC // Å
+#define SE_DIAE KC_RBRC // ¨ (dead)
+#define SE_QUOT KC_NUHS // '
+// Row 3
+#define SE_A KC_A // A
+#define SE_S KC_S // S
+#define SE_D KC_D // D
+#define SE_F KC_F // F
+#define SE_G KC_G // G
+#define SE_H KC_H // H
+#define SE_J KC_J // J
+#define SE_K KC_K // K
+#define SE_L KC_L // L
+#define SE_ODIA KC_SCLN // Ö
+#define SE_ADIA KC_QUOT // Ä
+// Row 4
+#define SE_Z KC_Z // Z
+#define SE_X KC_X // X
+#define SE_C KC_C // C
+#define SE_V KC_V // V
+#define SE_B KC_B // B
+#define SE_N KC_N // N
+#define SE_M KC_M // M
+#define SE_COMM KC_COMM // ,
+#define SE_DOT KC_DOT // .
+#define SE_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ > │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ * │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_RABK S(SE_LABK) // >
+#define SE_EXLM S(SE_1) // !
+#define SE_DQUO S(SE_2) // "
+#define SE_HASH S(SE_3) // #
+#define SE_EURO S(SE_4) // €
+#define SE_PERC S(SE_5) // %
+#define SE_AMPR S(SE_6) // &
+#define SE_SLSH S(SE_7) // /
+#define SE_LPRN S(SE_8) // (
+#define SE_RPRN S(SE_9) // )
+#define SE_EQL S(SE_0) // =
+#define SE_QUES S(SE_PLUS) // ?
+#define SE_GRV S(SE_ACUT) // `
+// Row 2
+#define SE_CIRC S(SE_DIAE) // ^ (dead)
+#define SE_ASTR S(SE_QUOT) // *
+// Row 4
+#define SE_SCLN S(SE_COMM) // ;
+#define SE_COLN S(SE_DOT) // :
+#define SE_UNDS S(SE_MINS) // _
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ≤ │ © │ ™ │ £ │ $ │ ∞ │ § │ | │ [ │ ] │ ≈ │ ± │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ @ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ *
+ */
+// Row 1
+#define SE_LTEQ A(SE_LABK) // ≤
+#define SE_COPY A(SE_1) // ©
+#define SE_TM A(SE_2) // ™
+#define SE_PND A(SE_3) // £
+#define SE_DLR A(SE_4) // $
+#define SE_INFN A(SE_5) // ∞
+#define SE_SECT A(SE_6) // §
+#define SE_PIPE A(SE_7) // |
+#define SE_LBRC A(SE_8) // [
+#define SE_RBRC A(SE_9) // ]
+#define SE_AEQL A(SE_0) // ≈
+#define SE_PLMN A(SE_PLUS) // ±
+// Row 2
+#define SE_BULT A(SE_Q) // •
+#define SE_OMEG A(SE_W) // Ω
+#define SE_EACU A(SE_E) // É
+#define SE_REGD A(SE_R) // ®
+#define SE_DAGG A(SE_T) // †
+#define SE_MICR A(SE_Y) // µ
+#define SE_UDIA A(SE_U) // Ü
+#define SE_DLSI A(SE_I) // ı
+#define SE_OE A(SE_O) // Œ
+#define SE_PI A(SE_P) // π
+#define SE_DOTA A(SE_ARNG) // ˙
+#define SE_TILD A(SE_DIAE) // ~ (dead)
+#define SE_AT A(SE_QUOT) // @
+// Row 3
+#define SE_APPL A(SE_A) // (Apple logo)
+#define SE_SS A(SE_S) // ß
+#define SE_PDIF A(SE_D) // ∂
+#define SE_FHK A(SE_F) // ƒ
+#define SE_CEDL A(SE_G) // ¸
+#define SE_OGON A(SE_H) // ˛
+#define SE_SQRT A(SE_J) // √
+#define SE_FORD A(SE_K) // ª
+#define SE_FI A(SE_L) // fi
+#define SE_OSTR A(SE_ODIA) // Ø
+#define SE_AE A(SE_ADIA) // Æ
+// Row 4
+#define SE_DIV A(SE_Z) // ÷
+#define SE_CCED A(SE_C) // Ç
+#define SE_LSAQ A(SE_V) // ‹
+#define SE_RSAQ A(SE_B) // ›
+#define SE_LSQU A(SE_N) // ‘
+#define SE_RSQU A(SE_M) // ’
+#define SE_SLQU A(SE_COMM) // ‚
+#define SE_ELLP A(SE_DOT) // …
+#define SE_NDSH A(SE_MINS) // –
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ≥ │ ¡ │ │ ¥ │ ¢ │ ‰ │ ¶ │ \ │ { │ } │ ≠ │ ¿ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ ° │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ *
+ */
+// Row 1
+#define SE_GTEQ S(A(SE_LABK)) // ≥
+#define SE_IEXL S(A(SE_1)) // ¡
+#define SE_YEN S(A(SE_3)) // ¥
+#define SE_CENT S(A(SE_4)) // ¢
+#define SE_PERM S(A(SE_5)) // ‰
+#define SE_PILC S(A(SE_6)) // ¶
+#define SE_BSLS S(A(SE_7)) // (backslash)
+#define SE_LCBR S(A(SE_8)) // {
+#define SE_RCBR S(A(SE_9)) // }
+#define SE_NEQL S(A(SE_0)) // ≠
+#define SE_IQUE S(A(SE_PLUS)) // ¿
+// Row 2
+#define SE_DEG S(A(SE_Q)) // °
+#define SE_DACU S(A(SE_W)) // ˝
+#define SE_DDAG S(A(SE_T)) // ‡
+#define SE_STIL S(A(SE_Y)) // ˜
+#define SE_DCIR S(A(SE_I)) // ˆ
+#define SE_NARP S(A(SE_P)) // ∏
+#define SE_RNGA S(A(SE_ARNG)) // ˚
+// Row 3
+#define SE_LOZN S(A(SE_A)) // ◊
+#define SE_NARS S(A(SE_S)) // ∑
+#define SE_INCR S(A(SE_D)) // ∆
+#define SE_INTG S(A(SE_F)) // ∫
+#define SE_MACR S(A(SE_G)) // ¯
+#define SE_BREV S(A(SE_H)) // ˘
+#define SE_NOT S(A(SE_J)) // ¬
+#define SE_MORD S(A(SE_K)) // º
+#define SE_FL S(A(SE_L)) // fl
+// Row 4
+#define SE_FRSL S(A(SE_Z)) // ⁄
+#define SE_CARN S(A(SE_X)) // ˇ
+#define SE_LDAQ S(A(SE_V)) // «
+#define SE_RDAQ S(A(SE_B)) // »
+#define SE_LDQU S(A(SE_N)) // “
+#define SE_RDQU S(A(SE_M)) // ”
+#define SE_DLQU S(A(SE_COMM)) // „
+#define SE_MDDT S(A(SE_DOT)) // ·
+#define SE_MDSH S(A(SE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_swedish_mac_iso.h b/quantum/keymap_extras/keymap_swedish_mac_iso.h
new file mode 100644
index 0000000000..ab155530ae
--- /dev/null
+++ b/quantum/keymap_extras/keymap_swedish_mac_iso.h
@@ -0,0 +1,239 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ § │ 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 │ , │ . │ - │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_SECT KC_GRV // §
+#define SE_1 KC_1 // 1
+#define SE_2 KC_2 // 2
+#define SE_3 KC_3 // 3
+#define SE_4 KC_4 // 4
+#define SE_5 KC_5 // 5
+#define SE_6 KC_6 // 6
+#define SE_7 KC_7 // 7
+#define SE_8 KC_8 // 8
+#define SE_9 KC_9 // 9
+#define SE_0 KC_0 // 0
+#define SE_PLUS KC_MINS // +
+#define SE_ACUT KC_EQL // ´ (dead)
+// Row 2
+#define SE_Q KC_Q // Q
+#define SE_W KC_W // W
+#define SE_E KC_E // E
+#define SE_R KC_R // R
+#define SE_T KC_T // T
+#define SE_Y KC_Y // Y
+#define SE_U KC_U // U
+#define SE_I KC_I // I
+#define SE_O KC_O // O
+#define SE_P KC_P // P
+#define SE_ARNG KC_LBRC // Å
+#define SE_DIAE KC_RBRC // ¨ (dead)
+// Row 3
+#define SE_A KC_A // A
+#define SE_S KC_S // S
+#define SE_D KC_D // D
+#define SE_F KC_F // F
+#define SE_G KC_G // G
+#define SE_H KC_H // H
+#define SE_J KC_J // J
+#define SE_K KC_K // K
+#define SE_L KC_L // L
+#define SE_ODIA KC_SCLN // Ö
+#define SE_ADIA KC_QUOT // Ä
+#define SE_QUOT KC_NUHS // '
+// Row 4
+#define SE_LABK KC_NUBS // <
+#define SE_Z KC_Z // Z
+#define SE_X KC_X // X
+#define SE_C KC_C // C
+#define SE_V KC_V // V
+#define SE_B KC_B // B
+#define SE_N KC_N // N
+#define SE_M KC_M // M
+#define SE_COMM KC_COMM // ,
+#define SE_DOT KC_DOT // .
+#define SE_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ° │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_DEG S(SE_SECT) // °
+#define SE_EXLM S(SE_1) // !
+#define SE_DQUO S(SE_2) // "
+#define SE_HASH S(SE_3) // #
+#define SE_EURO S(SE_4) // €
+#define SE_PERC S(SE_5) // %
+#define SE_AMPR S(SE_6) // &
+#define SE_SLSH S(SE_7) // /
+#define SE_LPRN S(SE_8) // (
+#define SE_RPRN S(SE_9) // )
+#define SE_EQL S(SE_0) // =
+#define SE_QUES S(SE_PLUS) // ?
+#define SE_GRV S(SE_ACUT) // `
+// Row 2
+#define SE_CIRC S(SE_DIAE) // ^ (dead)
+// Row 3
+#define SE_ASTR S(SE_QUOT) // *
+// Row 4
+#define SE_RABK S(SE_LABK) // >
+#define SE_SCLN S(SE_COMM) // ;
+#define SE_COLN S(SE_DOT) // :
+#define SE_UNDS S(SE_MINS) // _
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ¶ │ © │ ™ │ £ │ $ │ ∞ │ │ | │ [ │ ] │ ≈ │ ± │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ @ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≤ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_PILC A(SE_SECT) // ¶
+#define SE_COPY A(SE_1) // ©
+#define SE_TM A(SE_2) // ™
+#define SE_PND A(SE_3) // £
+#define SE_DLR A(SE_4) // $
+#define SE_INFN A(SE_5) // ∞
+#define SE_PIPE A(SE_7) // |
+#define SE_LBRC A(SE_8) // [
+#define SE_RBRC A(SE_9) // ]
+#define SE_AEQL A(SE_0) // ≈
+#define SE_PLMN A(SE_PLUS) // ±
+// Row 2
+#define SE_BULT A(SE_Q) // •
+#define SE_OMEG A(SE_W) // Ω
+#define SE_EACU A(SE_E) // É
+#define SE_REGD A(SE_R) // ®
+#define SE_DAGG A(SE_T) // †
+#define SE_MICR A(SE_Y) // µ
+#define SE_UDIA A(SE_U) // Ü
+#define SE_DLSI A(SE_I) // ı
+#define SE_OE A(SE_O) // Œ
+#define SE_PI A(SE_P) // π
+#define SE_DOTA A(SE_ARNG) // ˙
+#define SE_TILD A(SE_DIAE) // ~ (dead)
+// Row 3
+#define SE_APPL A(SE_A) // (Apple logo)
+#define SE_SS A(SE_S) // ß
+#define SE_PDIF A(SE_D) // ∂
+#define SE_FHK A(SE_F) // ƒ
+#define SE_CEDL A(SE_G) // ¸
+#define SE_OGON A(SE_H) // ˛
+#define SE_SQRT A(SE_J) // √
+#define SE_FORD A(SE_K) // ª
+#define SE_FI A(SE_L) // fi
+#define SE_OSTR A(SE_ODIA) // Ø
+#define SE_AE A(SE_ADIA) // Æ
+#define SE_AT A(SE_QUOT) // @
+// Row 4
+#define SE_LTEQ A(SE_LABK) // ≤
+#define SE_DIV A(SE_Z) // ÷
+#define SE_CCED A(SE_C) // Ç
+#define SE_LSAQ A(SE_V) // ‹
+#define SE_RSAQ A(SE_B) // ›
+#define SE_LSQU A(SE_N) // ‘
+#define SE_RSQU A(SE_M) // ’
+#define SE_SLQU A(SE_COMM) // ‚
+#define SE_ELLP A(SE_DOT) // …
+#define SE_NDSH A(SE_MINS) // –
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ │ ¡ │ ” │ ¥ │ ¢ │ ‰ │ │ \ │ { │ } │ ≠ │ ¿ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≥ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_IEXL S(A(SE_1)) // ¡
+#define SE_YEN S(A(SE_3)) // ¥
+#define SE_CENT S(A(SE_4)) // ¢
+#define SE_PERM S(A(SE_5)) // ‰
+#define SE_BSLS S(A(SE_7)) // (backslash)
+#define SE_LCBR S(A(SE_8)) // {
+#define SE_RCBR S(A(SE_9)) // }
+#define SE_NEQL S(A(SE_0)) // ≠
+#define SE_IQUE S(A(SE_PLUS)) // ¿
+// Row 2
+#define SE_DACU S(A(SE_W)) // ˝
+#define SE_DDAG S(A(SE_T)) // ‡
+#define SE_STIL S(A(SE_Y)) // ˜
+#define SE_DCIR S(A(SE_I)) // ˆ
+#define SE_NARP S(A(SE_P)) // ∏
+#define SE_RNGA S(A(SE_ARNG)) // ˚
+// Row 3
+#define SE_LOZN S(A(SE_A)) // ◊
+#define SE_NARS S(A(SE_S)) // ∑
+#define SE_INCR S(A(SE_D)) // ∆
+#define SE_INTG S(A(SE_F)) // ∫
+#define SE_MACR S(A(SE_G)) // ¯
+#define SE_BREV S(A(SE_H)) // ˘
+#define SE_NOT S(A(SE_J)) // ¬
+#define SE_MORD S(A(SE_K)) // º
+#define SE_FL S(A(SE_L)) // fl
+// Row 4
+#define SE_GTEQ S(A(SE_LABK)) // ≥
+#define SE_FRSL S(A(SE_Z)) // ⁄
+#define SE_CARN S(A(SE_X)) // ˇ
+#define SE_LDAQ S(A(SE_V)) // «
+#define SE_RDAQ S(A(SE_B)) // »
+#define SE_LDQU S(A(SE_N)) // “
+#define SE_RDQU S(A(SE_M)) // ”
+#define SE_DLQU S(A(SE_COMM)) // „
+#define SE_MDDT S(A(SE_DOT)) // ·
+#define SE_MDSH S(A(SE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_swedish_osx_ansi.h b/quantum/keymap_extras/keymap_swedish_osx_ansi.h
deleted file mode 100644
index 0d0426f866..0000000000
--- a/quantum/keymap_extras/keymap_swedish_osx_ansi.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/* Copyright 2021
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ < │ 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 │ , │ . │ - │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_LABK KC_GRV // <
-#define SE_1 KC_1 // 1
-#define SE_2 KC_2 // 2
-#define SE_3 KC_3 // 3
-#define SE_4 KC_4 // 4
-#define SE_5 KC_5 // 5
-#define SE_6 KC_6 // 6
-#define SE_7 KC_7 // 7
-#define SE_8 KC_8 // 8
-#define SE_9 KC_9 // 9
-#define SE_0 KC_0 // 0
-#define SE_PLUS KC_MINS // +
-#define SE_ACUT KC_EQL // ´ (dead)
-// Row 2
-#define SE_Q KC_Q // Q
-#define SE_W KC_W // W
-#define SE_E KC_E // E
-#define SE_R KC_R // R
-#define SE_T KC_T // T
-#define SE_Y KC_Y // Y
-#define SE_U KC_U // U
-#define SE_I KC_I // I
-#define SE_O KC_O // O
-#define SE_P KC_P // P
-#define SE_ARNG KC_LBRC // Å
-#define SE_DIAE KC_RBRC // ¨ (dead)
-#define SE_QUOT KC_NUHS // '
-// Row 3
-#define SE_A KC_A // A
-#define SE_S KC_S // S
-#define SE_D KC_D // D
-#define SE_F KC_F // F
-#define SE_G KC_G // G
-#define SE_H KC_H // H
-#define SE_J KC_J // J
-#define SE_K KC_K // K
-#define SE_L KC_L // L
-#define SE_ODIA KC_SCLN // Ö
-#define SE_ADIA KC_QUOT // Ä
-// Row 4
-#define SE_Z KC_Z // Z
-#define SE_X KC_X // X
-#define SE_C KC_C // C
-#define SE_V KC_V // V
-#define SE_B KC_B // B
-#define SE_N KC_N // N
-#define SE_M KC_M // M
-#define SE_COMM KC_COMM // ,
-#define SE_DOT KC_DOT // .
-#define SE_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ > │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ * │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_RABK S(SE_LABK) // >
-#define SE_EXLM S(SE_1) // !
-#define SE_DQUO S(SE_2) // "
-#define SE_HASH S(SE_3) // #
-#define SE_EURO S(SE_4) // €
-#define SE_PERC S(SE_5) // %
-#define SE_AMPR S(SE_6) // &
-#define SE_SLSH S(SE_7) // /
-#define SE_LPRN S(SE_8) // (
-#define SE_RPRN S(SE_9) // )
-#define SE_EQL S(SE_0) // =
-#define SE_QUES S(SE_PLUS) // ?
-#define SE_GRV S(SE_ACUT) // `
-// Row 2
-#define SE_CIRC S(SE_DIAE) // ^ (dead)
-#define SE_ASTR S(SE_QUOT) // *
-// Row 4
-#define SE_SCLN S(SE_COMM) // ;
-#define SE_COLN S(SE_DOT) // :
-#define SE_UNDS S(SE_MINS) // _
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ≤ │ © │ ™ │ £ │ $ │ ∞ │ § │ | │ [ │ ] │ ≈ │ ± │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ @ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- *
- */
-// Row 1
-#define SE_LTEQ A(SE_LABK) // ≤
-#define SE_COPY A(SE_1) // ©
-#define SE_TM A(SE_2) // ™
-#define SE_PND A(SE_3) // £
-#define SE_DLR A(SE_4) // $
-#define SE_INFN A(SE_5) // ∞
-#define SE_SECT A(SE_6) // §
-#define SE_PIPE A(SE_7) // |
-#define SE_LBRC A(SE_8) // [
-#define SE_RBRC A(SE_9) // ]
-#define SE_AEQL A(SE_0) // ≈
-#define SE_PLMN A(SE_PLUS) // ±
-// Row 2
-#define SE_BULT A(SE_Q) // •
-#define SE_OMEG A(SE_W) // Ω
-#define SE_EACU A(SE_E) // É
-#define SE_REGD A(SE_R) // ®
-#define SE_DAGG A(SE_T) // †
-#define SE_MICR A(SE_Y) // µ
-#define SE_UDIA A(SE_U) // Ü
-#define SE_DLSI A(SE_I) // ı
-#define SE_OE A(SE_O) // Œ
-#define SE_PI A(SE_P) // π
-#define SE_DOTA A(SE_ARNG) // ˙
-#define SE_TILD A(SE_DIAE) // ~ (dead)
-#define SE_AT A(SE_QUOT) // @
-// Row 3
-#define SE_APPL A(SE_A) // (Apple logo)
-#define SE_SS A(SE_S) // ß
-#define SE_PDIF A(SE_D) // ∂
-#define SE_FHK A(SE_F) // ƒ
-#define SE_CEDL A(SE_G) // ¸
-#define SE_OGON A(SE_H) // ˛
-#define SE_SQRT A(SE_J) // √
-#define SE_FORD A(SE_K) // ª
-#define SE_FI A(SE_L) // fi
-#define SE_OSTR A(SE_ODIA) // Ø
-#define SE_AE A(SE_ADIA) // Æ
-// Row 4
-#define SE_DIV A(SE_Z) // ÷
-#define SE_CCED A(SE_C) // Ç
-#define SE_LSAQ A(SE_V) // ‹
-#define SE_RSAQ A(SE_B) // ›
-#define SE_LSQU A(SE_N) // ‘
-#define SE_RSQU A(SE_M) // ’
-#define SE_SLQU A(SE_COMM) // ‚
-#define SE_ELLP A(SE_DOT) // …
-#define SE_NDSH A(SE_MINS) // –
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ≥ │ ¡ │ │ ¥ │ ¢ │ ‰ │ ¶ │ \ │ { │ } │ ≠ │ ¿ │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ ° │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- *
- */
-// Row 1
-#define SE_GTEQ S(A(SE_LABK)) // ≥
-#define SE_IEXL S(A(SE_1)) // ¡
-#define SE_YEN S(A(SE_3)) // ¥
-#define SE_CENT S(A(SE_4)) // ¢
-#define SE_PERM S(A(SE_5)) // ‰
-#define SE_PILC S(A(SE_6)) // ¶
-#define SE_BSLS S(A(SE_7)) // (backslash)
-#define SE_LCBR S(A(SE_8)) // {
-#define SE_RCBR S(A(SE_9)) // }
-#define SE_NEQL S(A(SE_0)) // ≠
-#define SE_IQUE S(A(SE_PLUS)) // ¿
-// Row 2
-#define SE_DEG S(A(SE_Q)) // °
-#define SE_DACU S(A(SE_W)) // ˝
-#define SE_DDAG S(A(SE_T)) // ‡
-#define SE_STIL S(A(SE_Y)) // ˜
-#define SE_DCIR S(A(SE_I)) // ˆ
-#define SE_NARP S(A(SE_P)) // ∏
-#define SE_RNGA S(A(SE_ARNG)) // ˚
-// Row 3
-#define SE_LOZN S(A(SE_A)) // ◊
-#define SE_NARS S(A(SE_S)) // ∑
-#define SE_INCR S(A(SE_D)) // ∆
-#define SE_INTG S(A(SE_F)) // ∫
-#define SE_MACR S(A(SE_G)) // ¯
-#define SE_BREV S(A(SE_H)) // ˘
-#define SE_NOT S(A(SE_J)) // ¬
-#define SE_MORD S(A(SE_K)) // º
-#define SE_FL S(A(SE_L)) // fl
-// Row 4
-#define SE_FRSL S(A(SE_Z)) // ⁄
-#define SE_CARN S(A(SE_X)) // ˇ
-#define SE_LDAQ S(A(SE_V)) // «
-#define SE_RDAQ S(A(SE_B)) // »
-#define SE_LDQU S(A(SE_N)) // “
-#define SE_RDQU S(A(SE_M)) // ”
-#define SE_DLQU S(A(SE_COMM)) // „
-#define SE_MDDT S(A(SE_DOT)) // ·
-#define SE_MDSH S(A(SE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_swedish_osx_iso.h b/quantum/keymap_extras/keymap_swedish_osx_iso.h
deleted file mode 100644
index ab155530ae..0000000000
--- a/quantum/keymap_extras/keymap_swedish_osx_iso.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/* Copyright 2021
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ § │ 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 │ , │ . │ - │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_SECT KC_GRV // §
-#define SE_1 KC_1 // 1
-#define SE_2 KC_2 // 2
-#define SE_3 KC_3 // 3
-#define SE_4 KC_4 // 4
-#define SE_5 KC_5 // 5
-#define SE_6 KC_6 // 6
-#define SE_7 KC_7 // 7
-#define SE_8 KC_8 // 8
-#define SE_9 KC_9 // 9
-#define SE_0 KC_0 // 0
-#define SE_PLUS KC_MINS // +
-#define SE_ACUT KC_EQL // ´ (dead)
-// Row 2
-#define SE_Q KC_Q // Q
-#define SE_W KC_W // W
-#define SE_E KC_E // E
-#define SE_R KC_R // R
-#define SE_T KC_T // T
-#define SE_Y KC_Y // Y
-#define SE_U KC_U // U
-#define SE_I KC_I // I
-#define SE_O KC_O // O
-#define SE_P KC_P // P
-#define SE_ARNG KC_LBRC // Å
-#define SE_DIAE KC_RBRC // ¨ (dead)
-// Row 3
-#define SE_A KC_A // A
-#define SE_S KC_S // S
-#define SE_D KC_D // D
-#define SE_F KC_F // F
-#define SE_G KC_G // G
-#define SE_H KC_H // H
-#define SE_J KC_J // J
-#define SE_K KC_K // K
-#define SE_L KC_L // L
-#define SE_ODIA KC_SCLN // Ö
-#define SE_ADIA KC_QUOT // Ä
-#define SE_QUOT KC_NUHS // '
-// Row 4
-#define SE_LABK KC_NUBS // <
-#define SE_Z KC_Z // Z
-#define SE_X KC_X // X
-#define SE_C KC_C // C
-#define SE_V KC_V // V
-#define SE_B KC_B // B
-#define SE_N KC_N // N
-#define SE_M KC_M // M
-#define SE_COMM KC_COMM // ,
-#define SE_DOT KC_DOT // .
-#define SE_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ° │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_DEG S(SE_SECT) // °
-#define SE_EXLM S(SE_1) // !
-#define SE_DQUO S(SE_2) // "
-#define SE_HASH S(SE_3) // #
-#define SE_EURO S(SE_4) // €
-#define SE_PERC S(SE_5) // %
-#define SE_AMPR S(SE_6) // &
-#define SE_SLSH S(SE_7) // /
-#define SE_LPRN S(SE_8) // (
-#define SE_RPRN S(SE_9) // )
-#define SE_EQL S(SE_0) // =
-#define SE_QUES S(SE_PLUS) // ?
-#define SE_GRV S(SE_ACUT) // `
-// Row 2
-#define SE_CIRC S(SE_DIAE) // ^ (dead)
-// Row 3
-#define SE_ASTR S(SE_QUOT) // *
-// Row 4
-#define SE_RABK S(SE_LABK) // >
-#define SE_SCLN S(SE_COMM) // ;
-#define SE_COLN S(SE_DOT) // :
-#define SE_UNDS S(SE_MINS) // _
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ¶ │ © │ ™ │ £ │ $ │ ∞ │ │ | │ [ │ ] │ ≈ │ ± │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ @ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≤ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_PILC A(SE_SECT) // ¶
-#define SE_COPY A(SE_1) // ©
-#define SE_TM A(SE_2) // ™
-#define SE_PND A(SE_3) // £
-#define SE_DLR A(SE_4) // $
-#define SE_INFN A(SE_5) // ∞
-#define SE_PIPE A(SE_7) // |
-#define SE_LBRC A(SE_8) // [
-#define SE_RBRC A(SE_9) // ]
-#define SE_AEQL A(SE_0) // ≈
-#define SE_PLMN A(SE_PLUS) // ±
-// Row 2
-#define SE_BULT A(SE_Q) // •
-#define SE_OMEG A(SE_W) // Ω
-#define SE_EACU A(SE_E) // É
-#define SE_REGD A(SE_R) // ®
-#define SE_DAGG A(SE_T) // †
-#define SE_MICR A(SE_Y) // µ
-#define SE_UDIA A(SE_U) // Ü
-#define SE_DLSI A(SE_I) // ı
-#define SE_OE A(SE_O) // Œ
-#define SE_PI A(SE_P) // π
-#define SE_DOTA A(SE_ARNG) // ˙
-#define SE_TILD A(SE_DIAE) // ~ (dead)
-// Row 3
-#define SE_APPL A(SE_A) // (Apple logo)
-#define SE_SS A(SE_S) // ß
-#define SE_PDIF A(SE_D) // ∂
-#define SE_FHK A(SE_F) // ƒ
-#define SE_CEDL A(SE_G) // ¸
-#define SE_OGON A(SE_H) // ˛
-#define SE_SQRT A(SE_J) // √
-#define SE_FORD A(SE_K) // ª
-#define SE_FI A(SE_L) // fi
-#define SE_OSTR A(SE_ODIA) // Ø
-#define SE_AE A(SE_ADIA) // Æ
-#define SE_AT A(SE_QUOT) // @
-// Row 4
-#define SE_LTEQ A(SE_LABK) // ≤
-#define SE_DIV A(SE_Z) // ÷
-#define SE_CCED A(SE_C) // Ç
-#define SE_LSAQ A(SE_V) // ‹
-#define SE_RSAQ A(SE_B) // ›
-#define SE_LSQU A(SE_N) // ‘
-#define SE_RSQU A(SE_M) // ’
-#define SE_SLQU A(SE_COMM) // ‚
-#define SE_ELLP A(SE_DOT) // …
-#define SE_NDSH A(SE_MINS) // –
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ │ ¡ │ ” │ ¥ │ ¢ │ ‰ │ │ \ │ { │ } │ ≠ │ ¿ │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≥ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_IEXL S(A(SE_1)) // ¡
-#define SE_YEN S(A(SE_3)) // ¥
-#define SE_CENT S(A(SE_4)) // ¢
-#define SE_PERM S(A(SE_5)) // ‰
-#define SE_BSLS S(A(SE_7)) // (backslash)
-#define SE_LCBR S(A(SE_8)) // {
-#define SE_RCBR S(A(SE_9)) // }
-#define SE_NEQL S(A(SE_0)) // ≠
-#define SE_IQUE S(A(SE_PLUS)) // ¿
-// Row 2
-#define SE_DACU S(A(SE_W)) // ˝
-#define SE_DDAG S(A(SE_T)) // ‡
-#define SE_STIL S(A(SE_Y)) // ˜
-#define SE_DCIR S(A(SE_I)) // ˆ
-#define SE_NARP S(A(SE_P)) // ∏
-#define SE_RNGA S(A(SE_ARNG)) // ˚
-// Row 3
-#define SE_LOZN S(A(SE_A)) // ◊
-#define SE_NARS S(A(SE_S)) // ∑
-#define SE_INCR S(A(SE_D)) // ∆
-#define SE_INTG S(A(SE_F)) // ∫
-#define SE_MACR S(A(SE_G)) // ¯
-#define SE_BREV S(A(SE_H)) // ˘
-#define SE_NOT S(A(SE_J)) // ¬
-#define SE_MORD S(A(SE_K)) // º
-#define SE_FL S(A(SE_L)) // fl
-// Row 4
-#define SE_GTEQ S(A(SE_LABK)) // ≥
-#define SE_FRSL S(A(SE_Z)) // ⁄
-#define SE_CARN S(A(SE_X)) // ˇ
-#define SE_LDAQ S(A(SE_V)) // «
-#define SE_RDAQ S(A(SE_B)) // »
-#define SE_LDQU S(A(SE_N)) // “
-#define SE_RDQU S(A(SE_M)) // ”
-#define SE_DLQU S(A(SE_COMM)) // „
-#define SE_MDDT S(A(SE_DOT)) // ·
-#define SE_MDSH S(A(SE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_swedish_pro_mac_ansi.h b/quantum/keymap_extras/keymap_swedish_pro_mac_ansi.h
new file mode 100644
index 0000000000..9b44517625
--- /dev/null
+++ b/quantum/keymap_extras/keymap_swedish_pro_mac_ansi.h
@@ -0,0 +1,240 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ < │ 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 │ , │ . │ - │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_LABK KC_GRV // <
+#define SE_1 KC_1 // 1
+#define SE_2 KC_2 // 2
+#define SE_3 KC_3 // 3
+#define SE_4 KC_4 // 4
+#define SE_5 KC_5 // 5
+#define SE_6 KC_6 // 6
+#define SE_7 KC_7 // 7
+#define SE_8 KC_8 // 8
+#define SE_9 KC_9 // 9
+#define SE_0 KC_0 // 0
+#define SE_PLUS KC_MINS // +
+#define SE_ACUT KC_EQL // ´ (dead)
+// Row 2
+#define SE_Q KC_Q // Q
+#define SE_W KC_W // W
+#define SE_E KC_E // E
+#define SE_R KC_R // R
+#define SE_T KC_T // T
+#define SE_Y KC_Y // Y
+#define SE_U KC_U // U
+#define SE_I KC_I // I
+#define SE_O KC_O // O
+#define SE_P KC_P // P
+#define SE_ARNG KC_LBRC // Å
+#define SE_DIAE KC_RBRC // ¨ (dead)
+#define SE_QUOT KC_NUHS // '
+// Row 3
+#define SE_A KC_A // A
+#define SE_S KC_S // S
+#define SE_D KC_D // D
+#define SE_F KC_F // F
+#define SE_G KC_G // G
+#define SE_H KC_H // H
+#define SE_J KC_J // J
+#define SE_K KC_K // K
+#define SE_L KC_L // L
+#define SE_ODIA KC_SCLN // Ö
+#define SE_ADIA KC_QUOT // Ä
+// Row 4
+#define SE_Z KC_Z // Z
+#define SE_X KC_X // X
+#define SE_C KC_C // C
+#define SE_V KC_V // V
+#define SE_B KC_B // B
+#define SE_N KC_N // N
+#define SE_M KC_M // M
+#define SE_COMM KC_COMM // ,
+#define SE_DOT KC_DOT // .
+#define SE_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ > │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ * │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_RABK S(SE_LABK) // >
+#define SE_EXLM S(SE_1) // !
+#define SE_DQUO S(SE_2) // "
+#define SE_HASH S(SE_3) // #
+#define SE_EURO S(SE_4) // €
+#define SE_PERC S(SE_5) // %
+#define SE_AMPR S(SE_6) // &
+#define SE_SLSH S(SE_7) // /
+#define SE_LPRN S(SE_8) // (
+#define SE_RPRN S(SE_9) // )
+#define SE_EQL S(SE_0) // =
+#define SE_QUES S(SE_PLUS) // ?
+#define SE_GRV S(SE_ACUT) // `
+// Row 2
+#define SE_CIRC S(SE_DIAE) // ^ (dead)
+#define SE_ASTR S(SE_QUOT) // *
+// Row 4
+#define SE_SCLN S(SE_COMM) // ;
+#define SE_COLN S(SE_DOT) // :
+#define SE_UNDS S(SE_MINS) // _
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ≤ │ © │ @ │ £ │ $ │ ∞ │ § │ | │ [ │ ] │ ≈ │ ± │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ ™ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ *
+ */
+// Row 1
+#define SE_LTEQ A(SE_LABK) // ≤
+#define SE_COPY A(SE_1) // ©
+#define SE_AT A(SE_2) // @
+#define SE_PND A(SE_3) // £
+#define SE_DLR A(SE_4) // $
+#define SE_INFN A(SE_5) // ∞
+#define SE_SECT A(SE_6) // §
+#define SE_PIPE A(SE_7) // |
+#define SE_LBRC A(SE_8) // [
+#define SE_RBRC A(SE_9) // ]
+#define SE_AEQL A(SE_0) // ≈
+#define SE_PLMN A(SE_PLUS) // ±
+// Row 2
+#define SE_BULT A(SE_Q) // •
+#define SE_OMEG A(SE_W) // Ω
+#define SE_EACU A(SE_E) // É
+#define SE_REGD A(SE_R) // ®
+#define SE_DAGG A(SE_T) // †
+#define SE_MICR A(SE_Y) // µ
+#define SE_UDIA A(SE_U) // Ü
+#define SE_DLSI A(SE_I) // ı
+#define SE_OE A(SE_O) // Œ
+#define SE_PI A(SE_P) // π
+#define SE_DOTA A(SE_ARNG) // ˙
+#define SE_TILD A(SE_DIAE) // ~ (dead)
+#define SE_TM A(SE_QUOT) // ™
+// Row 3
+#define SE_APPL A(SE_A) // (Apple logo)
+#define SE_SS A(SE_S) // ß
+#define SE_PDIF A(SE_D) // ∂
+#define SE_FHK A(SE_F) // ƒ
+#define SE_CEDL A(SE_G) // ¸
+#define SE_OGON A(SE_H) // ˛
+#define SE_SQRT A(SE_J) // √
+#define SE_FORD A(SE_K) // ª
+#define SE_FI A(SE_L) // fi
+#define SE_OSTR A(SE_ODIA) // Ø
+#define SE_AE A(SE_ADIA) // Æ
+// Row 4
+#define SE_DIV A(SE_Z) // ÷
+#define SE_CCED A(SE_C) // Ç
+#define SE_LSAQ A(SE_V) // ‹
+#define SE_RSAQ A(SE_B) // ›
+#define SE_LSQU A(SE_N) // ‘
+#define SE_RSQU A(SE_M) // ’
+#define SE_SLQU A(SE_COMM) // ‚
+#define SE_ELLP A(SE_DOT) // …
+#define SE_NDSH A(SE_MINS) // –
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ≥ │ ¡ │ │ ¥ │ ¢ │ ‰ │ ¶ │ \ │ { │ } │ ≠ │ ¿ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ ° │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
+ * │ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │
+ * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ *
+ */
+// Row 1
+#define SE_GTEQ S(A(SE_LABK)) // ≥
+#define SE_IEXL S(A(SE_1)) // ¡
+#define SE_YEN S(A(SE_3)) // ¥
+#define SE_CENT S(A(SE_4)) // ¢
+#define SE_PERM S(A(SE_5)) // ‰
+#define SE_PILC S(A(SE_6)) // ¶
+#define SE_BSLS S(A(SE_7)) // (backslash)
+#define SE_LCBR S(A(SE_8)) // {
+#define SE_RCBR S(A(SE_9)) // }
+#define SE_NEQL S(A(SE_0)) // ≠
+#define SE_IQUE S(A(SE_PLUS)) // ¿
+// Row 2
+#define SE_DEG S(A(SE_Q)) // °
+#define SE_DACU S(A(SE_W)) // ˝
+#define SE_DDAG S(A(SE_T)) // ‡
+#define SE_STIL S(A(SE_Y)) // ˜
+#define SE_DCIR S(A(SE_I)) // ˆ
+#define SE_NARP S(A(SE_P)) // ∏
+#define SE_RNGA S(A(SE_ARNG)) // ˚
+// Row 3
+#define SE_LOZN S(A(SE_A)) // ◊
+#define SE_NARS S(A(SE_S)) // ∑
+#define SE_INCR S(A(SE_D)) // ∆
+#define SE_INTG S(A(SE_F)) // ∫
+#define SE_MACR S(A(SE_G)) // ¯
+#define SE_BREV S(A(SE_H)) // ˘
+#define SE_NOT S(A(SE_J)) // ¬
+#define SE_MORD S(A(SE_K)) // º
+#define SE_FL S(A(SE_L)) // fl
+// Row 4
+#define SE_FRSL S(A(SE_Z)) // ⁄
+#define SE_CARN S(A(SE_X)) // ˇ
+#define SE_LDAQ S(A(SE_V)) // «
+#define SE_RDAQ S(A(SE_B)) // »
+#define SE_LDQU S(A(SE_N)) // “
+#define SE_RDQU S(A(SE_M)) // ”
+#define SE_DLQU S(A(SE_COMM)) // „
+#define SE_MDDT S(A(SE_DOT)) // ·
+#define SE_MDSH S(A(SE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_swedish_pro_mac_iso.h b/quantum/keymap_extras/keymap_swedish_pro_mac_iso.h
new file mode 100644
index 0000000000..f2d6605865
--- /dev/null
+++ b/quantum/keymap_extras/keymap_swedish_pro_mac_iso.h
@@ -0,0 +1,239 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ § │ 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 │ , │ . │ - │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_SECT KC_GRV // §
+#define SE_1 KC_1 // 1
+#define SE_2 KC_2 // 2
+#define SE_3 KC_3 // 3
+#define SE_4 KC_4 // 4
+#define SE_5 KC_5 // 5
+#define SE_6 KC_6 // 6
+#define SE_7 KC_7 // 7
+#define SE_8 KC_8 // 8
+#define SE_9 KC_9 // 9
+#define SE_0 KC_0 // 0
+#define SE_PLUS KC_MINS // +
+#define SE_ACUT KC_EQL // ´ (dead)
+// Row 2
+#define SE_Q KC_Q // Q
+#define SE_W KC_W // W
+#define SE_E KC_E // E
+#define SE_R KC_R // R
+#define SE_T KC_T // T
+#define SE_Y KC_Y // Y
+#define SE_U KC_U // U
+#define SE_I KC_I // I
+#define SE_O KC_O // O
+#define SE_P KC_P // P
+#define SE_ARNG KC_LBRC // Å
+#define SE_DIAE KC_RBRC // ¨ (dead)
+// Row 3
+#define SE_A KC_A // A
+#define SE_S KC_S // S
+#define SE_D KC_D // D
+#define SE_F KC_F // F
+#define SE_G KC_G // G
+#define SE_H KC_H // H
+#define SE_J KC_J // J
+#define SE_K KC_K // K
+#define SE_L KC_L // L
+#define SE_ODIA KC_SCLN // Ö
+#define SE_ADIA KC_QUOT // Ä
+#define SE_QUOT KC_NUHS // '
+// Row 4
+#define SE_LABK KC_NUBS // <
+#define SE_Z KC_Z // Z
+#define SE_X KC_X // X
+#define SE_C KC_C // C
+#define SE_V KC_V // V
+#define SE_B KC_B // B
+#define SE_N KC_N // N
+#define SE_M KC_M // M
+#define SE_COMM KC_COMM // ,
+#define SE_DOT KC_DOT // .
+#define SE_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ° │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_DEG S(SE_SECT) // °
+#define SE_EXLM S(SE_1) // !
+#define SE_DQUO S(SE_2) // "
+#define SE_HASH S(SE_3) // #
+#define SE_EURO S(SE_4) // €
+#define SE_PERC S(SE_5) // %
+#define SE_AMPR S(SE_6) // &
+#define SE_SLSH S(SE_7) // /
+#define SE_LPRN S(SE_8) // (
+#define SE_RPRN S(SE_9) // )
+#define SE_EQL S(SE_0) // =
+#define SE_QUES S(SE_PLUS) // ?
+#define SE_GRV S(SE_ACUT) // `
+// Row 2
+#define SE_CIRC S(SE_DIAE) // ^ (dead)
+// Row 3
+#define SE_ASTR S(SE_QUOT) // *
+// Row 4
+#define SE_RABK S(SE_LABK) // >
+#define SE_SCLN S(SE_COMM) // ;
+#define SE_COLN S(SE_DOT) // :
+#define SE_UNDS S(SE_MINS) // _
+
+/* Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ ¶ │ © │ @ │ £ │ $ │ ∞ │ │ | │ [ │ ] │ ≈ │ ± │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ ™ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≤ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_PILC A(SE_SECT) // ¶
+#define SE_COPY A(SE_1) // ©
+#define SE_AT A(SE_2) // @
+#define SE_PND A(SE_3) // £
+#define SE_DLR A(SE_4) // $
+#define SE_INFN A(SE_5) // ∞
+#define SE_PIPE A(SE_7) // |
+#define SE_LBRC A(SE_8) // [
+#define SE_RBRC A(SE_9) // ]
+#define SE_AEQL A(SE_0) // ≈
+#define SE_PLMN A(SE_PLUS) // ±
+// Row 2
+#define SE_BULT A(SE_Q) // •
+#define SE_OMEG A(SE_W) // Ω
+#define SE_EACU A(SE_E) // É
+#define SE_REGD A(SE_R) // ®
+#define SE_DAGG A(SE_T) // †
+#define SE_MICR A(SE_Y) // µ
+#define SE_UDIA A(SE_U) // Ü
+#define SE_DLSI A(SE_I) // ı
+#define SE_OE A(SE_O) // Œ
+#define SE_PI A(SE_P) // π
+#define SE_DOTA A(SE_ARNG) // ˙
+#define SE_TILD A(SE_DIAE) // ~ (dead)
+// Row 3
+#define SE_APPL A(SE_A) // (Apple logo)
+#define SE_SS A(SE_S) // ß
+#define SE_PDIF A(SE_D) // ∂
+#define SE_FHK A(SE_F) // ƒ
+#define SE_CEDL A(SE_G) // ¸
+#define SE_OGON A(SE_H) // ˛
+#define SE_SQRT A(SE_J) // √
+#define SE_FORD A(SE_K) // ª
+#define SE_FI A(SE_L) // fi
+#define SE_OSTR A(SE_ODIA) // Ø
+#define SE_AE A(SE_ADIA) // Æ
+#define SE_TM A(SE_QUOT) // ™
+// Row 4
+#define SE_LTEQ A(SE_LABK) // ≤
+#define SE_DIV A(SE_Z) // ÷
+#define SE_CCED A(SE_C) // Ç
+#define SE_LSAQ A(SE_V) // ‹
+#define SE_RSAQ A(SE_B) // ›
+#define SE_LSQU A(SE_N) // ‘
+#define SE_RSQU A(SE_M) // ’
+#define SE_SLQU A(SE_COMM) // ‚
+#define SE_ELLP A(SE_DOT) // …
+#define SE_NDSH A(SE_MINS) // –
+
+/* Shift+Alted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
+ * │ │ ¡ │ ” │ ¥ │ ¢ │ ‰ │ │ \ │ { │ } │ ≠ │ ¿ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
+ * │ │ │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
+ * │ │ ≥ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │
+ * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
+ * │ │ │ │ │ │ │ │
+ * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
+ */
+// Row 1
+#define SE_IEXL S(A(SE_1)) // ¡
+#define SE_YEN S(A(SE_3)) // ¥
+#define SE_CENT S(A(SE_4)) // ¢
+#define SE_PERM S(A(SE_5)) // ‰
+#define SE_BSLS S(A(SE_7)) // (backslash)
+#define SE_LCBR S(A(SE_8)) // {
+#define SE_RCBR S(A(SE_9)) // }
+#define SE_NEQL S(A(SE_0)) // ≠
+#define SE_IQUE S(A(SE_PLUS)) // ¿
+// Row 2
+#define SE_DACU S(A(SE_W)) // ˝
+#define SE_DDAG S(A(SE_T)) // ‡
+#define SE_STIL S(A(SE_Y)) // ˜
+#define SE_DCIR S(A(SE_I)) // ˆ
+#define SE_NARP S(A(SE_P)) // ∏
+#define SE_RNGA S(A(SE_ARNG)) // ˚
+// Row 3
+#define SE_LOZN S(A(SE_A)) // ◊
+#define SE_NARS S(A(SE_S)) // ∑
+#define SE_INCR S(A(SE_D)) // ∆
+#define SE_INTG S(A(SE_F)) // ∫
+#define SE_MACR S(A(SE_G)) // ¯
+#define SE_BREV S(A(SE_H)) // ˘
+#define SE_NOT S(A(SE_J)) // ¬
+#define SE_MORD S(A(SE_K)) // º
+#define SE_FL S(A(SE_L)) // fl
+// Row 4
+#define SE_GTEQ S(A(SE_LABK)) // ≥
+#define SE_FRSL S(A(SE_Z)) // ⁄
+#define SE_CARN S(A(SE_X)) // ˇ
+#define SE_LDAQ S(A(SE_V)) // «
+#define SE_RDAQ S(A(SE_B)) // »
+#define SE_LDQU S(A(SE_N)) // “
+#define SE_RDQU S(A(SE_M)) // ”
+#define SE_DLQU S(A(SE_COMM)) // „
+#define SE_MDDT S(A(SE_DOT)) // ·
+#define SE_MDSH S(A(SE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_swedish_pro_osx_ansi.h b/quantum/keymap_extras/keymap_swedish_pro_osx_ansi.h
deleted file mode 100644
index 9b44517625..0000000000
--- a/quantum/keymap_extras/keymap_swedish_pro_osx_ansi.h
+++ /dev/null
@@ -1,240 +0,0 @@
-/* Copyright 2021
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ < │ 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 │ , │ . │ - │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_LABK KC_GRV // <
-#define SE_1 KC_1 // 1
-#define SE_2 KC_2 // 2
-#define SE_3 KC_3 // 3
-#define SE_4 KC_4 // 4
-#define SE_5 KC_5 // 5
-#define SE_6 KC_6 // 6
-#define SE_7 KC_7 // 7
-#define SE_8 KC_8 // 8
-#define SE_9 KC_9 // 9
-#define SE_0 KC_0 // 0
-#define SE_PLUS KC_MINS // +
-#define SE_ACUT KC_EQL // ´ (dead)
-// Row 2
-#define SE_Q KC_Q // Q
-#define SE_W KC_W // W
-#define SE_E KC_E // E
-#define SE_R KC_R // R
-#define SE_T KC_T // T
-#define SE_Y KC_Y // Y
-#define SE_U KC_U // U
-#define SE_I KC_I // I
-#define SE_O KC_O // O
-#define SE_P KC_P // P
-#define SE_ARNG KC_LBRC // Å
-#define SE_DIAE KC_RBRC // ¨ (dead)
-#define SE_QUOT KC_NUHS // '
-// Row 3
-#define SE_A KC_A // A
-#define SE_S KC_S // S
-#define SE_D KC_D // D
-#define SE_F KC_F // F
-#define SE_G KC_G // G
-#define SE_H KC_H // H
-#define SE_J KC_J // J
-#define SE_K KC_K // K
-#define SE_L KC_L // L
-#define SE_ODIA KC_SCLN // Ö
-#define SE_ADIA KC_QUOT // Ä
-// Row 4
-#define SE_Z KC_Z // Z
-#define SE_X KC_X // X
-#define SE_C KC_C // C
-#define SE_V KC_V // V
-#define SE_B KC_B // B
-#define SE_N KC_N // N
-#define SE_M KC_M // M
-#define SE_COMM KC_COMM // ,
-#define SE_DOT KC_DOT // .
-#define SE_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ > │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ * │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_RABK S(SE_LABK) // >
-#define SE_EXLM S(SE_1) // !
-#define SE_DQUO S(SE_2) // "
-#define SE_HASH S(SE_3) // #
-#define SE_EURO S(SE_4) // €
-#define SE_PERC S(SE_5) // %
-#define SE_AMPR S(SE_6) // &
-#define SE_SLSH S(SE_7) // /
-#define SE_LPRN S(SE_8) // (
-#define SE_RPRN S(SE_9) // )
-#define SE_EQL S(SE_0) // =
-#define SE_QUES S(SE_PLUS) // ?
-#define SE_GRV S(SE_ACUT) // `
-// Row 2
-#define SE_CIRC S(SE_DIAE) // ^ (dead)
-#define SE_ASTR S(SE_QUOT) // *
-// Row 4
-#define SE_SCLN S(SE_COMM) // ;
-#define SE_COLN S(SE_DOT) // :
-#define SE_UNDS S(SE_MINS) // _
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ≤ │ © │ @ │ £ │ $ │ ∞ │ § │ | │ [ │ ] │ ≈ │ ± │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ ™ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- *
- */
-// Row 1
-#define SE_LTEQ A(SE_LABK) // ≤
-#define SE_COPY A(SE_1) // ©
-#define SE_AT A(SE_2) // @
-#define SE_PND A(SE_3) // £
-#define SE_DLR A(SE_4) // $
-#define SE_INFN A(SE_5) // ∞
-#define SE_SECT A(SE_6) // §
-#define SE_PIPE A(SE_7) // |
-#define SE_LBRC A(SE_8) // [
-#define SE_RBRC A(SE_9) // ]
-#define SE_AEQL A(SE_0) // ≈
-#define SE_PLMN A(SE_PLUS) // ±
-// Row 2
-#define SE_BULT A(SE_Q) // •
-#define SE_OMEG A(SE_W) // Ω
-#define SE_EACU A(SE_E) // É
-#define SE_REGD A(SE_R) // ®
-#define SE_DAGG A(SE_T) // †
-#define SE_MICR A(SE_Y) // µ
-#define SE_UDIA A(SE_U) // Ü
-#define SE_DLSI A(SE_I) // ı
-#define SE_OE A(SE_O) // Œ
-#define SE_PI A(SE_P) // π
-#define SE_DOTA A(SE_ARNG) // ˙
-#define SE_TILD A(SE_DIAE) // ~ (dead)
-#define SE_TM A(SE_QUOT) // ™
-// Row 3
-#define SE_APPL A(SE_A) // (Apple logo)
-#define SE_SS A(SE_S) // ß
-#define SE_PDIF A(SE_D) // ∂
-#define SE_FHK A(SE_F) // ƒ
-#define SE_CEDL A(SE_G) // ¸
-#define SE_OGON A(SE_H) // ˛
-#define SE_SQRT A(SE_J) // √
-#define SE_FORD A(SE_K) // ª
-#define SE_FI A(SE_L) // fi
-#define SE_OSTR A(SE_ODIA) // Ø
-#define SE_AE A(SE_ADIA) // Æ
-// Row 4
-#define SE_DIV A(SE_Z) // ÷
-#define SE_CCED A(SE_C) // Ç
-#define SE_LSAQ A(SE_V) // ‹
-#define SE_RSAQ A(SE_B) // ›
-#define SE_LSQU A(SE_N) // ‘
-#define SE_RSQU A(SE_M) // ’
-#define SE_SLQU A(SE_COMM) // ‚
-#define SE_ELLP A(SE_DOT) // …
-#define SE_NDSH A(SE_MINS) // –
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ≥ │ ¡ │ │ ¥ │ ¢ │ ‰ │ ¶ │ \ │ { │ } │ ≠ │ ¿ │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ ° │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
- * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──────┤
- * │ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │
- * ├─────┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- *
- */
-// Row 1
-#define SE_GTEQ S(A(SE_LABK)) // ≥
-#define SE_IEXL S(A(SE_1)) // ¡
-#define SE_YEN S(A(SE_3)) // ¥
-#define SE_CENT S(A(SE_4)) // ¢
-#define SE_PERM S(A(SE_5)) // ‰
-#define SE_PILC S(A(SE_6)) // ¶
-#define SE_BSLS S(A(SE_7)) // (backslash)
-#define SE_LCBR S(A(SE_8)) // {
-#define SE_RCBR S(A(SE_9)) // }
-#define SE_NEQL S(A(SE_0)) // ≠
-#define SE_IQUE S(A(SE_PLUS)) // ¿
-// Row 2
-#define SE_DEG S(A(SE_Q)) // °
-#define SE_DACU S(A(SE_W)) // ˝
-#define SE_DDAG S(A(SE_T)) // ‡
-#define SE_STIL S(A(SE_Y)) // ˜
-#define SE_DCIR S(A(SE_I)) // ˆ
-#define SE_NARP S(A(SE_P)) // ∏
-#define SE_RNGA S(A(SE_ARNG)) // ˚
-// Row 3
-#define SE_LOZN S(A(SE_A)) // ◊
-#define SE_NARS S(A(SE_S)) // ∑
-#define SE_INCR S(A(SE_D)) // ∆
-#define SE_INTG S(A(SE_F)) // ∫
-#define SE_MACR S(A(SE_G)) // ¯
-#define SE_BREV S(A(SE_H)) // ˘
-#define SE_NOT S(A(SE_J)) // ¬
-#define SE_MORD S(A(SE_K)) // º
-#define SE_FL S(A(SE_L)) // fl
-// Row 4
-#define SE_FRSL S(A(SE_Z)) // ⁄
-#define SE_CARN S(A(SE_X)) // ˇ
-#define SE_LDAQ S(A(SE_V)) // «
-#define SE_RDAQ S(A(SE_B)) // »
-#define SE_LDQU S(A(SE_N)) // “
-#define SE_RDQU S(A(SE_M)) // ”
-#define SE_DLQU S(A(SE_COMM)) // „
-#define SE_MDDT S(A(SE_DOT)) // ·
-#define SE_MDSH S(A(SE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_swedish_pro_osx_iso.h b/quantum/keymap_extras/keymap_swedish_pro_osx_iso.h
deleted file mode 100644
index f2d6605865..0000000000
--- a/quantum/keymap_extras/keymap_swedish_pro_osx_iso.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/* Copyright 2021
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#pragma once
-
-#include "keymap.h"
-
-// clang-format off
-
-/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ § │ 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 │ , │ . │ - │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_SECT KC_GRV // §
-#define SE_1 KC_1 // 1
-#define SE_2 KC_2 // 2
-#define SE_3 KC_3 // 3
-#define SE_4 KC_4 // 4
-#define SE_5 KC_5 // 5
-#define SE_6 KC_6 // 6
-#define SE_7 KC_7 // 7
-#define SE_8 KC_8 // 8
-#define SE_9 KC_9 // 9
-#define SE_0 KC_0 // 0
-#define SE_PLUS KC_MINS // +
-#define SE_ACUT KC_EQL // ´ (dead)
-// Row 2
-#define SE_Q KC_Q // Q
-#define SE_W KC_W // W
-#define SE_E KC_E // E
-#define SE_R KC_R // R
-#define SE_T KC_T // T
-#define SE_Y KC_Y // Y
-#define SE_U KC_U // U
-#define SE_I KC_I // I
-#define SE_O KC_O // O
-#define SE_P KC_P // P
-#define SE_ARNG KC_LBRC // Å
-#define SE_DIAE KC_RBRC // ¨ (dead)
-// Row 3
-#define SE_A KC_A // A
-#define SE_S KC_S // S
-#define SE_D KC_D // D
-#define SE_F KC_F // F
-#define SE_G KC_G // G
-#define SE_H KC_H // H
-#define SE_J KC_J // J
-#define SE_K KC_K // K
-#define SE_L KC_L // L
-#define SE_ODIA KC_SCLN // Ö
-#define SE_ADIA KC_QUOT // Ä
-#define SE_QUOT KC_NUHS // '
-// Row 4
-#define SE_LABK KC_NUBS // <
-#define SE_Z KC_Z // Z
-#define SE_X KC_X // X
-#define SE_C KC_C // C
-#define SE_V KC_V // V
-#define SE_B KC_B // B
-#define SE_N KC_N // N
-#define SE_M KC_M // M
-#define SE_COMM KC_COMM // ,
-#define SE_DOT KC_DOT // .
-#define SE_MINS KC_SLSH // -
-
-/* Shifted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ° │ ! │ " │ # │ € │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ ^ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ │ │ │ │ │ │ │ │ │ │ * │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_DEG S(SE_SECT) // °
-#define SE_EXLM S(SE_1) // !
-#define SE_DQUO S(SE_2) // "
-#define SE_HASH S(SE_3) // #
-#define SE_EURO S(SE_4) // €
-#define SE_PERC S(SE_5) // %
-#define SE_AMPR S(SE_6) // &
-#define SE_SLSH S(SE_7) // /
-#define SE_LPRN S(SE_8) // (
-#define SE_RPRN S(SE_9) // )
-#define SE_EQL S(SE_0) // =
-#define SE_QUES S(SE_PLUS) // ?
-#define SE_GRV S(SE_ACUT) // `
-// Row 2
-#define SE_CIRC S(SE_DIAE) // ^ (dead)
-// Row 3
-#define SE_ASTR S(SE_QUOT) // *
-// Row 4
-#define SE_RABK S(SE_LABK) // >
-#define SE_SCLN S(SE_COMM) // ;
-#define SE_COLN S(SE_DOT) // :
-#define SE_UNDS S(SE_MINS) // _
-
-/* Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ ¶ │ © │ @ │ £ │ $ │ ∞ │ │ | │ [ │ ] │ ≈ │ ± │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ • │ Ω │ É │ ® │ † │ µ │ Ü │ ı │ Œ │ π │ ˙ │ ~ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ │ ß │ ∂ │ ƒ │ ¸ │ ˛ │ √ │ ª │ fi │ Ø │ Æ │ ™ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≤ │ ÷ │ │ Ç │ ‹ │ › │ ‘ │ ’ │ ‚ │ … │ – │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_PILC A(SE_SECT) // ¶
-#define SE_COPY A(SE_1) // ©
-#define SE_AT A(SE_2) // @
-#define SE_PND A(SE_3) // £
-#define SE_DLR A(SE_4) // $
-#define SE_INFN A(SE_5) // ∞
-#define SE_PIPE A(SE_7) // |
-#define SE_LBRC A(SE_8) // [
-#define SE_RBRC A(SE_9) // ]
-#define SE_AEQL A(SE_0) // ≈
-#define SE_PLMN A(SE_PLUS) // ±
-// Row 2
-#define SE_BULT A(SE_Q) // •
-#define SE_OMEG A(SE_W) // Ω
-#define SE_EACU A(SE_E) // É
-#define SE_REGD A(SE_R) // ®
-#define SE_DAGG A(SE_T) // †
-#define SE_MICR A(SE_Y) // µ
-#define SE_UDIA A(SE_U) // Ü
-#define SE_DLSI A(SE_I) // ı
-#define SE_OE A(SE_O) // Œ
-#define SE_PI A(SE_P) // π
-#define SE_DOTA A(SE_ARNG) // ˙
-#define SE_TILD A(SE_DIAE) // ~ (dead)
-// Row 3
-#define SE_APPL A(SE_A) // (Apple logo)
-#define SE_SS A(SE_S) // ß
-#define SE_PDIF A(SE_D) // ∂
-#define SE_FHK A(SE_F) // ƒ
-#define SE_CEDL A(SE_G) // ¸
-#define SE_OGON A(SE_H) // ˛
-#define SE_SQRT A(SE_J) // √
-#define SE_FORD A(SE_K) // ª
-#define SE_FI A(SE_L) // fi
-#define SE_OSTR A(SE_ODIA) // Ø
-#define SE_AE A(SE_ADIA) // Æ
-#define SE_TM A(SE_QUOT) // ™
-// Row 4
-#define SE_LTEQ A(SE_LABK) // ≤
-#define SE_DIV A(SE_Z) // ÷
-#define SE_CCED A(SE_C) // Ç
-#define SE_LSAQ A(SE_V) // ‹
-#define SE_RSAQ A(SE_B) // ›
-#define SE_LSQU A(SE_N) // ‘
-#define SE_RSQU A(SE_M) // ’
-#define SE_SLQU A(SE_COMM) // ‚
-#define SE_ELLP A(SE_DOT) // …
-#define SE_NDSH A(SE_MINS) // –
-
-/* Shift+Alted symbols
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
- * │ │ ¡ │ ” │ ¥ │ ¢ │ ‰ │ │ \ │ { │ } │ ≠ │ ¿ │ │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┤
- * │ │ │ ˝ │ │ │ ‡ │ ˜ │ │ ˆ │ │ ∏ │ ˚ │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
- * │ │ ◊ │ ∑ │ ∆ │ ∫ │ ¯ │ ˘ │ ¬ │ º │ fl │ │ │ │ │
- * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴──┤
- * │ │ ≥ │ ⁄ │ ˇ │ │ « │ » │ “ │ ” │ „ │ · │ — │ │
- * ├────┴┬──┴─┬─┴───┼───┴───┴───┴───┴───┴───┼───┴─┬─┴──┬─────┤
- * │ │ │ │ │ │ │ │
- * └─────┴────┴─────┴───────────────────────┴─────┴────┴─────┘
- */
-// Row 1
-#define SE_IEXL S(A(SE_1)) // ¡
-#define SE_YEN S(A(SE_3)) // ¥
-#define SE_CENT S(A(SE_4)) // ¢
-#define SE_PERM S(A(SE_5)) // ‰
-#define SE_BSLS S(A(SE_7)) // (backslash)
-#define SE_LCBR S(A(SE_8)) // {
-#define SE_RCBR S(A(SE_9)) // }
-#define SE_NEQL S(A(SE_0)) // ≠
-#define SE_IQUE S(A(SE_PLUS)) // ¿
-// Row 2
-#define SE_DACU S(A(SE_W)) // ˝
-#define SE_DDAG S(A(SE_T)) // ‡
-#define SE_STIL S(A(SE_Y)) // ˜
-#define SE_DCIR S(A(SE_I)) // ˆ
-#define SE_NARP S(A(SE_P)) // ∏
-#define SE_RNGA S(A(SE_ARNG)) // ˚
-// Row 3
-#define SE_LOZN S(A(SE_A)) // ◊
-#define SE_NARS S(A(SE_S)) // ∑
-#define SE_INCR S(A(SE_D)) // ∆
-#define SE_INTG S(A(SE_F)) // ∫
-#define SE_MACR S(A(SE_G)) // ¯
-#define SE_BREV S(A(SE_H)) // ˘
-#define SE_NOT S(A(SE_J)) // ¬
-#define SE_MORD S(A(SE_K)) // º
-#define SE_FL S(A(SE_L)) // fl
-// Row 4
-#define SE_GTEQ S(A(SE_LABK)) // ≥
-#define SE_FRSL S(A(SE_Z)) // ⁄
-#define SE_CARN S(A(SE_X)) // ˇ
-#define SE_LDAQ S(A(SE_V)) // «
-#define SE_RDAQ S(A(SE_B)) // »
-#define SE_LDQU S(A(SE_N)) // “
-#define SE_RDQU S(A(SE_M)) // ”
-#define SE_DLQU S(A(SE_COMM)) // „
-#define SE_MDDT S(A(SE_DOT)) // ·
-#define SE_MDSH S(A(SE_MINS)) // —
diff --git a/quantum/keymap_extras/keymap_swiss_de.h b/quantum/keymap_extras/keymap_swiss_de.h
new file mode 100644
index 0000000000..6723836870
--- /dev/null
+++ b/quantum/keymap_extras/keymap_swiss_de.h
@@ -0,0 +1,164 @@
+/* Copyright 2016 heartsekai
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+#ifdef CH_H
+// The ChibiOS ch.h file defines this...
+# undef CH_H
+#endif
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ^ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ ü │ ¨ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ö │ ä │ $ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define CH_SECT KC_GRV // §
+#define CH_1 KC_1 // 1
+#define CH_2 KC_2 // 2
+#define CH_3 KC_3 // 3
+#define CH_4 KC_4 // 4
+#define CH_5 KC_5 // 5
+#define CH_6 KC_6 // 6
+#define CH_7 KC_7 // 7
+#define CH_8 KC_8 // 8
+#define CH_9 KC_9 // 9
+#define CH_0 KC_0 // 0
+#define CH_QUOT KC_MINS // '
+#define CH_CIRC KC_EQL // ^ (dead)
+// Row 2
+#define CH_Q KC_Q // Q
+#define CH_W KC_W // W
+#define CH_E KC_E // E
+#define CH_R KC_R // R
+#define CH_T KC_T // T
+#define CH_Z KC_Y // Z
+#define CH_U KC_U // U
+#define CH_I KC_I // I
+#define CH_O KC_O // O
+#define CH_P KC_P // P
+#define CH_UDIA KC_LBRC // ü
+#define CH_DIAE KC_RBRC // ¨ (dead)
+// Row 3
+#define CH_A KC_A // A
+#define CH_S KC_S // S
+#define CH_D KC_D // D
+#define CH_F KC_F // F
+#define CH_G KC_G // G
+#define CH_H KC_H // H
+#define CH_J KC_J // J
+#define CH_K KC_K // K
+#define CH_L KC_L // L
+#define CH_ODIA KC_SCLN // ö
+#define CH_ADIA KC_QUOT // ä
+#define CH_DLR KC_NUHS // $
+// Row 4
+#define CH_LABK KC_NUBS // <
+#define CH_Y KC_Z // Y
+#define CH_X KC_X // X
+#define CH_C KC_C // C
+#define CH_V KC_V // V
+#define CH_B KC_B // B
+#define CH_N KC_N // N
+#define CH_M KC_M // M
+#define CH_COMM KC_COMM // ,
+#define CH_DOT KC_DOT // .
+#define CH_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ° │ + │ " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ è │ ! │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ é │ à │ £ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define CH_DEG S(CH_SECT) // °
+#define CH_PLUS S(CH_1) // +
+#define CH_DQUO S(CH_2) // "
+#define CH_ASTR S(CH_3) // *
+#define CH_CCED S(CH_4) // ç
+#define CH_PERC S(CH_5) // %
+#define CH_AMPR S(CH_6) // &
+#define CH_SLSH S(CH_7) // /
+#define CH_LPRN S(CH_8) // (
+#define CH_RPRN S(CH_9) // )
+#define CH_EQL S(CH_0) // =
+#define CH_QUES S(CH_QUOT) // ?
+#define CH_GRV S(CH_CIRC) // ` (dead)
+// Row 2
+#define CH_EGRV S(CH_UDIA) // è
+#define CH_EXLM S(CH_DIAE) // !
+// Row 3
+#define CH_EACU S(CH_ODIA) // é
+#define CH_AGRV S(CH_ADIA) // à
+#define CH_PND S(CH_DLR) // £
+// Row 4
+#define CH_RABK S(CH_LABK) // >
+#define CH_SCLN S(CH_COMM) // ;
+#define CH_COLN S(CH_DOT) // :
+#define CH_UNDS S(CH_MINS) // _
+
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ │ ¦ │ @ │ # │ │ │ ¬ │ | │ ¢ │ │ │ ´ │ ~ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ \ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define CH_BRKP ALGR(CH_1) // ¦
+#define CH_AT ALGR(CH_2) // @
+#define CH_HASH ALGR(CH_3) // #
+#define CH_NOT ALGR(CH_6) // ¬
+#define CH_PIPE ALGR(CH_7) // |
+#define CH_CENT ALGR(CH_8) // ¢
+#define CH_ACUT ALGR(CH_QUOT) // ´ (dead)
+#define CH_TILD ALGR(CH_CIRC) // ~ (dead)
+// Row 2
+#define CH_EURO ALGR(CH_E) // €
+#define CH_LBRC ALGR(CH_UDIA) // [
+#define CH_RBRC ALGR(CH_DIAE) // ]
+// Row 3
+#define CH_LCBR ALGR(CH_ADIA) // {
+#define CH_RCBR ALGR(CH_DLR) // }
+// Row 4
+#define CH_BSLS ALGR(CH_LABK) // (backslash)
diff --git a/quantum/keymap_extras/keymap_swiss_fr.h b/quantum/keymap_extras/keymap_swiss_fr.h
new file mode 100644
index 0000000000..b1f2455a68
--- /dev/null
+++ b/quantum/keymap_extras/keymap_swiss_fr.h
@@ -0,0 +1,164 @@
+/* Copyright 2016 Vincent Pochet
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+#ifdef CH_H
+// The ChibiOS ch.h file defines this...
+# undef CH_H
+#endif
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ § │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ' │ ^ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ Q │ W │ E │ R │ T │ Z │ U │ I │ O │ P │ è │ ¨ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ é │ à │ $ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ < │ Y │ X │ C │ V │ B │ N │ M │ , │ . │ - │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define CH_SECT KC_GRV // §
+#define CH_1 KC_1 // 1
+#define CH_2 KC_2 // 2
+#define CH_3 KC_3 // 3
+#define CH_4 KC_4 // 4
+#define CH_5 KC_5 // 5
+#define CH_6 KC_6 // 6
+#define CH_7 KC_7 // 7
+#define CH_8 KC_8 // 8
+#define CH_9 KC_9 // 9
+#define CH_0 KC_0 // 0
+#define CH_QUOT KC_MINS // '
+#define CH_CIRC KC_EQL // ^ (dead)
+// Row 2
+#define CH_Q KC_Q // Q
+#define CH_W KC_W // W
+#define CH_E KC_E // E
+#define CH_R KC_R // R
+#define CH_T KC_T // T
+#define CH_Z KC_Y // Z
+#define CH_U KC_U // U
+#define CH_I KC_I // I
+#define CH_O KC_O // O
+#define CH_P KC_P // P
+#define CH_EGRV KC_LBRC // è
+#define CH_DIAE KC_RBRC // ¨ (dead)
+// Row 3
+#define CH_A KC_A // A
+#define CH_S KC_S // S
+#define CH_D KC_D // D
+#define CH_F KC_F // F
+#define CH_G KC_G // G
+#define CH_H KC_H // H
+#define CH_J KC_J // J
+#define CH_K KC_K // K
+#define CH_L KC_L // L
+#define CH_EACU KC_SCLN // é
+#define CH_AGRV KC_QUOT // à
+#define CH_DLR KC_NUHS // $
+// Row 4
+#define CH_LABK KC_NUBS // <
+#define CH_Y KC_Z // Y
+#define CH_X KC_X // X
+#define CH_C KC_C // C
+#define CH_V KC_V // V
+#define CH_B KC_B // B
+#define CH_N KC_N // N
+#define CH_M KC_M // M
+#define CH_COMM KC_COMM // ,
+#define CH_DOT KC_DOT // .
+#define CH_MINS KC_SLSH // -
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ° │ + │ " │ * │ ç │ % │ & │ / │ ( │ ) │ = │ ? │ ` │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ ü │ ! │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ ö │ ä │ £ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ > │ │ │ │ │ │ │ │ ; │ : │ _ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define CH_DEG S(CH_SECT) // °
+#define CH_PLUS S(CH_1) // +
+#define CH_DQUO S(CH_2) // "
+#define CH_ASTR S(CH_3) // *
+#define CH_CCED S(CH_4) // ç
+#define CH_PERC S(CH_5) // %
+#define CH_AMPR S(CH_6) // &
+#define CH_SLSH S(CH_7) // /
+#define CH_LPRN S(CH_8) // (
+#define CH_RPRN S(CH_9) // )
+#define CH_EQL S(CH_0) // =
+#define CH_QUES S(CH_QUOT) // ?
+#define CH_GRV S(CH_CIRC) // ` (dead)
+// Row 2
+#define CH_UDIA S(CH_EGRV) // ü
+#define CH_EXLM S(CH_DIAE) // !
+// Row 3
+#define CH_ODIA S(CH_EACU) // ö
+#define CH_ADIA S(CH_AGRV) // ä
+#define CH_PND S(CH_DLR) // £
+// Row 4
+#define CH_RABK S(CH_LABK) // >
+#define CH_SCLN S(CH_COMM) // ;
+#define CH_COLN S(CH_DOT) // :
+#define CH_UNDS S(CH_MINS) // _
+
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ │ ¦ │ @ │ # │ │ │ ¬ │ | │ ¢ │ │ │ ´ │ ~ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ € │ │ │ │ │ │ │ │ [ │ ] │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ \ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define CH_BRKP ALGR(CH_1) // ¦
+#define CH_AT ALGR(CH_2) // @
+#define CH_HASH ALGR(CH_3) // #
+#define CH_NOT ALGR(CH_6) // ¬
+#define CH_PIPE ALGR(CH_7) // |
+#define CH_CENT ALGR(CH_8) // ¢
+#define CH_ACUT ALGR(CH_QUOT) // ´ (dead)
+#define CH_TILD ALGR(CH_CIRC) // ~ (dead)
+// Row 2
+#define CH_EURO ALGR(CH_E) // €
+#define CH_LBRC ALGR(CH_EGRV) // [
+#define CH_RBRC ALGR(CH_DIAE) // ]
+// Row 3
+#define CH_LCBR ALGR(CH_AGRV) // {
+#define CH_RCBR ALGR(CH_DLR) // }
+// Row 4
+#define CH_BSLS ALGR(CH_LABK) // (backslash)
diff --git a/quantum/keymap_extras/sendstring_br_abnt2.h b/quantum/keymap_extras/sendstring_br_abnt2.h
deleted file mode 100644
index 1ca2d28592..0000000000
--- a/quantum/keymap_extras/sendstring_br_abnt2.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for Brazilian (ABNT2) layouts
-
-#pragma once
-
-#include "keymap_br_abnt2.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 0),
- KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 0, 1, 0, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
-};
-
-const uint8_t ascii_to_dead_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, BR_1, BR_QUOT, BR_3, BR_4, BR_5, BR_7, BR_QUOT,
- // ( ) * + , - . /
- BR_9, BR_0, BR_8, BR_EQL, BR_COMM, BR_MINS, BR_DOT, BR_SLSH,
- // 0 1 2 3 4 5 6 7
- BR_0, BR_1, BR_2, BR_3, BR_4, BR_5, BR_6, BR_7,
- // 8 9 : ; < = > ?
- BR_8, BR_9, BR_SCLN, BR_SCLN, BR_COMM, BR_EQL, BR_DOT, BR_SLSH,
- // @ A B C D E F G
- BR_2, BR_A, BR_B, BR_C, BR_D, BR_E, BR_F, BR_G,
- // H I J K L M N O
- BR_H, BR_I, BR_J, BR_K, BR_L, BR_M, BR_N, BR_O,
- // P Q R S T U V W
- BR_P, BR_Q, BR_R, BR_S, BR_T, BR_U, BR_V, BR_W,
- // X Y Z [ \ ] ^ _
- BR_X, BR_Y, BR_Z, BR_LBRC, BR_BSLS, BR_RBRC, BR_TILD, BR_MINS,
- // ` a b c d e f g
- BR_ACUT, BR_A, BR_B, BR_C, BR_D, BR_E, BR_F, BR_G,
- // h i j k l m n o
- BR_H, BR_I, BR_J, BR_K, BR_L, BR_M, BR_N, BR_O,
- // p q r s t u v w
- BR_P, BR_Q, BR_R, BR_S, BR_T, BR_U, BR_V, BR_W,
- // x y z { | } ~ DEL
- BR_X, BR_Y, BR_Z, BR_LBRC, BR_BSLS, BR_RBRC, BR_TILD, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_brazilian_abnt2.h b/quantum/keymap_extras/sendstring_brazilian_abnt2.h
new file mode 100644
index 0000000000..b52ce4958a
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_brazilian_abnt2.h
@@ -0,0 +1,100 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for Brazilian (ABNT2) layouts
+
+#pragma once
+
+#include "keymap_brazilian_abnt2.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 0, 1, 0, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
+};
+
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, BR_1, BR_QUOT, BR_3, BR_4, BR_5, BR_7, BR_QUOT,
+ // ( ) * + , - . /
+ BR_9, BR_0, BR_8, BR_EQL, BR_COMM, BR_MINS, BR_DOT, BR_SLSH,
+ // 0 1 2 3 4 5 6 7
+ BR_0, BR_1, BR_2, BR_3, BR_4, BR_5, BR_6, BR_7,
+ // 8 9 : ; < = > ?
+ BR_8, BR_9, BR_SCLN, BR_SCLN, BR_COMM, BR_EQL, BR_DOT, BR_SLSH,
+ // @ A B C D E F G
+ BR_2, BR_A, BR_B, BR_C, BR_D, BR_E, BR_F, BR_G,
+ // H I J K L M N O
+ BR_H, BR_I, BR_J, BR_K, BR_L, BR_M, BR_N, BR_O,
+ // P Q R S T U V W
+ BR_P, BR_Q, BR_R, BR_S, BR_T, BR_U, BR_V, BR_W,
+ // X Y Z [ \ ] ^ _
+ BR_X, BR_Y, BR_Z, BR_LBRC, BR_BSLS, BR_RBRC, BR_TILD, BR_MINS,
+ // ` a b c d e f g
+ BR_ACUT, BR_A, BR_B, BR_C, BR_D, BR_E, BR_F, BR_G,
+ // h i j k l m n o
+ BR_H, BR_I, BR_J, BR_K, BR_L, BR_M, BR_N, BR_O,
+ // p q r s t u v w
+ BR_P, BR_Q, BR_R, BR_S, BR_T, BR_U, BR_V, BR_W,
+ // x y z { | } ~ DEL
+ BR_X, BR_Y, BR_Z, BR_LBRC, BR_BSLS, BR_RBRC, BR_TILD, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_dvorak_programmer.h b/quantum/keymap_extras/sendstring_dvorak_programmer.h
new file mode 100644
index 0000000000..f19bb6f4b2
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_dvorak_programmer.h
@@ -0,0 +1,80 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for Programmer Dvorak layouts
+
+#pragma once
+
+#include "keymap_dvorak_programmer.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 1, 0, 0, 1, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 1, 0, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, DP_EXLM, DP_QUOT, DP_HASH, DP_DLR, DP_AMPR, DP_AMPR, DP_QUOT,
+ // ( ) * + , - . /
+ DP_LPRN, DP_RPRN, DP_ASTR, DP_PLUS, DP_COMM, DP_MINS, DP_DOT, DP_SLSH,
+ // 0 1 2 3 4 5 6 7
+ DP_ASTR, DP_LPRN, DP_RPRN, DP_RCBR, DP_PLUS, DP_LCBR, DP_RBRC, DP_LBRC,
+ // 8 9 : ; < = > ?
+ DP_EXLM, DP_EQL, DP_SCLN, DP_SCLN, DP_COMM, DP_EQL, DP_DOT, DP_SLSH,
+ // @ A B C D E F G
+ DP_AT, DP_A, DP_B, DP_C, DP_D, DP_E, DP_F, DP_G,
+ // H I J K L M N O
+ DP_H, DP_I, DP_J, DP_K, DP_L, DP_M, DP_N, DP_O,
+ // P Q R S T U V W
+ DP_P, DP_Q, DP_R, DP_S, DP_T, DP_U, DP_V, DP_W,
+ // X Y Z [ \ ] ^ _
+ DP_X, DP_Y, DP_Z, DP_LBRC, DP_BSLS, DP_RBRC, DP_AT, DP_MINS,
+ // ` a b c d e f g
+ DP_HASH, DP_A, DP_B, DP_C, DP_D, DP_E, DP_F, DP_G,
+ // h i j k l m n o
+ DP_H, DP_I, DP_J, DP_K, DP_L, DP_M, DP_N, DP_O,
+ // p q r s t u v w
+ DP_P, DP_Q, DP_R, DP_S, DP_T, DP_U, DP_V, DP_W,
+ // x y z { | } ~ DEL
+ DP_X, DP_Y, DP_Z, DP_LCBR, DP_BSLS, DP_RCBR, DP_DLR, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_dvp.h b/quantum/keymap_extras/sendstring_dvp.h
deleted file mode 100644
index 74b595524d..0000000000
--- a/quantum/keymap_extras/sendstring_dvp.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for Programmer Dvorak layouts
-
-#pragma once
-
-#include "keymap_dvp.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 1, 0, 0, 1, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 1, 0, 1, 1),
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, DP_EXLM, DP_QUOT, DP_HASH, DP_DLR, DP_AMPR, DP_AMPR, DP_QUOT,
- // ( ) * + , - . /
- DP_LPRN, DP_RPRN, DP_ASTR, DP_PLUS, DP_COMM, DP_MINS, DP_DOT, DP_SLSH,
- // 0 1 2 3 4 5 6 7
- DP_ASTR, DP_LPRN, DP_RPRN, DP_RCBR, DP_PLUS, DP_LCBR, DP_RBRC, DP_LBRC,
- // 8 9 : ; < = > ?
- DP_EXLM, DP_EQL, DP_SCLN, DP_SCLN, DP_COMM, DP_EQL, DP_DOT, DP_SLSH,
- // @ A B C D E F G
- DP_AT, DP_A, DP_B, DP_C, DP_D, DP_E, DP_F, DP_G,
- // H I J K L M N O
- DP_H, DP_I, DP_J, DP_K, DP_L, DP_M, DP_N, DP_O,
- // P Q R S T U V W
- DP_P, DP_Q, DP_R, DP_S, DP_T, DP_U, DP_V, DP_W,
- // X Y Z [ \ ] ^ _
- DP_X, DP_Y, DP_Z, DP_LBRC, DP_BSLS, DP_RBRC, DP_AT, DP_MINS,
- // ` a b c d e f g
- DP_HASH, DP_A, DP_B, DP_C, DP_D, DP_E, DP_F, DP_G,
- // h i j k l m n o
- DP_H, DP_I, DP_J, DP_K, DP_L, DP_M, DP_N, DP_O,
- // p q r s t u v w
- DP_P, DP_Q, DP_R, DP_S, DP_T, DP_U, DP_V, DP_W,
- // x y z { | } ~ DEL
- DP_X, DP_Y, DP_Z, DP_LCBR, DP_BSLS, DP_RCBR, DP_DLR, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_fr_ch.h b/quantum/keymap_extras/sendstring_fr_ch.h
deleted file mode 100644
index 160a2efb05..0000000000
--- a/quantum/keymap_extras/sendstring_fr_ch.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for Swiss French layouts
-
-#pragma once
-
-#include "keymap_fr_ch.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 0, 0, 1, 1, 0),
- KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 1),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
-};
-
-const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 1, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
-};
-
-const uint8_t ascii_to_dead_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, CH_DIAE, CH_2, CH_3, CH_DLR, CH_5, CH_6, CH_QUOT,
- // ( ) * + , - . /
- CH_8, CH_9, CH_3, CH_0, CH_COMM, CH_MINS, CH_DOT, CH_7,
- // 0 1 2 3 4 5 6 7
- CH_0, CH_1, CH_2, CH_3, CH_4, CH_5, CH_6, CH_7,
- // 8 9 : ; < = > ?
- CH_8, CH_9, CH_DOT, CH_COMM, CH_LABK, CH_0, CH_LABK, CH_QUOT,
- // @ A B C D E F G
- CH_2, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
- // H I J K L M N O
- CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
- // P Q R S T U V W
- CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
- // X Y Z [ \ ] ^ _
- CH_X, CH_Y, CH_Z, CH_EGRV, CH_LABK, CH_DIAE, CH_CIRC, CH_MINS,
- // ` a b c d e f g
- CH_CIRC, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
- // h i j k l m n o
- CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
- // p q r s t u v w
- CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
- // x y z { | } ~ DEL
- CH_X, CH_Y, CH_Z, CH_AGRV, CH_7, CH_DLR, CH_CIRC, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_french_mac_iso.h b/quantum/keymap_extras/sendstring_french_mac_iso.h
new file mode 100644
index 0000000000..1033c3991f
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_french_mac_iso.h
@@ -0,0 +1,120 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for macOS French (AZERTY) layouts
+
+#pragma once
+
+#include "keymap_french_mac_iso.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 0, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 0, 0, 0, 0, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
+};
+
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, FR_EXLM, FR_DQUO, FR_AT, FR_DLR, FR_LUGR, FR_AMPR, FR_QUOT,
+ // ( ) * + , - . /
+ FR_LPRN, FR_RPRN, FR_DLR, FR_EQL, FR_COMM, FR_MINS, FR_SCLN, FR_COLN,
+ // 0 1 2 3 4 5 6 7
+ FR_LAGR, FR_AMPR, FR_LEAC, FR_DQUO, FR_QUOT, FR_LPRN, FR_SECT, FR_LEGR,
+ // 8 9 : ; < = > ?
+ FR_EXLM, FR_LCCE, FR_COLN, FR_SCLN, FR_LABK, FR_EQL, FR_LABK, FR_COMM,
+ // @ A B C D E F G
+ FR_AT, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
+ // H I J K L M N O
+ FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
+ // P Q R S T U V W
+ FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
+ // X Y Z [ \ ] ^ _
+ FR_X, FR_Y, FR_Z, FR_LPRN, FR_COLN, FR_RPRN, FR_CIRC, FR_MINS,
+ // ` a b c d e f g
+ FR_GRV, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
+ // h i j k l m n o
+ FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
+ // p q r s t u v w
+ FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
+ // x y z { | } ~ DEL
+ FR_X, FR_Y, FR_Z, FR_LPRN, FR_L, FR_RPRN, FR_N, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_french_osx.h b/quantum/keymap_extras/sendstring_french_osx.h
deleted file mode 100644
index cc9b857cd0..0000000000
--- a/quantum/keymap_extras/sendstring_french_osx.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for macOS French (AZERTY) layouts
-
-#pragma once
-
-#include "keymap_french_osx.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 1, 0, 0, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 0, 0, 0, 0, 1, 1),
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 0, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0)
-};
-
-const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
-};
-
-const uint8_t ascii_to_dead_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, FR_EXLM, FR_DQUO, FR_AT, FR_DLR, FR_LUGR, FR_AMPR, FR_QUOT,
- // ( ) * + , - . /
- FR_LPRN, FR_RPRN, FR_DLR, FR_EQL, FR_COMM, FR_MINS, FR_SCLN, FR_COLN,
- // 0 1 2 3 4 5 6 7
- FR_LAGR, FR_AMPR, FR_LEAC, FR_DQUO, FR_QUOT, FR_LPRN, FR_SECT, FR_LEGR,
- // 8 9 : ; < = > ?
- FR_EXLM, FR_LCCE, FR_COLN, FR_SCLN, FR_LABK, FR_EQL, FR_LABK, FR_COMM,
- // @ A B C D E F G
- FR_AT, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
- // H I J K L M N O
- FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
- // P Q R S T U V W
- FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
- // X Y Z [ \ ] ^ _
- FR_X, FR_Y, FR_Z, FR_LPRN, FR_COLN, FR_RPRN, FR_CIRC, FR_MINS,
- // ` a b c d e f g
- FR_GRV, FR_A, FR_B, FR_C, FR_D, FR_E, FR_F, FR_G,
- // h i j k l m n o
- FR_H, FR_I, FR_J, FR_K, FR_L, FR_M, FR_N, FR_O,
- // p q r s t u v w
- FR_P, FR_Q, FR_R, FR_S, FR_T, FR_U, FR_V, FR_W,
- // x y z { | } ~ DEL
- FR_X, FR_Y, FR_Z, FR_LPRN, FR_L, FR_RPRN, FR_N, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_german_ch.h b/quantum/keymap_extras/sendstring_german_ch.h
deleted file mode 100644
index b8f7471247..0000000000
--- a/quantum/keymap_extras/sendstring_german_ch.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for Swiss German layouts
-
-#pragma once
-
-#include "keymap_german_ch.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 0, 0, 1, 1, 0),
- KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
-};
-
-const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
-};
-
-const uint8_t ascii_to_dead_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, CH_DIAE, CH_2, CH_3, CH_DLR, CH_5, CH_6, CH_QUOT,
- // ( ) * + , - . /
- CH_8, CH_9, CH_3, CH_1, CH_COMM, CH_MINS, CH_DOT, CH_7,
- // 0 1 2 3 4 5 6 7
- CH_0, CH_1, CH_2, CH_3, CH_4, CH_5, CH_6, CH_7,
- // 8 9 : ; < = > ?
- CH_8, CH_9, CH_DOT, CH_COMM, CH_LABK, CH_0, CH_LABK, CH_QUOT,
- // @ A B C D E F G
- CH_2, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
- // H I J K L M N O
- CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
- // P Q R S T U V W
- CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
- // X Y Z [ \ ] ^ _
- CH_X, CH_Y, CH_Z, CH_UDIA, CH_LABK, CH_DIAE, CH_CIRC, CH_MINS,
- // ` a b c d e f g
- CH_CIRC, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
- // h i j k l m n o
- CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
- // p q r s t u v w
- CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
- // x y z { | } ~ DEL
- CH_X, CH_Y, CH_Z, CH_ADIA, CH_7, CH_DLR, CH_CIRC, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_german_mac_iso.h b/quantum/keymap_extras/sendstring_german_mac_iso.h
new file mode 100644
index 0000000000..8345dbaaa1
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_german_mac_iso.h
@@ -0,0 +1,120 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for macOS German layouts
+
+#pragma once
+
+#include "keymap_german_mac_iso.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 0, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 1, 0, 0, 1),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
+};
+
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, DE_1, DE_2, DE_HASH, DE_4, DE_5, DE_6, DE_HASH,
+ // ( ) * + , - . /
+ DE_8, DE_9, DE_PLUS, DE_PLUS, DE_COMM, DE_MINS, DE_DOT, DE_7,
+ // 0 1 2 3 4 5 6 7
+ DE_0, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7,
+ // 8 9 : ; < = > ?
+ DE_8, DE_9, DE_DOT, DE_COMM, DE_LABK, DE_0, DE_LABK, DE_SS,
+ // @ A B C D E F G
+ DE_L, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
+ // H I J K L M N O
+ DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
+ // P Q R S T U V W
+ DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
+ // X Y Z [ \ ] ^ _
+ DE_X, DE_Y, DE_Z, DE_5, DE_7, DE_6, DE_CIRC, DE_MINS,
+ // ` a b c d e f g
+ DE_ACUT, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
+ // h i j k l m n o
+ DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
+ // p q r s t u v w
+ DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
+ // x y z { | } ~ DEL
+ DE_X, DE_Y, DE_Z, DE_8, DE_7, DE_9, DE_N, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_german_osx.h b/quantum/keymap_extras/sendstring_german_osx.h
deleted file mode 100644
index d25c8c0995..0000000000
--- a/quantum/keymap_extras/sendstring_german_osx.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for macOS German layouts
-
-#pragma once
-
-#include "keymap_german_osx.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 0, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 1, 0, 0, 1),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
-};
-
-const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
-};
-
-const uint8_t ascii_to_dead_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, DE_1, DE_2, DE_HASH, DE_4, DE_5, DE_6, DE_HASH,
- // ( ) * + , - . /
- DE_8, DE_9, DE_PLUS, DE_PLUS, DE_COMM, DE_MINS, DE_DOT, DE_7,
- // 0 1 2 3 4 5 6 7
- DE_0, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7,
- // 8 9 : ; < = > ?
- DE_8, DE_9, DE_DOT, DE_COMM, DE_LABK, DE_0, DE_LABK, DE_SS,
- // @ A B C D E F G
- DE_L, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
- // H I J K L M N O
- DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
- // P Q R S T U V W
- DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
- // X Y Z [ \ ] ^ _
- DE_X, DE_Y, DE_Z, DE_5, DE_7, DE_6, DE_CIRC, DE_MINS,
- // ` a b c d e f g
- DE_ACUT, DE_A, DE_B, DE_C, DE_D, DE_E, DE_F, DE_G,
- // h i j k l m n o
- DE_H, DE_I, DE_J, DE_K, DE_L, DE_M, DE_N, DE_O,
- // p q r s t u v w
- DE_P, DE_Q, DE_R, DE_S, DE_T, DE_U, DE_V, DE_W,
- // x y z { | } ~ DEL
- DE_X, DE_Y, DE_Z, DE_8, DE_7, DE_9, DE_N, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_italian_mac_ansi.h b/quantum/keymap_extras/sendstring_italian_mac_ansi.h
new file mode 100644
index 0000000000..97b5164e23
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_italian_mac_ansi.h
@@ -0,0 +1,100 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for macOS Italian ANSI layouts
+
+#pragma once
+
+#include "keymap_italian_mac_ansi.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 0, 1, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, IT_1, IT_2, IT_AGRV, IT_4, IT_5, IT_6, IT_QUOT,
+ // ( ) * + , - . /
+ IT_8, IT_9, IT_PLUS, IT_PLUS, IT_COMM, IT_MINS, IT_DOT, IT_7,
+ // 0 1 2 3 4 5 6 7
+ IT_0, IT_1, IT_2, IT_3, IT_4, IT_5, IT_6, IT_7,
+ // 8 9 : ; < = > ?
+ IT_8, IT_9, IT_DOT, IT_COMM, IT_LABK, IT_0, IT_LABK, IT_QUOT,
+ // @ A B C D E F G
+ IT_OGRV, IT_A, IT_B, IT_C, IT_D, IT_E, IT_F, IT_G,
+ // H I J K L M N O
+ IT_H, IT_I, IT_J, IT_K, IT_L, IT_M, IT_N, IT_O,
+ // P Q R S T U V W
+ IT_P, IT_Q, IT_R, IT_S, IT_T, IT_U, IT_V, IT_W,
+ // X Y Z [ \ ] ^ _
+ IT_X, IT_Y, IT_Z, IT_EGRV, IT_BSLS, IT_PLUS, IT_IGRV, IT_MINS,
+ // ` a b c d e f g
+ IT_BSLS, IT_A, IT_B, IT_C, IT_D, IT_E, IT_F, IT_G,
+ // h i j k l m n o
+ IT_H, IT_I, IT_J, IT_K, IT_L, IT_M, IT_N, IT_O,
+ // p q r s t u v w
+ IT_P, IT_Q, IT_R, IT_S, IT_T, IT_U, IT_V, IT_W,
+ // x y z { | } ~ DEL
+ IT_X, IT_Y, IT_Z, IT_EGRV, IT_BSLS, IT_PLUS, IT_5, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_italian_mac_iso.h b/quantum/keymap_extras/sendstring_italian_mac_iso.h
new file mode 100644
index 0000000000..d82e8bbddf
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_italian_mac_iso.h
@@ -0,0 +1,100 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for macOS Italian ISO layouts
+
+#pragma once
+
+#include "keymap_italian_mac_iso.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 0, 1, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, IT_1, IT_2, IT_AGRV, IT_4, IT_5, IT_6, IT_QUOT,
+ // ( ) * + , - . /
+ IT_8, IT_9, IT_PLUS, IT_PLUS, IT_COMM, IT_MINS, IT_DOT, IT_7,
+ // 0 1 2 3 4 5 6 7
+ IT_0, IT_1, IT_2, IT_3, IT_4, IT_5, IT_6, IT_7,
+ // 8 9 : ; < = > ?
+ IT_8, IT_9, IT_DOT, IT_COMM, IT_LABK, IT_0, IT_LABK, IT_QUOT,
+ // @ A B C D E F G
+ IT_OGRV, IT_A, IT_B, IT_C, IT_D, IT_E, IT_F, IT_G,
+ // H I J K L M N O
+ IT_H, IT_I, IT_J, IT_K, IT_L, IT_M, IT_N, IT_O,
+ // P Q R S T U V W
+ IT_P, IT_Q, IT_R, IT_S, IT_T, IT_U, IT_V, IT_W,
+ // X Y Z [ \ ] ^ _
+ IT_X, IT_Y, IT_Z, IT_EGRV, IT_BSLS, IT_PLUS, IT_IGRV, IT_MINS,
+ // ` a b c d e f g
+ IT_BSLS, IT_A, IT_B, IT_C, IT_D, IT_E, IT_F, IT_G,
+ // h i j k l m n o
+ IT_H, IT_I, IT_J, IT_K, IT_L, IT_M, IT_N, IT_O,
+ // p q r s t u v w
+ IT_P, IT_Q, IT_R, IT_S, IT_T, IT_U, IT_V, IT_W,
+ // x y z { | } ~ DEL
+ IT_X, IT_Y, IT_Z, IT_EGRV, IT_BSLS, IT_PLUS, IT_5, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_italian_osx_ansi.h b/quantum/keymap_extras/sendstring_italian_osx_ansi.h
deleted file mode 100644
index c61874015f..0000000000
--- a/quantum/keymap_extras/sendstring_italian_osx_ansi.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for macOS Italian ANSI layouts
-
-#pragma once
-
-#include "keymap_italian_osx_ansi.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 0, 1, 1, 1, 0),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
-};
-
-const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 1, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, IT_1, IT_2, IT_AGRV, IT_4, IT_5, IT_6, IT_QUOT,
- // ( ) * + , - . /
- IT_8, IT_9, IT_PLUS, IT_PLUS, IT_COMM, IT_MINS, IT_DOT, IT_7,
- // 0 1 2 3 4 5 6 7
- IT_0, IT_1, IT_2, IT_3, IT_4, IT_5, IT_6, IT_7,
- // 8 9 : ; < = > ?
- IT_8, IT_9, IT_DOT, IT_COMM, IT_LABK, IT_0, IT_LABK, IT_QUOT,
- // @ A B C D E F G
- IT_OGRV, IT_A, IT_B, IT_C, IT_D, IT_E, IT_F, IT_G,
- // H I J K L M N O
- IT_H, IT_I, IT_J, IT_K, IT_L, IT_M, IT_N, IT_O,
- // P Q R S T U V W
- IT_P, IT_Q, IT_R, IT_S, IT_T, IT_U, IT_V, IT_W,
- // X Y Z [ \ ] ^ _
- IT_X, IT_Y, IT_Z, IT_EGRV, IT_BSLS, IT_PLUS, IT_IGRV, IT_MINS,
- // ` a b c d e f g
- IT_BSLS, IT_A, IT_B, IT_C, IT_D, IT_E, IT_F, IT_G,
- // h i j k l m n o
- IT_H, IT_I, IT_J, IT_K, IT_L, IT_M, IT_N, IT_O,
- // p q r s t u v w
- IT_P, IT_Q, IT_R, IT_S, IT_T, IT_U, IT_V, IT_W,
- // x y z { | } ~ DEL
- IT_X, IT_Y, IT_Z, IT_EGRV, IT_BSLS, IT_PLUS, IT_5, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_italian_osx_iso.h b/quantum/keymap_extras/sendstring_italian_osx_iso.h
deleted file mode 100644
index eb5853b006..0000000000
--- a/quantum/keymap_extras/sendstring_italian_osx_iso.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for macOS Italian ISO layouts
-
-#pragma once
-
-#include "keymap_italian_osx_iso.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 0, 1, 1, 1, 0),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
-};
-
-const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 1, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, IT_1, IT_2, IT_AGRV, IT_4, IT_5, IT_6, IT_QUOT,
- // ( ) * + , - . /
- IT_8, IT_9, IT_PLUS, IT_PLUS, IT_COMM, IT_MINS, IT_DOT, IT_7,
- // 0 1 2 3 4 5 6 7
- IT_0, IT_1, IT_2, IT_3, IT_4, IT_5, IT_6, IT_7,
- // 8 9 : ; < = > ?
- IT_8, IT_9, IT_DOT, IT_COMM, IT_LABK, IT_0, IT_LABK, IT_QUOT,
- // @ A B C D E F G
- IT_OGRV, IT_A, IT_B, IT_C, IT_D, IT_E, IT_F, IT_G,
- // H I J K L M N O
- IT_H, IT_I, IT_J, IT_K, IT_L, IT_M, IT_N, IT_O,
- // P Q R S T U V W
- IT_P, IT_Q, IT_R, IT_S, IT_T, IT_U, IT_V, IT_W,
- // X Y Z [ \ ] ^ _
- IT_X, IT_Y, IT_Z, IT_EGRV, IT_BSLS, IT_PLUS, IT_IGRV, IT_MINS,
- // ` a b c d e f g
- IT_BSLS, IT_A, IT_B, IT_C, IT_D, IT_E, IT_F, IT_G,
- // h i j k l m n o
- IT_H, IT_I, IT_J, IT_K, IT_L, IT_M, IT_N, IT_O,
- // p q r s t u v w
- IT_P, IT_Q, IT_R, IT_S, IT_T, IT_U, IT_V, IT_W,
- // x y z { | } ~ DEL
- IT_X, IT_Y, IT_Z, IT_EGRV, IT_BSLS, IT_PLUS, IT_5, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_japanese.h b/quantum/keymap_extras/sendstring_japanese.h
new file mode 100644
index 0000000000..13628d7023
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_japanese.h
@@ -0,0 +1,80 @@
+/* Copyright 2016 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for JIS layouts
+
+#pragma once
+
+#include "keymap_japanese.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 1, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
+ // ( ) * + , - . /
+ KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
+ // 0 1 2 3 4 5 6 7
+ KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
+ // 8 9 : ; < = > ?
+ KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
+ // @ A B C D E F G
+ JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
+ // H I J K L M N O
+ KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
+ // P Q R S T U V W
+ KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
+ // X Y Z [ \ ] ^ _
+ KC_X, KC_Y, KC_Z, JP_LBRC, JP_BSLS, JP_RBRC, JP_CIRC, JP_BSLS,
+ // ` a b c d e f g
+ JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
+ // h i j k l m n o
+ KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
+ // p q r s t u v w
+ KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
+ // x y z { | } ~ DEL
+ KC_X, KC_Y, KC_Z, JP_LBRC, JP_YEN, JP_RBRC, JP_CIRC, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_jis.h b/quantum/keymap_extras/sendstring_jis.h
deleted file mode 100644
index 58335ad41d..0000000000
--- a/quantum/keymap_extras/sendstring_jis.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright 2016 Jack Humbert
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for JIS layouts
-
-#pragma once
-
-#include "keymap_jp.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 1, 1, 1, 1),
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
- // ( ) * + , - . /
- KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
- // 0 1 2 3 4 5 6 7
- KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
- // 8 9 : ; < = > ?
- KC_8, KC_9, JP_COLN, JP_SCLN, JP_COMM, JP_MINS, JP_DOT, JP_SLSH,
- // @ A B C D E F G
- JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
- // H I J K L M N O
- KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
- // P Q R S T U V W
- KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
- // X Y Z [ \ ] ^ _
- KC_X, KC_Y, KC_Z, JP_LBRC, JP_BSLS, JP_RBRC, JP_CIRC, JP_BSLS,
- // ` a b c d e f g
- JP_AT, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
- // h i j k l m n o
- KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
- // p q r s t u v w
- KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
- // x y z { | } ~ DEL
- KC_X, KC_Y, KC_Z, JP_LBRC, JP_YEN, JP_RBRC, JP_CIRC, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_portuguese_mac_iso.h b/quantum/keymap_extras/sendstring_portuguese_mac_iso.h
new file mode 100644
index 0000000000..5d43c66279
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_portuguese_mac_iso.h
@@ -0,0 +1,120 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for Portuguese layouts
+
+#pragma once
+
+#include "keymap_portuguese_mac_iso.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0)
+};
+
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, PT_1, PT_2, PT_3, PT_4, PT_5, PT_6, PT_QUOT,
+ // ( ) * + , - . /
+ PT_8, PT_9, PT_PLUS, PT_PLUS, PT_COMM, PT_MINS, PT_DOT, PT_7,
+ // 0 1 2 3 4 5 6 7
+ PT_0, PT_1, PT_2, PT_3, PT_4, PT_5, PT_6, PT_7,
+ // 8 9 : ; < = > ?
+ PT_8, PT_9, PT_DOT, PT_COMM, PT_LABK, PT_0, PT_LABK, PT_QUOT,
+ // @ A B C D E F G
+ PT_2, PT_A, PT_B, PT_C, PT_D, PT_E, PT_F, PT_G,
+ // H I J K L M N O
+ PT_H, PT_I, PT_J, PT_K, PT_L, PT_M, PT_N, PT_O,
+ // P Q R S T U V W
+ PT_P, PT_Q, PT_R, PT_S, PT_T, PT_U, PT_V, PT_W,
+ // X Y Z [ \ ] ^ _
+ PT_X, PT_Y, PT_Z, PT_8, PT_BSLS, PT_9, PT_TILD, PT_MINS,
+ // ` a b c d e f g
+ PT_ACUT, PT_A, PT_B, PT_C, PT_D, PT_E, PT_F, PT_G,
+ // h i j k l m n o
+ PT_H, PT_I, PT_J, PT_K, PT_L, PT_M, PT_N, PT_O,
+ // p q r s t u v w
+ PT_P, PT_Q, PT_R, PT_S, PT_T, PT_U, PT_V, PT_W,
+ // x y z { | } ~ DEL
+ PT_X, PT_Y, PT_Z, PT_8, PT_BSLS, PT_9, PT_TILD, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_portuguese_osx_iso.h b/quantum/keymap_extras/sendstring_portuguese_osx_iso.h
deleted file mode 100644
index f4ac1b37af..0000000000
--- a/quantum/keymap_extras/sendstring_portuguese_osx_iso.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright 2020
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-// Sendstring lookup tables for Portuguese layouts
-
-#pragma once
-
-#include "keymap_portuguese_osx_iso.h"
-#include "quantum.h"
-
-// clang-format off
-
-const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 0),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
-};
-
-const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0)
-};
-
-const uint8_t ascii_to_dead_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
- KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
-};
-
-const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, PT_1, PT_2, PT_3, PT_4, PT_5, PT_6, PT_QUOT,
- // ( ) * + , - . /
- PT_8, PT_9, PT_PLUS, PT_PLUS, PT_COMM, PT_MINS, PT_DOT, PT_7,
- // 0 1 2 3 4 5 6 7
- PT_0, PT_1, PT_2, PT_3, PT_4, PT_5, PT_6, PT_7,
- // 8 9 : ; < = > ?
- PT_8, PT_9, PT_DOT, PT_COMM, PT_LABK, PT_0, PT_LABK, PT_QUOT,
- // @ A B C D E F G
- PT_2, PT_A, PT_B, PT_C, PT_D, PT_E, PT_F, PT_G,
- // H I J K L M N O
- PT_H, PT_I, PT_J, PT_K, PT_L, PT_M, PT_N, PT_O,
- // P Q R S T U V W
- PT_P, PT_Q, PT_R, PT_S, PT_T, PT_U, PT_V, PT_W,
- // X Y Z [ \ ] ^ _
- PT_X, PT_Y, PT_Z, PT_8, PT_BSLS, PT_9, PT_TILD, PT_MINS,
- // ` a b c d e f g
- PT_ACUT, PT_A, PT_B, PT_C, PT_D, PT_E, PT_F, PT_G,
- // h i j k l m n o
- PT_H, PT_I, PT_J, PT_K, PT_L, PT_M, PT_N, PT_O,
- // p q r s t u v w
- PT_P, PT_Q, PT_R, PT_S, PT_T, PT_U, PT_V, PT_W,
- // x y z { | } ~ DEL
- PT_X, PT_Y, PT_Z, PT_8, PT_BSLS, PT_9, PT_TILD, KC_DEL
-};
diff --git a/quantum/keymap_extras/sendstring_swiss_de.h b/quantum/keymap_extras/sendstring_swiss_de.h
new file mode 100644
index 0000000000..f6aa19210c
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_swiss_de.h
@@ -0,0 +1,120 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for Swiss German layouts
+
+#pragma once
+
+#include "keymap_swiss_de.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 0, 0, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
+};
+
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, CH_DIAE, CH_2, CH_3, CH_DLR, CH_5, CH_6, CH_QUOT,
+ // ( ) * + , - . /
+ CH_8, CH_9, CH_3, CH_1, CH_COMM, CH_MINS, CH_DOT, CH_7,
+ // 0 1 2 3 4 5 6 7
+ CH_0, CH_1, CH_2, CH_3, CH_4, CH_5, CH_6, CH_7,
+ // 8 9 : ; < = > ?
+ CH_8, CH_9, CH_DOT, CH_COMM, CH_LABK, CH_0, CH_LABK, CH_QUOT,
+ // @ A B C D E F G
+ CH_2, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
+ // H I J K L M N O
+ CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
+ // P Q R S T U V W
+ CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
+ // X Y Z [ \ ] ^ _
+ CH_X, CH_Y, CH_Z, CH_UDIA, CH_LABK, CH_DIAE, CH_CIRC, CH_MINS,
+ // ` a b c d e f g
+ CH_CIRC, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
+ // h i j k l m n o
+ CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
+ // p q r s t u v w
+ CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
+ // x y z { | } ~ DEL
+ CH_X, CH_Y, CH_Z, CH_ADIA, CH_7, CH_DLR, CH_CIRC, KC_DEL
+};
diff --git a/quantum/keymap_extras/sendstring_swiss_fr.h b/quantum/keymap_extras/sendstring_swiss_fr.h
new file mode 100644
index 0000000000..665be6d7b4
--- /dev/null
+++ b/quantum/keymap_extras/sendstring_swiss_fr.h
@@ -0,0 +1,120 @@
+/* Copyright 2020
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+// Sendstring lookup tables for Swiss French layouts
+
+#pragma once
+
+#include "keymap_swiss_fr.h"
+#include "quantum.h"
+
+// clang-format off
+
+const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 0, 0, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 1, 0, 1, 1, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 1, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
+};
+
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
+const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, CH_DIAE, CH_2, CH_3, CH_DLR, CH_5, CH_6, CH_QUOT,
+ // ( ) * + , - . /
+ CH_8, CH_9, CH_3, CH_0, CH_COMM, CH_MINS, CH_DOT, CH_7,
+ // 0 1 2 3 4 5 6 7
+ CH_0, CH_1, CH_2, CH_3, CH_4, CH_5, CH_6, CH_7,
+ // 8 9 : ; < = > ?
+ CH_8, CH_9, CH_DOT, CH_COMM, CH_LABK, CH_0, CH_LABK, CH_QUOT,
+ // @ A B C D E F G
+ CH_2, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
+ // H I J K L M N O
+ CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
+ // P Q R S T U V W
+ CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
+ // X Y Z [ \ ] ^ _
+ CH_X, CH_Y, CH_Z, CH_EGRV, CH_LABK, CH_DIAE, CH_CIRC, CH_MINS,
+ // ` a b c d e f g
+ CH_CIRC, CH_A, CH_B, CH_C, CH_D, CH_E, CH_F, CH_G,
+ // h i j k l m n o
+ CH_H, CH_I, CH_J, CH_K, CH_L, CH_M, CH_N, CH_O,
+ // p q r s t u v w
+ CH_P, CH_Q, CH_R, CH_S, CH_T, CH_U, CH_V, CH_W,
+ // x y z { | } ~ DEL
+ CH_X, CH_Y, CH_Z, CH_AGRV, CH_7, CH_DLR, CH_CIRC, KC_DEL
+};
--
cgit v1.2.3