From 314865f83366fbaa547540154e0d2a48e7a2e72c Mon Sep 17 00:00:00 2001
From: peepeetee <43021794+peepeetee@users.noreply.github.com>
Date: Wed, 20 Apr 2022 03:19:16 +0800
Subject: move melody96 to ymdk vendor folder (#15680)

Co-authored-by: Nick Brassel <nick@tzarc.org>
---
 keyboards/melody96/config.h                        |  55 --
 keyboards/melody96/info.json                       | 884 ---------------------
 keyboards/melody96/keymaps/crilith/keymap.c        |  38 -
 keyboards/melody96/keymaps/default/keymap.c        |  20 -
 .../keymaps/default_96_with60_split_num0/keymap.c  |  36 -
 keyboards/melody96/keymaps/dvz/config.h            |  34 -
 keyboards/melody96/keymaps/dvz/keymap.c            | 161 ----
 keyboards/melody96/keymaps/dvz/readme.md           |   3 -
 keyboards/melody96/keymaps/dvz/rules.mk            |   5 -
 keyboards/melody96/keymaps/konstantin/config.h     |   3 -
 keyboards/melody96/keymaps/konstantin/keymap.c     |  77 --
 keyboards/melody96/keymaps/konstantin/rules.mk     |  19 -
 keyboards/melody96/keymaps/via/keymap.c            |  36 -
 keyboards/melody96/keymaps/via/rules.mk            |   2 -
 keyboards/melody96/keymaps/zunger/config.h         |  22 -
 keyboards/melody96/keymaps/zunger/keymap.c         | 489 ------------
 keyboards/melody96/keymaps/zunger/readme.md        |  78 --
 keyboards/melody96/keymaps/zunger/rules.mk         |   2 -
 keyboards/melody96/melody96.c                      |   1 -
 keyboards/melody96/melody96.h                      | 233 ------
 keyboards/melody96/readme.md                       |  19 -
 keyboards/melody96/rules.mk                        |  18 -
 keyboards/ymdk/melody96/config.h                   |  55 ++
 keyboards/ymdk/melody96/info.json                  | 884 +++++++++++++++++++++
 keyboards/ymdk/melody96/keymaps/crilith/keymap.c   |  38 +
 keyboards/ymdk/melody96/keymaps/default/keymap.c   |  20 +
 .../keymaps/default_96_with60_split_num0/keymap.c  |  36 +
 keyboards/ymdk/melody96/keymaps/dvz/config.h       |  34 +
 keyboards/ymdk/melody96/keymaps/dvz/keymap.c       | 161 ++++
 keyboards/ymdk/melody96/keymaps/dvz/readme.md      |   3 +
 keyboards/ymdk/melody96/keymaps/dvz/rules.mk       |   5 +
 .../ymdk/melody96/keymaps/konstantin/config.h      |   3 +
 .../ymdk/melody96/keymaps/konstantin/keymap.c      |  77 ++
 .../ymdk/melody96/keymaps/konstantin/rules.mk      |  19 +
 keyboards/ymdk/melody96/keymaps/via/keymap.c       |  36 +
 keyboards/ymdk/melody96/keymaps/via/rules.mk       |   2 +
 keyboards/ymdk/melody96/keymaps/zunger/config.h    |  22 +
 keyboards/ymdk/melody96/keymaps/zunger/keymap.c    | 489 ++++++++++++
 keyboards/ymdk/melody96/keymaps/zunger/readme.md   |  78 ++
 keyboards/ymdk/melody96/keymaps/zunger/rules.mk    |   2 +
 keyboards/ymdk/melody96/melody96.c                 |   1 +
 keyboards/ymdk/melody96/melody96.h                 | 233 ++++++
 keyboards/ymdk/melody96/readme.md                  |  19 +
 keyboards/ymdk/melody96/rules.mk                   |  18 +
 44 files changed, 2235 insertions(+), 2235 deletions(-)
 delete mode 100644 keyboards/melody96/config.h
 delete mode 100644 keyboards/melody96/info.json
 delete mode 100644 keyboards/melody96/keymaps/crilith/keymap.c
 delete mode 100644 keyboards/melody96/keymaps/default/keymap.c
 delete mode 100644 keyboards/melody96/keymaps/default_96_with60_split_num0/keymap.c
 delete mode 100644 keyboards/melody96/keymaps/dvz/config.h
 delete mode 100644 keyboards/melody96/keymaps/dvz/keymap.c
 delete mode 100644 keyboards/melody96/keymaps/dvz/readme.md
 delete mode 100644 keyboards/melody96/keymaps/dvz/rules.mk
 delete mode 100644 keyboards/melody96/keymaps/konstantin/config.h
 delete mode 100644 keyboards/melody96/keymaps/konstantin/keymap.c
 delete mode 100644 keyboards/melody96/keymaps/konstantin/rules.mk
 delete mode 100644 keyboards/melody96/keymaps/via/keymap.c
 delete mode 100644 keyboards/melody96/keymaps/via/rules.mk
 delete mode 100644 keyboards/melody96/keymaps/zunger/config.h
 delete mode 100644 keyboards/melody96/keymaps/zunger/keymap.c
 delete mode 100644 keyboards/melody96/keymaps/zunger/readme.md
 delete mode 100644 keyboards/melody96/keymaps/zunger/rules.mk
 delete mode 100644 keyboards/melody96/melody96.c
 delete mode 100644 keyboards/melody96/melody96.h
 delete mode 100644 keyboards/melody96/readme.md
 delete mode 100644 keyboards/melody96/rules.mk
 create mode 100644 keyboards/ymdk/melody96/config.h
 create mode 100644 keyboards/ymdk/melody96/info.json
 create mode 100644 keyboards/ymdk/melody96/keymaps/crilith/keymap.c
 create mode 100644 keyboards/ymdk/melody96/keymaps/default/keymap.c
 create mode 100644 keyboards/ymdk/melody96/keymaps/default_96_with60_split_num0/keymap.c
 create mode 100644 keyboards/ymdk/melody96/keymaps/dvz/config.h
 create mode 100644 keyboards/ymdk/melody96/keymaps/dvz/keymap.c
 create mode 100644 keyboards/ymdk/melody96/keymaps/dvz/readme.md
 create mode 100644 keyboards/ymdk/melody96/keymaps/dvz/rules.mk
 create mode 100644 keyboards/ymdk/melody96/keymaps/konstantin/config.h
 create mode 100644 keyboards/ymdk/melody96/keymaps/konstantin/keymap.c
 create mode 100644 keyboards/ymdk/melody96/keymaps/konstantin/rules.mk
 create mode 100644 keyboards/ymdk/melody96/keymaps/via/keymap.c
 create mode 100644 keyboards/ymdk/melody96/keymaps/via/rules.mk
 create mode 100644 keyboards/ymdk/melody96/keymaps/zunger/config.h
 create mode 100644 keyboards/ymdk/melody96/keymaps/zunger/keymap.c
 create mode 100644 keyboards/ymdk/melody96/keymaps/zunger/readme.md
 create mode 100644 keyboards/ymdk/melody96/keymaps/zunger/rules.mk
 create mode 100644 keyboards/ymdk/melody96/melody96.c
 create mode 100644 keyboards/ymdk/melody96/melody96.h
 create mode 100644 keyboards/ymdk/melody96/readme.md
 create mode 100644 keyboards/ymdk/melody96/rules.mk

diff --git a/keyboards/melody96/config.h b/keyboards/melody96/config.h
deleted file mode 100644
index 45e7e680c1..0000000000
--- a/keyboards/melody96/config.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0x594d // "YM"
-#define PRODUCT_ID      0x4D96 // "M" + 96
-#define DEVICE_VER      0x0001
-#define MANUFACTURER    YMDK
-#define PRODUCT         Melody96
-
-/* key matrix size */
-#define MATRIX_ROWS 12
-#define MATRIX_COLS 9
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 }
-#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
-#define LED_NUM_LOCK_PIN C6
-#define LED_CAPS_LOCK_PIN C7
-#define LED_SCROLL_LOCK_PIN B5
-#define LED_PIN_ON_STATE 0
-
-/* number of backlight levels */
-#define BACKLIGHT_PIN B6
-#ifdef BACKLIGHT_PIN
-#define BACKLIGHT_LEVELS 5
-#endif
-
-/* Set location for BootMagic key*/
-#define BOOTMAGIC_LITE_ROW 5
-#define BOOTMAGIC_LITE_COLUMN 0
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-#define RGB_DI_PIN E2
-#ifdef RGB_DI_PIN
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 18
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#endif
diff --git a/keyboards/melody96/info.json b/keyboards/melody96/info.json
deleted file mode 100644
index 7db60fa7d4..0000000000
--- a/keyboards/melody96/info.json
+++ /dev/null
@@ -1,884 +0,0 @@
-{
-    "keyboard_name": "melody96",
-    "url": "",
-    "maintainer": "qmk",
-    "layout_aliases": {
-        "LAYOUT": "LAYOUT_all",
-        "LAYOUT_hotswap": "LAYOUT_96_ansi"
-    },
-    "layouts": {
-        "LAYOUT_all": {
-            "layout": [
-                {"x": 0, "y": 0},
-                {"x": 1, "y": 0},
-                {"x": 2, "y": 0},
-                {"x": 3, "y": 0},
-                {"x": 4, "y": 0},
-                {"x": 5, "y": 0},
-                {"x": 6, "y": 0},
-                {"x": 7, "y": 0},
-                {"x": 8, "y": 0},
-                {"x": 9, "y": 0},
-                {"x": 10, "y": 0},
-                {"x": 11, "y": 0},
-                {"x": 12, "y": 0},
-                {"x": 13, "y": 0},
-                {"x": 14, "y": 0},
-                {"x": 15, "y": 0},
-                {"x": 16, "y": 0},
-                {"x": 17, "y": 0},
-                {"x": 18, "y": 0},
-
-                {"x": 0, "y": 1},
-                {"x": 1, "y": 1},
-                {"x": 2, "y": 1},
-                {"x": 3, "y": 1},
-                {"x": 4, "y": 1},
-                {"x": 5, "y": 1},
-                {"x": 6, "y": 1},
-                {"x": 7, "y": 1},
-                {"x": 8, "y": 1},
-                {"x": 9, "y": 1},
-                {"x": 10, "y": 1},
-                {"x": 11, "y": 1},
-                {"x": 12, "y": 1},
-                {"x": 13, "y": 1},
-                {"x": 14, "y": 1},
-                {"x": 15, "y": 1},
-                {"x": 16, "y": 1},
-                {"x": 17, "y": 1},
-                {"x": 18, "y": 1},
-
-                {"x": 0, "y": 2, "w": 1.5},
-                {"x": 1.5, "y": 2},
-                {"x": 2.5, "y": 2},
-                {"x": 3.5, "y": 2},
-                {"x": 4.5, "y": 2},
-                {"x": 5.5, "y": 2},
-                {"x": 6.5, "y": 2},
-                {"x": 7.5, "y": 2},
-                {"x": 8.5, "y": 2},
-                {"x": 9.5, "y": 2},
-                {"x": 10.5, "y": 2},
-                {"x": 11.5, "y": 2},
-                {"x": 12.5, "y": 2},
-                {"x": 13.5, "y": 2, "w": 1.5},
-                {"x": 15, "y": 2},
-                {"x": 16, "y": 2},
-                {"x": 17, "y": 2},
-                {"x": 18, "y": 2},
-
-                {"x": 0, "y": 3, "w": 1.75},
-                {"x": 1.75, "y": 3},
-                {"x": 2.75, "y": 3},
-                {"x": 3.75, "y": 3},
-                {"x": 4.75, "y": 3},
-                {"x": 5.75, "y": 3},
-                {"x": 6.75, "y": 3},
-                {"x": 7.75, "y": 3},
-                {"x": 8.75, "y": 3},
-                {"x": 9.75, "y": 3},
-                {"x": 10.75, "y": 3},
-                {"x": 11.75, "y": 3},
-                {"x": 12.75, "y": 3, "w": 2.25},
-                {"x": 15, "y": 3},
-                {"x": 16, "y": 3},
-                {"x": 17, "y": 3},
-                {"x": 18, "y": 3},
-
-                {"x": 0, "y": 4, "w": 1.25},
-                {"x": 1.25, "y": 4},
-                {"x": 2.25, "y": 4},
-                {"x": 3.25, "y": 4},
-                {"x": 4.25, "y": 4},
-                {"x": 5.25, "y": 4},
-                {"x": 6.25, "y": 4},
-                {"x": 7.25, "y": 4},
-                {"x": 8.25, "y": 4},
-                {"x": 9.25, "y": 4},
-                {"x": 10.25, "y": 4},
-                {"x": 11.25, "y": 4},
-                {"x": 12.25, "y": 4, "w": 1.75},
-                {"x": 14, "y": 4},
-                {"x": 15, "y": 4},
-                {"x": 16, "y": 4},
-                {"x": 17, "y": 4},
-                {"x": 18, "y": 4},
-
-                {"x": 0, "y": 5, "w": 1.25},
-                {"x": 1.25, "y": 5, "w": 1.25},
-                {"x": 2.5, "y": 5, "w": 1.25},
-                {"x": 3.75, "y": 5, "w": 6.25},
-                {"x": 10, "y": 5},
-                {"x": 11, "y": 5},
-                {"x": 12, "y": 5},
-                {"x": 13, "y": 5},
-                {"x": 14, "y": 5},
-                {"x": 15, "y": 5},
-                {"x": 16, "y": 5},
-                {"x": 17, "y": 5},
-                {"x": 18, "y": 5}
-            ]
-        },
-        "LAYOUT_96_ansi": {
-            "layout": [
-                {"x": 0, "y": 0},
-                {"x": 1, "y": 0},
-                {"x": 2, "y": 0},
-                {"x": 3, "y": 0},
-                {"x": 4, "y": 0},
-                {"x": 5, "y": 0},
-                {"x": 6, "y": 0},
-                {"x": 7, "y": 0},
-                {"x": 8, "y": 0},
-                {"x": 9, "y": 0},
-                {"x": 10, "y": 0},
-                {"x": 11, "y": 0},
-                {"x": 12, "y": 0},
-                {"x": 13, "y": 0},
-                {"x": 14, "y": 0},
-                {"x": 15, "y": 0},
-                {"x": 16, "y": 0},
-                {"x": 17, "y": 0},
-                {"x": 18, "y": 0},
-
-                {"x": 0, "y": 1},
-                {"x": 1, "y": 1},
-                {"x": 2, "y": 1},
-                {"x": 3, "y": 1},
-                {"x": 4, "y": 1},
-                {"x": 5, "y": 1},
-                {"x": 6, "y": 1},
-                {"x": 7, "y": 1},
-                {"x": 8, "y": 1},
-                {"x": 9, "y": 1},
-                {"x": 10, "y": 1},
-                {"x": 11, "y": 1},
-                {"x": 12, "y": 1},
-                {"x": 13, "y": 1, "w": 2},
-                {"x": 15, "y": 1},
-                {"x": 16, "y": 1},
-                {"x": 17, "y": 1},
-                {"x": 18, "y": 1},
-
-                {"x": 0, "y": 2, "w": 1.5},
-                {"x": 1.5, "y": 2},
-                {"x": 2.5, "y": 2},
-                {"x": 3.5, "y": 2},
-                {"x": 4.5, "y": 2},
-                {"x": 5.5, "y": 2},
-                {"x": 6.5, "y": 2},
-                {"x": 7.5, "y": 2},
-                {"x": 8.5, "y": 2},
-                {"x": 9.5, "y": 2},
-                {"x": 10.5, "y": 2},
-                {"x": 11.5, "y": 2},
-                {"x": 12.5, "y": 2},
-                {"x": 13.5, "y": 2, "w": 1.5},
-                {"x": 15, "y": 2},
-                {"x": 16, "y": 2},
-                {"x": 17, "y": 2},
-                {"x": 18, "y": 2, "h": 2},
-
-                {"x": 0, "y": 3, "w": 1.75},
-                {"x": 1.75, "y": 3},
-                {"x": 2.75, "y": 3},
-                {"x": 3.75, "y": 3},
-                {"x": 4.75, "y": 3},
-                {"x": 5.75, "y": 3},
-                {"x": 6.75, "y": 3},
-                {"x": 7.75, "y": 3},
-                {"x": 8.75, "y": 3},
-                {"x": 9.75, "y": 3},
-                {"x": 10.75, "y": 3},
-                {"x": 11.75, "y": 3},
-                {"x": 12.75, "y": 3, "w": 2.25},
-                {"x": 15, "y": 3},
-                {"x": 16, "y": 3},
-                {"x": 17, "y": 3},
-
-                {"x": 0, "y": 4, "w": 2.25},
-                {"x": 2.25, "y": 4},
-                {"x": 3.25, "y": 4},
-                {"x": 4.25, "y": 4},
-                {"x": 5.25, "y": 4},
-                {"x": 6.25, "y": 4},
-                {"x": 7.25, "y": 4},
-                {"x": 8.25, "y": 4},
-                {"x": 9.25, "y": 4},
-                {"x": 10.25, "y": 4},
-                {"x": 11.25, "y": 4},
-                {"x": 12.25, "y": 4, "w": 1.75},
-                {"x": 14, "y": 4},
-                {"x": 15, "y": 4},
-                {"x": 16, "y": 4},
-                {"x": 17, "y": 4},
-                {"x": 18, "y": 4, "h": 2},
-
-                {"x": 0, "y": 5, "w": 1.25},
-                {"x": 1.25, "y": 5, "w": 1.25},
-                {"x": 2.5, "y": 5, "w": 1.25},
-                {"x": 3.75, "y": 5, "w": 6.25},
-                {"x": 10, "y": 5},
-                {"x": 11, "y": 5},
-                {"x": 12, "y": 5},
-                {"x": 13, "y": 5},
-                {"x": 14, "y": 5},
-                {"x": 15, "y": 5},
-                {"x": 16, "y": 5},
-                {"x": 17, "y": 5}
-            ]
-        },
-        "LAYOUT_96_ansi_splitbs": {
-            "layout": [
-                {"x": 0, "y": 0},
-                {"x": 1, "y": 0},
-                {"x": 2, "y": 0},
-                {"x": 3, "y": 0},
-                {"x": 4, "y": 0},
-                {"x": 5, "y": 0},
-                {"x": 6, "y": 0},
-                {"x": 7, "y": 0},
-                {"x": 8, "y": 0},
-                {"x": 9, "y": 0},
-                {"x": 10, "y": 0},
-                {"x": 11, "y": 0},
-                {"x": 12, "y": 0},
-                {"x": 13, "y": 0},
-                {"x": 14, "y": 0},
-                {"x": 15, "y": 0},
-                {"x": 16, "y": 0},
-                {"x": 17, "y": 0},
-                {"x": 18, "y": 0},
-
-                {"x": 0, "y": 1},
-                {"x": 1, "y": 1},
-                {"x": 2, "y": 1},
-                {"x": 3, "y": 1},
-                {"x": 4, "y": 1},
-                {"x": 5, "y": 1},
-                {"x": 6, "y": 1},
-                {"x": 7, "y": 1},
-                {"x": 8, "y": 1},
-                {"x": 9, "y": 1},
-                {"x": 10, "y": 1},
-                {"x": 11, "y": 1},
-                {"x": 12, "y": 1},
-                {"x": 13, "y": 1},
-                {"x": 14, "y": 1},
-                {"x": 15, "y": 1},
-                {"x": 16, "y": 1},
-                {"x": 17, "y": 1},
-                {"x": 18, "y": 1},
-
-                {"x": 0, "y": 2, "w": 1.5},
-                {"x": 1.5, "y": 2},
-                {"x": 2.5, "y": 2},
-                {"x": 3.5, "y": 2},
-                {"x": 4.5, "y": 2},
-                {"x": 5.5, "y": 2},
-                {"x": 6.5, "y": 2},
-                {"x": 7.5, "y": 2},
-                {"x": 8.5, "y": 2},
-                {"x": 9.5, "y": 2},
-                {"x": 10.5, "y": 2},
-                {"x": 11.5, "y": 2},
-                {"x": 12.5, "y": 2},
-                {"x": 13.5, "y": 2, "w": 1.5},
-                {"x": 15, "y": 2},
-                {"x": 16, "y": 2},
-                {"x": 17, "y": 2},
-                {"x": 18, "y": 2, "h": 2},
-
-                {"x": 0, "y": 3, "w": 1.75},
-                {"x": 1.75, "y": 3},
-                {"x": 2.75, "y": 3},
-                {"x": 3.75, "y": 3},
-                {"x": 4.75, "y": 3},
-                {"x": 5.75, "y": 3},
-                {"x": 6.75, "y": 3},
-                {"x": 7.75, "y": 3},
-                {"x": 8.75, "y": 3},
-                {"x": 9.75, "y": 3},
-                {"x": 10.75, "y": 3},
-                {"x": 11.75, "y": 3},
-                {"x": 12.75, "y": 3, "w": 2.25},
-                {"x": 15, "y": 3},
-                {"x": 16, "y": 3},
-                {"x": 17, "y": 3},
-
-                {"x": 0, "y": 4, "w": 2.25},
-                {"x": 2.25, "y": 4},
-                {"x": 3.25, "y": 4},
-                {"x": 4.25, "y": 4},
-                {"x": 5.25, "y": 4},
-                {"x": 6.25, "y": 4},
-                {"x": 7.25, "y": 4},
-                {"x": 8.25, "y": 4},
-                {"x": 9.25, "y": 4},
-                {"x": 10.25, "y": 4},
-                {"x": 11.25, "y": 4},
-                {"x": 12.25, "y": 4, "w": 1.75},
-                {"x": 14, "y": 4},
-                {"x": 15, "y": 4},
-                {"x": 16, "y": 4},
-                {"x": 17, "y": 4},
-                {"x": 18, "y": 4, "h": 2},
-
-                {"x": 0, "y": 5, "w": 1.25},
-                {"x": 1.25, "y": 5, "w": 1.25},
-                {"x": 2.5, "y": 5, "w": 1.25},
-                {"x": 3.75, "y": 5, "w": 6.25},
-                {"x": 10, "y": 5},
-                {"x": 11, "y": 5},
-                {"x": 12, "y": 5},
-                {"x": 13, "y": 5},
-                {"x": 14, "y": 5},
-                {"x": 15, "y": 5},
-                {"x": 16, "y": 5},
-                {"x": 17, "y": 5}
-            ]
-        },
-        "LAYOUT_96_iso": {
-            "layout": [
-                {"x": 0, "y": 0},
-                {"x": 1, "y": 0},
-                {"x": 2, "y": 0},
-                {"x": 3, "y": 0},
-                {"x": 4, "y": 0},
-                {"x": 5, "y": 0},
-                {"x": 6, "y": 0},
-                {"x": 7, "y": 0},
-                {"x": 8, "y": 0},
-                {"x": 9, "y": 0},
-                {"x": 10, "y": 0},
-                {"x": 11, "y": 0},
-                {"x": 12, "y": 0},
-                {"x": 13, "y": 0},
-                {"x": 14, "y": 0},
-                {"x": 15, "y": 0},
-                {"x": 16, "y": 0},
-                {"x": 17, "y": 0},
-                {"x": 18, "y": 0},
-
-                {"x": 0, "y": 1},
-                {"x": 1, "y": 1},
-                {"x": 2, "y": 1},
-                {"x": 3, "y": 1},
-                {"x": 4, "y": 1},
-                {"x": 5, "y": 1},
-                {"x": 6, "y": 1},
-                {"x": 7, "y": 1},
-                {"x": 8, "y": 1},
-                {"x": 9, "y": 1},
-                {"x": 10, "y": 1},
-                {"x": 11, "y": 1},
-                {"x": 12, "y": 1},
-                {"x": 13, "y": 1, "w": 2},
-                {"x": 15, "y": 1},
-                {"x": 16, "y": 1},
-                {"x": 17, "y": 1},
-                {"x": 18, "y": 1},
-
-                {"x": 0, "y": 2, "w": 1.5},
-                {"x": 1.5, "y": 2},
-                {"x": 2.5, "y": 2},
-                {"x": 3.5, "y": 2},
-                {"x": 4.5, "y": 2},
-                {"x": 5.5, "y": 2},
-                {"x": 6.5, "y": 2},
-                {"x": 7.5, "y": 2},
-                {"x": 8.5, "y": 2},
-                {"x": 9.5, "y": 2},
-                {"x": 10.5, "y": 2},
-                {"x": 11.5, "y": 2},
-                {"x": 12.5, "y": 2},
-                {"x": 15, "y": 2},
-                {"x": 16, "y": 2},
-                {"x": 17, "y": 2},
-                {"x": 18, "y": 2, "h": 2},
-
-                {"x": 0, "y": 3, "w": 1.75},
-                {"x": 1.75, "y": 3},
-                {"x": 2.75, "y": 3},
-                {"x": 3.75, "y": 3},
-                {"x": 4.75, "y": 3},
-                {"x": 5.75, "y": 3},
-                {"x": 6.75, "y": 3},
-                {"x": 7.75, "y": 3},
-                {"x": 8.75, "y": 3},
-                {"x": 9.75, "y": 3},
-                {"x": 10.75, "y": 3},
-                {"x": 11.75, "y": 3},
-                {"x": 12.75, "y": 3},
-                {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
-                {"x": 15, "y": 3},
-                {"x": 16, "y": 3},
-                {"x": 17, "y": 3},
-
-                {"x": 0, "y": 4, "w": 1.25},
-                {"x": 1.25, "y": 4},
-                {"x": 2.25, "y": 4},
-                {"x": 3.25, "y": 4},
-                {"x": 4.25, "y": 4},
-                {"x": 5.25, "y": 4},
-                {"x": 6.25, "y": 4},
-                {"x": 7.25, "y": 4},
-                {"x": 8.25, "y": 4},
-                {"x": 9.25, "y": 4},
-                {"x": 10.25, "y": 4},
-                {"x": 11.25, "y": 4},
-                {"x": 12.25, "y": 4, "w": 1.75},
-                {"x": 14, "y": 4},
-                {"x": 15, "y": 4},
-                {"x": 16, "y": 4},
-                {"x": 17, "y": 4},
-                {"x": 18, "y": 4, "h": 2},
-
-                {"x": 0, "y": 5, "w": 1.25},
-                {"x": 1.25, "y": 5, "w": 1.25},
-                {"x": 2.5, "y": 5, "w": 1.25},
-                {"x": 3.75, "y": 5, "w": 6.25},
-                {"x": 10, "y": 5},
-                {"x": 11, "y": 5},
-                {"x": 12, "y": 5},
-                {"x": 13, "y": 5},
-                {"x": 14, "y": 5},
-                {"x": 15, "y": 5},
-                {"x": 16, "y": 5},
-                {"x": 17, "y": 5}
-            ]
-        },
-        "LAYOUT_96_iso_splitbs": {
-            "layout": [
-                {"x": 0, "y": 0},
-                {"x": 1, "y": 0},
-                {"x": 2, "y": 0},
-                {"x": 3, "y": 0},
-                {"x": 4, "y": 0},
-                {"x": 5, "y": 0},
-                {"x": 6, "y": 0},
-                {"x": 7, "y": 0},
-                {"x": 8, "y": 0},
-                {"x": 9, "y": 0},
-                {"x": 10, "y": 0},
-                {"x": 11, "y": 0},
-                {"x": 12, "y": 0},
-                {"x": 13, "y": 0},
-                {"x": 14, "y": 0},
-                {"x": 15, "y": 0},
-                {"x": 16, "y": 0},
-                {"x": 17, "y": 0},
-                {"x": 18, "y": 0},
-
-                {"x": 0, "y": 1},
-                {"x": 1, "y": 1},
-                {"x": 2, "y": 1},
-                {"x": 3, "y": 1},
-                {"x": 4, "y": 1},
-                {"x": 5, "y": 1},
-                {"x": 6, "y": 1},
-                {"x": 7, "y": 1},
-                {"x": 8, "y": 1},
-                {"x": 9, "y": 1},
-                {"x": 10, "y": 1},
-                {"x": 11, "y": 1},
-                {"x": 12, "y": 1},
-                {"x": 13, "y": 1},
-                {"x": 14, "y": 1},
-                {"x": 15, "y": 1},
-                {"x": 16, "y": 1},
-                {"x": 17, "y": 1},
-                {"x": 18, "y": 1},
-
-                {"x": 0, "y": 2, "w": 1.5},
-                {"x": 1.5, "y": 2},
-                {"x": 2.5, "y": 2},
-                {"x": 3.5, "y": 2},
-                {"x": 4.5, "y": 2},
-                {"x": 5.5, "y": 2},
-                {"x": 6.5, "y": 2},
-                {"x": 7.5, "y": 2},
-                {"x": 8.5, "y": 2},
-                {"x": 9.5, "y": 2},
-                {"x": 10.5, "y": 2},
-                {"x": 11.5, "y": 2},
-                {"x": 12.5, "y": 2},
-                {"x": 15, "y": 2},
-                {"x": 16, "y": 2},
-                {"x": 17, "y": 2},
-                {"x": 18, "y": 2, "h": 2},
-
-                {"x": 0, "y": 3, "w": 1.75},
-                {"x": 1.75, "y": 3},
-                {"x": 2.75, "y": 3},
-                {"x": 3.75, "y": 3},
-                {"x": 4.75, "y": 3},
-                {"x": 5.75, "y": 3},
-                {"x": 6.75, "y": 3},
-                {"x": 7.75, "y": 3},
-                {"x": 8.75, "y": 3},
-                {"x": 9.75, "y": 3},
-                {"x": 10.75, "y": 3},
-                {"x": 11.75, "y": 3},
-                {"x": 12.75, "y": 3},
-                {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
-                {"x": 15, "y": 3},
-                {"x": 16, "y": 3},
-                {"x": 17, "y": 3},
-
-                {"x": 0, "y": 4, "w": 1.25},
-                {"x": 1.25, "y": 4},
-                {"x": 2.25, "y": 4},
-                {"x": 3.25, "y": 4},
-                {"x": 4.25, "y": 4},
-                {"x": 5.25, "y": 4},
-                {"x": 6.25, "y": 4},
-                {"x": 7.25, "y": 4},
-                {"x": 8.25, "y": 4},
-                {"x": 9.25, "y": 4},
-                {"x": 10.25, "y": 4},
-                {"x": 11.25, "y": 4},
-                {"x": 12.25, "y": 4, "w": 1.75},
-                {"x": 14, "y": 4},
-                {"x": 15, "y": 4},
-                {"x": 16, "y": 4},
-                {"x": 17, "y": 4},
-                {"x": 18, "y": 4, "h": 2},
-
-                {"x": 0, "y": 5, "w": 1.25},
-                {"x": 1.25, "y": 5, "w": 1.25},
-                {"x": 2.5, "y": 5, "w": 1.25},
-                {"x": 3.75, "y": 5, "w": 6.25},
-                {"x": 10, "y": 5},
-                {"x": 11, "y": 5},
-                {"x": 12, "y": 5},
-                {"x": 13, "y": 5},
-                {"x": 14, "y": 5},
-                {"x": 15, "y": 5},
-                {"x": 16, "y": 5},
-                {"x": 17, "y": 5}
-            ]
-        },
-        "LAYOUT_96_with60": {
-            "layout": [
-                {"x": 0, "y": 0},
-                {"x": 1, "y": 0},
-                {"x": 2, "y": 0},
-                {"x": 3, "y": 0},
-                {"x": 4, "y": 0},
-                {"x": 5, "y": 0},
-                {"x": 6, "y": 0},
-                {"x": 7, "y": 0},
-                {"x": 8, "y": 0},
-                {"x": 9, "y": 0},
-                {"x": 10, "y": 0},
-                {"x": 11, "y": 0},
-                {"x": 12, "y": 0},
-                {"x": 13, "y": 0},
-                {"x": 14, "y": 0},
-                {"x": 15, "y": 0},
-                {"x": 16, "y": 0},
-                {"x": 17, "y": 0},
-                {"x": 18, "y": 0},
-
-                {"x": 0, "y": 1},
-                {"x": 1, "y": 1},
-                {"x": 2, "y": 1},
-                {"x": 3, "y": 1},
-                {"x": 4, "y": 1},
-                {"x": 5, "y": 1},
-                {"x": 6, "y": 1},
-                {"x": 7, "y": 1},
-                {"x": 8, "y": 1},
-                {"x": 9, "y": 1},
-                {"x": 10, "y": 1},
-                {"x": 11, "y": 1},
-                {"x": 12, "y": 1},
-                {"x": 13, "y": 1, "w": 2},
-                {"x": 15, "y": 1},
-                {"x": 16, "y": 1},
-                {"x": 17, "y": 1},
-                {"x": 18, "y": 1},
-
-                {"x": 0, "y": 2, "w": 1.5},
-                {"x": 1.5, "y": 2},
-                {"x": 2.5, "y": 2},
-                {"x": 3.5, "y": 2},
-                {"x": 4.5, "y": 2},
-                {"x": 5.5, "y": 2},
-                {"x": 6.5, "y": 2},
-                {"x": 7.5, "y": 2},
-                {"x": 8.5, "y": 2},
-                {"x": 9.5, "y": 2},
-                {"x": 10.5, "y": 2},
-                {"x": 11.5, "y": 2},
-                {"x": 12.5, "y": 2},
-                {"x": 13.5, "y": 2, "w": 1.5},
-                {"x": 15, "y": 2},
-                {"x": 16, "y": 2},
-                {"x": 17, "y": 2},
-                {"x": 18, "y": 2, "h": 2},
-
-                {"x": 0, "y": 3, "w": 1.75},
-                {"x": 1.75, "y": 3},
-                {"x": 2.75, "y": 3},
-                {"x": 3.75, "y": 3},
-                {"x": 4.75, "y": 3},
-                {"x": 5.75, "y": 3},
-                {"x": 6.75, "y": 3},
-                {"x": 7.75, "y": 3},
-                {"x": 8.75, "y": 3},
-                {"x": 9.75, "y": 3},
-                {"x": 10.75, "y": 3},
-                {"x": 11.75, "y": 3},
-                {"x": 12.75, "y": 3, "w": 2.25},
-                {"x": 15, "y": 3},
-                {"x": 16, "y": 3},
-                {"x": 17, "y": 3},
-
-                {"x": 0, "y": 4, "w": 2.25},
-                {"x": 2.25, "y": 4},
-                {"x": 3.25, "y": 4},
-                {"x": 4.25, "y": 4},
-                {"x": 5.25, "y": 4},
-                {"x": 6.25, "y": 4},
-                {"x": 7.25, "y": 4},
-                {"x": 8.25, "y": 4},
-                {"x": 9.25, "y": 4},
-                {"x": 10.25, "y": 4},
-                {"x": 11.25, "y": 4},
-                {"x": 12.25, "y": 4, "w": 2.75},
-                {"x": 15, "y": 4},
-                {"x": 16, "y": 4},
-                {"x": 17, "y": 4},
-                {"x": 18, "y": 4, "h": 2}
-
-                {"x": 0, "y": 5, "w": 1.25},
-                {"x": 1.25, "y": 5, "w": 1.25},
-                {"x": 2.5, "y": 5, "w": 1.25},
-                {"x": 3.75, "y": 5, "w": 6.25},
-                {"x": 10, "y": 5, "w": 1.25},
-                {"x": 11.25, "y": 5, "w": 1.25},
-                {"x": 12.5, "y": 5, "w": 1.25},
-                {"x": 13.75, "y": 5, "w": 1.25},
-                {"x": 15, "y": 5, "w": 2},
-                {"x": 17, "y": 5},
-            ]
-        },
-        "LAYOUT_96_with60_splitbs": {
-            "layout": [
-                {"x": 0, "y": 0},
-                {"x": 1, "y": 0},
-                {"x": 2, "y": 0},
-                {"x": 3, "y": 0},
-                {"x": 4, "y": 0},
-                {"x": 5, "y": 0},
-                {"x": 6, "y": 0},
-                {"x": 7, "y": 0},
-                {"x": 8, "y": 0},
-                {"x": 9, "y": 0},
-                {"x": 10, "y": 0},
-                {"x": 11, "y": 0},
-                {"x": 12, "y": 0},
-                {"x": 13, "y": 0},
-                {"x": 14, "y": 0},
-                {"x": 15, "y": 0},
-                {"x": 16, "y": 0},
-                {"x": 17, "y": 0},
-                {"x": 18, "y": 0},
-
-                {"x": 0, "y": 1},
-                {"x": 1, "y": 1},
-                {"x": 2, "y": 1},
-                {"x": 3, "y": 1},
-                {"x": 4, "y": 1},
-                {"x": 5, "y": 1},
-                {"x": 6, "y": 1},
-                {"x": 7, "y": 1},
-                {"x": 8, "y": 1},
-                {"x": 9, "y": 1},
-                {"x": 10, "y": 1},
-                {"x": 11, "y": 1},
-                {"x": 12, "y": 1},
-                {"x": 13, "y": 1},
-                {"x": 14, "y": 1},
-                {"x": 15, "y": 1},
-                {"x": 16, "y": 1},
-                {"x": 17, "y": 1},
-                {"x": 18, "y": 1},
-
-                {"x": 0, "y": 2, "w": 1.5},
-                {"x": 1.5, "y": 2},
-                {"x": 2.5, "y": 2},
-                {"x": 3.5, "y": 2},
-                {"x": 4.5, "y": 2},
-                {"x": 5.5, "y": 2},
-                {"x": 6.5, "y": 2},
-                {"x": 7.5, "y": 2},
-                {"x": 8.5, "y": 2},
-                {"x": 9.5, "y": 2},
-                {"x": 10.5, "y": 2},
-                {"x": 11.5, "y": 2},
-                {"x": 12.5, "y": 2},
-                {"x": 13.5, "y": 2, "w": 1.5},
-                {"x": 15, "y": 2},
-                {"x": 16, "y": 2},
-                {"x": 17, "y": 2},
-                {"x": 18, "y": 2, "h": 2},
-
-                {"x": 0, "y": 3, "w": 1.75},
-                {"x": 1.75, "y": 3},
-                {"x": 2.75, "y": 3},
-                {"x": 3.75, "y": 3},
-                {"x": 4.75, "y": 3},
-                {"x": 5.75, "y": 3},
-                {"x": 6.75, "y": 3},
-                {"x": 7.75, "y": 3},
-                {"x": 8.75, "y": 3},
-                {"x": 9.75, "y": 3},
-                {"x": 10.75, "y": 3},
-                {"x": 11.75, "y": 3},
-                {"x": 12.75, "y": 3, "w": 2.25},
-                {"x": 15, "y": 3},
-                {"x": 16, "y": 3},
-                {"x": 17, "y": 3},
-
-                {"x": 0, "y": 4, "w": 2.25},
-                {"x": 2.25, "y": 4},
-                {"x": 3.25, "y": 4},
-                {"x": 4.25, "y": 4},
-                {"x": 5.25, "y": 4},
-                {"x": 6.25, "y": 4},
-                {"x": 7.25, "y": 4},
-                {"x": 8.25, "y": 4},
-                {"x": 9.25, "y": 4},
-                {"x": 10.25, "y": 4},
-                {"x": 11.25, "y": 4},
-                {"x": 12.25, "y": 4, "w": 2.75},
-                {"x": 15, "y": 4},
-                {"x": 16, "y": 4},
-                {"x": 17, "y": 4},
-                {"x": 18, "y": 4, "h": 2}
-
-                {"x": 0, "y": 5, "w": 1.25},
-                {"x": 1.25, "y": 5, "w": 1.25},
-                {"x": 2.5, "y": 5, "w": 1.25},
-                {"x": 3.75, "y": 5, "w": 6.25},
-                {"x": 10, "y": 5, "w": 1.25},
-                {"x": 11.25, "y": 5, "w": 1.25},
-                {"x": 12.5, "y": 5, "w": 1.25},
-                {"x": 13.75, "y": 5, "w": 1.25},
-                {"x": 15, "y": 5, "w": 2},
-                {"x": 17, "y": 5},
-            ]
-        },
-        "LAYOUT_96_with60_split_num0": {
-            "layout": [
-                {"x": 0, "y": 0},
-                {"x": 1, "y": 0},
-                {"x": 2, "y": 0},
-                {"x": 3, "y": 0},
-                {"x": 4, "y": 0},
-                {"x": 5, "y": 0},
-                {"x": 6, "y": 0},
-                {"x": 7, "y": 0},
-                {"x": 8, "y": 0},
-                {"x": 9, "y": 0},
-                {"x": 10, "y": 0},
-                {"x": 11, "y": 0},
-                {"x": 12, "y": 0},
-                {"x": 13, "y": 0},
-                {"x": 14, "y": 0},
-                {"x": 15, "y": 0},
-                {"x": 16, "y": 0},
-                {"x": 17, "y": 0},
-                {"x": 18, "y": 0},
-
-                {"x": 0, "y": 1},
-                {"x": 1, "y": 1},
-                {"x": 2, "y": 1},
-                {"x": 3, "y": 1},
-                {"x": 4, "y": 1},
-                {"x": 5, "y": 1},
-                {"x": 6, "y": 1},
-                {"x": 7, "y": 1},
-                {"x": 8, "y": 1},
-                {"x": 9, "y": 1},
-                {"x": 10, "y": 1},
-                {"x": 11, "y": 1},
-                {"x": 12, "y": 1},
-                {"x": 13, "y": 1, "w": 2},
-                {"x": 15, "y": 1},
-                {"x": 16, "y": 1},
-                {"x": 17, "y": 1},
-                {"x": 18, "y": 1},
-
-                {"x": 0, "y": 2, "w": 1.5},
-                {"x": 1.5, "y": 2},
-                {"x": 2.5, "y": 2},
-                {"x": 3.5, "y": 2},
-                {"x": 4.5, "y": 2},
-                {"x": 5.5, "y": 2},
-                {"x": 6.5, "y": 2},
-                {"x": 7.5, "y": 2},
-                {"x": 8.5, "y": 2},
-                {"x": 9.5, "y": 2},
-                {"x": 10.5, "y": 2},
-                {"x": 11.5, "y": 2},
-                {"x": 12.5, "y": 2},
-                {"x": 13.5, "y": 2, "w": 1.5},
-                {"x": 15, "y": 2},
-                {"x": 16, "y": 2},
-                {"x": 17, "y": 2},
-                {"x": 18, "y": 2, "h": 2},
-
-                {"x": 0, "y": 3, "w": 1.75},
-                {"x": 1.75, "y": 3},
-                {"x": 2.75, "y": 3},
-                {"x": 3.75, "y": 3},
-                {"x": 4.75, "y": 3},
-                {"x": 5.75, "y": 3},
-                {"x": 6.75, "y": 3},
-                {"x": 7.75, "y": 3},
-                {"x": 8.75, "y": 3},
-                {"x": 9.75, "y": 3},
-                {"x": 10.75, "y": 3},
-                {"x": 11.75, "y": 3},
-                {"x": 12.75, "y": 3, "w": 2.25},
-                {"x": 15, "y": 3},
-                {"x": 16, "y": 3},
-                {"x": 17, "y": 3},
-
-                {"x": 0, "y": 4, "w": 2.25},
-                {"x": 2.25, "y": 4},
-                {"x": 3.25, "y": 4},
-                {"x": 4.25, "y": 4},
-                {"x": 5.25, "y": 4},
-                {"x": 6.25, "y": 4},
-                {"x": 7.25, "y": 4},
-                {"x": 8.25, "y": 4},
-                {"x": 9.25, "y": 4},
-                {"x": 10.25, "y": 4},
-                {"x": 11.25, "y": 4},
-                {"x": 12.25, "y": 4, "w": 2.75},
-                {"x": 15, "y": 4},
-                {"x": 16, "y": 4},
-                {"x": 17, "y": 4},
-                {"x": 18, "y": 4, "h": 2},
-
-                {"x": 0, "y": 5, "w": 1.25},
-                {"x": 1.25, "y": 5, "w": 1.25},
-                {"x": 2.5, "y": 5, "w": 1.25},
-                {"x": 3.75, "y": 5, "w": 6.25},
-                {"x": 10, "y": 5, "w": 1.25},
-                {"x": 11.25, "y": 5, "w": 1.25},
-                {"x": 12.5, "y": 5, "w": 1.25},
-                {"x": 13.75, "y": 5, "w": 1.25},
-                {"x": 15, "y": 5},
-                {"x": 16, "y": 5},
-                {"x": 17, "y": 5}
-            ]
-        }
-    }
-}
diff --git a/keyboards/melody96/keymaps/crilith/keymap.c b/keyboards/melody96/keymaps/crilith/keymap.c
deleted file mode 100644
index 40ae691435..0000000000
--- a/keyboards/melody96/keymaps/crilith/keymap.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include QMK_KEYBOARD_H
-
-enum custom_keycodes {
-  QWERTY = SAFE_RANGE,
-  DYNAMIC_MACRO_RANGE,
-};
-
-#include "dynamic_macro.h"
-
-#define KC_REC DYN_REC_START1
-#define KC_DONE DYN_REC_STOP
-#define KC_PLAY DYN_MACRO_PLAY1
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-	LAYOUT(
-    KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
-    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
-    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,          KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
-    KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
-    KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PENT,
-    KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             TT(1),   KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT),
-
-	LAYOUT(
-    RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
-    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______,
-    _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,          _______, _______, _______, KC_TAB,
-    BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, KC_TAB,
-    _______, _______, _______, _______, BL_DEC,  BL_TOGG, BL_INC,  _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
-    _______, _______, _______,                            KC_PLAY,                            _______, KC_REC,  KC_DONE, _______, _______, _______, _______, _______, _______),
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    if (!process_record_dynamic_macro(keycode, record)) {
-        return false;
-    }
-	return true;
-}
diff --git a/keyboards/melody96/keymaps/default/keymap.c b/keyboards/melody96/keymaps/default/keymap.c
deleted file mode 100644
index 3ed6f3068b..0000000000
--- a/keyboards/melody96/keymaps/default/keymap.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [0] = LAYOUT_all(
-        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
-        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
-        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,          KC_P7,   KC_P8,   KC_P9,   KC_PMNS,
-        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
-        KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PENT,
-        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   MO(1),   KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT
-    ),
-    [1] = LAYOUT_all(
-        RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
-        _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,          _______, _______, _______, _______,
-        BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
-        _______, _______, _______, _______, BL_DEC,  BL_TOGG, BL_INC,  _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
-        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______
-    )
-};
diff --git a/keyboards/melody96/keymaps/default_96_with60_split_num0/keymap.c b/keyboards/melody96/keymaps/default_96_with60_split_num0/keymap.c
deleted file mode 100644
index 5dc26b150d..0000000000
--- a/keyboards/melody96/keymaps/default_96_with60_split_num0/keymap.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include QMK_KEYBOARD_H
-
-enum custom_keycodes {
-    KC_P00 = SAFE_RANGE
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [0] = LAYOUT_96_with60_split_num0(
-        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
-        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,           KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
-        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
-        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,                   KC_ENT,  KC_P4,   KC_P5,   KC_P6,
-        KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,                   KC_RSFT, KC_P1,   KC_P2,   KC_P3,   KC_PENT,
-        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),            KC_APP,  KC_RCTL, KC_P0,   KC_P00,  KC_PDOT
-    ),
-    [1] = LAYOUT_96_with60_split_num0(
-        RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
-        _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______,          _______, _______, _______, _______, _______,
-        BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
-        _______,          _______, _______, BL_DEC,  BL_TOGG, BL_INC,  _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______,
-        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______, _______, _______
-    )
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-        case KC_P00:
-            if (record->event.pressed) {
-                tap_code(KC_P0);
-                tap_code(KC_P0);
-            }
-            return false;
-    }
-    return true;
-}
diff --git a/keyboards/melody96/keymaps/dvz/config.h b/keyboards/melody96/keymaps/dvz/config.h
deleted file mode 100644
index be786464bc..0000000000
--- a/keyboards/melody96/keymaps/dvz/config.h
+++ /dev/null
@@ -1,34 +0,0 @@
- /* Copyright 2021 Milan Düwel
-  *
-  * 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 <http://www.gnu.org/licenses/>.
-  */
-
-#pragma once
-
-#define COMBO_COUNT 4
-#define COMBO_TERM 100
-
-//#define UNICODE_SELECTED_MODES UC_WINC
-
-#define RGBLIGHT_LAYERS
-#define RGBLIGHT_LAYER_BLINK
-
-#undef RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_TWINKLE
-
diff --git a/keyboards/melody96/keymaps/dvz/keymap.c b/keyboards/melody96/keymaps/dvz/keymap.c
deleted file mode 100644
index cea3970e18..0000000000
--- a/keyboards/melody96/keymaps/dvz/keymap.c
+++ /dev/null
@@ -1,161 +0,0 @@
- /* Copyright 2021 Milan Düwel
-  *
-  * 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 <http://www.gnu.org/licenses/>.
-  */
-
-#include QMK_KEYBOARD_H
-
- /* This keymap is designed for use with a German keyboard layout.
-  * It is essentially the same as the default via keymap but adds combo functionality to type umlauts as well as lighting layers for various actions.
-  * Toggling the combo feature also disables KC_LGUI so both can be turned off for gaming. If you want to get rid of it without reflashing new firmware, use KC_RGUI instead.
-  * Layers 2 and 3 are currently unused but are configurable within via.
-  */
-
-enum combos {
-  UML_AE,
-  UML_OE,
-  UML_UE,
-  UML_SZ
-};
-
-const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END};
-const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END};
-const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END};
-const uint16_t PROGMEM sz_combo[] = {KC_S, KC_Y, COMBO_END};
-
-combo_t key_combos[COMBO_COUNT] = {
-  [UML_AE] = COMBO(ae_combo, KC_QUOT),
-  [UML_OE] = COMBO(oe_combo, KC_SCLN),
-  [UML_UE] = COMBO(ue_combo, KC_LBRC),
-  [UML_SZ] = COMBO(sz_combo, KC_MINS)
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-	[0] = LAYOUT(
-    KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
-    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
-    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,          KC_P7,   KC_P8,   KC_P9,   KC_PMNS,
-    KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
-    KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PENT,
-    KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   MO(1),   KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT),
-
-	[1] = LAYOUT(
-    RESET,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
-    KC_TRNS, RGB_TOG, KC_TRNS, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
-    BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
-    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CMB_TOG, BL_TOGG, BL_INC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
-    KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END,  KC_TRNS, KC_TRNS, KC_MUTE),
-
-	[2] = LAYOUT(
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
-	[3] = LAYOUT(
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-	KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-};
-
-/*  The lighting layers feature a caps indicator as well as layer blinks for mute and the function layer (blink only to allow unhindered adjustment of the RGB backlight settings).
-    Sadly these colours can not be customized within VIA.
-*/
-
-const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
-    {0, 1, HSV_RED},
-    {15, 17, HSV_RED}
-);
-
-const rgblight_segment_t PROGMEM my_function_layer[] = RGBLIGHT_LAYER_SEGMENTS(
-    {10, 12, HSV_YELLOW}
-);
-
-const rgblight_segment_t PROGMEM my_f2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
-    {0, 17, HSV_CYAN}
-);
-
-const rgblight_segment_t PROGMEM my_f3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
-    {0, 17, HSV_PURPLE}
-);
-
-const rgblight_segment_t PROGMEM my_flash_layer[] = RGBLIGHT_LAYER_SEGMENTS(
-    {0, 17, HSV_RED}
-);
-
-// Now define the array of layers. Later layers take precedence
-const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
-    my_capslock_layer,
-    my_function_layer,    // Overrides caps lock layer
-    my_f2_layer,
-    my_f3_layer,
-    my_flash_layer
-);
-
-void keyboard_post_init_user(void) {
-    // Enable the LED layers
-    rgblight_layers = my_rgb_layers;
-};
-
-bool led_update_user(led_t led_state) {
-    rgblight_set_layer_state(0, led_state.caps_lock);
-    return true;
-};
-
-layer_state_t layer_state_set_user(layer_state_t state) {
-    //rgblight_set_layer_state(1, layer_state_cmp(state, 1));
-    rgblight_set_layer_state(2, layer_state_cmp(state, 2));
-    rgblight_set_layer_state(3, layer_state_cmp(state, 3));
-    return state;
-};
-
-// Note we user post_process_record_user because we want the state
-// after the flag has been flipped...
-void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-        case KC_CAPS:
-        case KC_MUTE:
-        case CMB_TOG:
-            if (record->event.pressed) {
-                rgblight_blink_layer(4, 250);
-            }
-            break;
-        case MO(1):
-            if (record->event.pressed) {
-                rgblight_blink_layer(1, 250);
-            }
-            break;
-    }
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-        case KC_LGUI:   //use combo toggle to disable the win key while gaming
-            if (record->event.pressed) {
-                if (is_combo_enabled()==false) {
-                    return false;
-                }
-            }
-            return true; // Let QMK send the enter press/release events
-        default:
-            return true; // Process all other keycodes normally
-  }
-};
diff --git a/keyboards/melody96/keymaps/dvz/readme.md b/keyboards/melody96/keymaps/dvz/readme.md
deleted file mode 100644
index d82055244e..0000000000
--- a/keyboards/melody96/keymaps/dvz/readme.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# DvZ's VIA compatible keymap with rolling umlauts for german typists
-
-Added by: [devilzmods](https://github.com/devilzmods)
diff --git a/keyboards/melody96/keymaps/dvz/rules.mk b/keyboards/melody96/keymaps/dvz/rules.mk
deleted file mode 100644
index a1e85f13f4..0000000000
--- a/keyboards/melody96/keymaps/dvz/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-VIA_ENABLE = yes
-LTO_ENABLE = yes # reduce firmware size
-COMBO_ENABLE = yes
-#UNICODE_ENABLE = yes
-BOOTLOADER = caterina
diff --git a/keyboards/melody96/keymaps/konstantin/config.h b/keyboards/melody96/keymaps/konstantin/config.h
deleted file mode 100644
index 4b511eb848..0000000000
--- a/keyboards/melody96/keymaps/konstantin/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-#define LAYER_FN
diff --git a/keyboards/melody96/keymaps/konstantin/keymap.c b/keyboards/melody96/keymaps/konstantin/keymap.c
deleted file mode 100644
index 1ee7ca1e77..0000000000
--- a/keyboards/melody96/keymaps/konstantin/keymap.c
+++ /dev/null
@@ -1,77 +0,0 @@
-#include QMK_KEYBOARD_H
-#include "konstantin.h"
-
-static const HSV *colors[] = { &godspeed_blue, &godspeed_yellow };
-static const size_t cnum = sizeof colors / sizeof *colors;
-static size_t cidx = 0;
-
-enum keycodes_keymap {
-    RGB_SET = RANGE_KEYMAP,
-};
-
-void eeconfig_init_keymap(void) {
-    rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
-}
-
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-    case RGB_SET:
-        if (record->event.pressed) {
-            cidx = (cidx + 1) % cnum;
-            rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
-        }
-        break;
-    }
-
-    return true;
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Base layer
-     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
-     * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│Hom│End│PgU│PgD│
-     * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
-     * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Del│NLk│P/ │P* │P- │
-     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
-     * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │P7 │P8 │P9 │   │
-     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤P+ │
-     * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter  │P4 │P5 │P6 │   │
-     * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
-     * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSfRCt│ ↑ │P1 │P2 │P3 │   │
-     * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┼───┼───┤PEn│
-     * │LCtl│LGui│LAlt│         Space          │RAlGu│FnFLk│ ← │ ↓ │ → │P0 │P. │   │
-     * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┴───┴───┴───┘
-     */
-    [L_BASE] = LAYOUT(
-        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_INS,  KC_HOME, KC_END,  KC_PGUP, KC_PGDN,
-        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_DEL,  KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
-        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSPC,          KC_P7,   KC_P8,   KC_P9,   XXXXXXX,
-        FN_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
-        KC_LSFT, RAL_RGU, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, RSF_RCT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   XXXXXXX,
-        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             RAL_RGU, XXXXXXX, FN_FNLK, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT
-    ),
-
-    /* Fn layer
-     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
-     * │   │   │   │   │   │   │   │   │   │   │   │   │   │Sys│SLk│Pau│Brk│Top│Btm│
-     * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
-     * │   │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│   │   │RTg│ ÷ │ × │ − │
-     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
-     * │ M4  │M2 │M↑ │M1 │M3 │M5 │   │UCM│   │Stp│Ply│Prv│Nxt│Clear│RH+│RS+│RV+│   │
-     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤RSt│
-     * │      │M← │M↓ │M→ │MW↑│   │   │   │   │   │   │   │        │RH-│RS-│RV-│   │
-     * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
-     * │    │   │MA0│MA2│MW←│MW→│   │   │App│Vo-│Vo+│Mut│      │PgU│RMR│RMS│RMB│   │
-     * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┤RMP│
-     * │    │DtPR│DtNA│          MW↓           │   │   │   │Hom│PgD│End│RM-│RM+│   │
-     * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
-     */
-    [L_FN] = LAYOUT(
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SYSRQ,   KC_SLCK, KC_PAUS, BREAK,   TOP,     BOTTOM,
-        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, RGB_TOG, DIVIDE,  TIMES,   MINUS,
-        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD,  _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
-        _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______,                   RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET,
-        _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP,  KC_VOLD, KC_VOLU, KC_MUTE, _______,          KC_PGUP, RGB_M_R, RGB_M_SN,RGB_M_B, XXXXXXX,
-        _______, DST_P_R, DST_N_A,                            KC_WH_D,                            _______, XXXXXXX, _______, KC_HOME, KC_PGDN, KC_END,  RGB_RMOD,RGB_MOD, RGB_M_P
-    ),
-};
diff --git a/keyboards/melody96/keymaps/konstantin/rules.mk b/keyboards/melody96/keymaps/konstantin/rules.mk
deleted file mode 100644
index b315c8e6b9..0000000000
--- a/keyboards/melody96/keymaps/konstantin/rules.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generic features
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-COMMAND_ENABLE     = yes
-CONSOLE_ENABLE     = yes
-EXTRAKEY_ENABLE    = yes
-MOUSEKEY_ENABLE    = yes
-NKRO_ENABLE        = yes
-TAP_DANCE_ENABLE   = yes
-UNICODEMAP_ENABLE  = yes
-
-# Keyboard-specific features
-BACKLIGHT_ENABLE   = no
-RGBLIGHT_ENABLE    = yes
-VIA_ENABLE         = yes
-
-# Firmware size reduction
-GRAVE_ESC_ENABLE   = no
-MAGIC_ENABLE       = no
-SPACE_CADET_ENABLE = no
diff --git a/keyboards/melody96/keymaps/via/keymap.c b/keyboards/melody96/keymaps/via/keymap.c
deleted file mode 100644
index c02fa785a8..0000000000
--- a/keyboards/melody96/keymaps/via/keymap.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [0] = LAYOUT_all(
-        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
-        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
-        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,          KC_P7,   KC_P8,   KC_P9,   KC_PMNS,
-        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
-        KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PENT,
-        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   MO(1),   KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT
-    ),
-    [1] = LAYOUT_all(
-        RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
-        _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,          _______, _______, _______, _______,
-        BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
-        _______, _______, _______, _______, BL_DEC,  BL_TOGG, BL_INC,  _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
-        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______
-    ),
-    [2] = LAYOUT_all(
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
-        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______
-    ),
-    [3] = LAYOUT_all(
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
-        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
-        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______
-    )
-};
diff --git a/keyboards/melody96/keymaps/via/rules.mk b/keyboards/melody96/keymaps/via/rules.mk
deleted file mode 100644
index 36b7ba9cbc..0000000000
--- a/keyboards/melody96/keymaps/via/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-VIA_ENABLE = yes
-LTO_ENABLE = yes
diff --git a/keyboards/melody96/keymaps/zunger/config.h b/keyboards/melody96/keymaps/zunger/config.h
deleted file mode 100644
index cc06440e0d..0000000000
--- a/keyboards/melody96/keymaps/zunger/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// Enable cmd-option-escape on mac.
-#define GRAVE_ESC_ALT_OVERRIDE
-
-// place overrides here
diff --git a/keyboards/melody96/keymaps/zunger/keymap.c b/keyboards/melody96/keymaps/zunger/keymap.c
deleted file mode 100644
index d0d2698b7a..0000000000
--- a/keyboards/melody96/keymaps/zunger/keymap.c
+++ /dev/null
@@ -1,489 +0,0 @@
-/* Copyright 2019 Yonatan Zunger
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-#include <assert.h>
-
-// This keymap is designed to make it easy to type in a wide variety of languages, as well as
-// generate mathematical symbols (à la Space Cadet).
-//
-// LAYER MAGIC (aka, typing in many alphabets)
-//   This keyboard has three "base" layers: QWERTY, GREEK, and CADET. The GREEK and CADET layers
-// are actually full of Unicode points, and so which point they generate depends on things like
-// whether the shift key is down. To handle this, each of those layers is actually *two* layers, one
-// with and one without shift. In our main loop, we manage modifier state detection, as well as
-// layer switch detection, and pick the right layer on the fly.
-//   Layers are selected with a combination of three keys. The "Greek" and "Cadet" keys act like
-// modifiers: When held down, they transiently select the indicated base layer. The "Layer Lock" key
-// locks the value of the base layer at whatever is currently held; so e.g., if you hold Greek +
-// Layer Lock, you'll stay in Greek mode until you hit Layer Lock again without any of the mods
-// held.
-//   TODO: This system of layer selection is nice for math, but it's not very nice for actually
-// typing in multiple languages. It seems like a better plan will be to reserve one key for each
-// base layer -- maybe fn + F(n) -- which can either be held as a modifier or tapped to switch
-// layers. That will open up adding some more languages, like Yiddish, but to do this effectively
-// we'll need to find a good UI with which to show the currently selected layer. Need to check what
-// the melody96 has in the way of outputs (LEDs, sound, etc).
-//
-// ACCENT MAGIC (aka, typing conveniently in Romance languages)
-//   We want to support easy typing of diacritical marks. We can't rely on the host OS for this,
-// because (e.g.) on MacOS, to make any of the other stuff work, we need to be using the Unicode
-// input method at the OS level, which breaks all the normal accent stuff on that end. So we do it
-// ourselves. Accents can actually be invoked in two different ways: one fast and very compatible,
-// one very versatile but with occasional compatibility problems.
-//
-//   THE MAIN WAY: You can hit one of the "accent request" key patterns immediately *before* typing
-//   a letter to be accented. It will emit the corresponding accented Unicode. For example, you can
-//   hit fn-e to request an acute accent, followed by i, and it will output í, U+00ED LATIN SMALL
-//   LETTER I WITH ACUTE. These "combined characters" are in Unicode normal form C (NFKC), which is
-//   important because many European websites and apps, in particular, tend to behave very badly
-//   (misunderstanding and/or crashing) when presented with characters in other forms! The catch is
-//   that this only works for the various combinations of letters and accents found in the Latin-1
-//   supplement block of Unicode -- basically, things you need for Western European languages.
-//
-//   (NB: If you make an accent request followed by a letter which can't take the corresponding
-//   accent, it will output the uncombined form of the accent followed by whatever you typed; so
-//   e.g., if you hit fn-e followed by f, it will output ´f, U+00B4 ACUTE ACCENT followed by an
-//   ordinary f. This is very similar to the default behavior of MacOS.)
-//
-//   THE FLEXIBLE WAY: If you hit the accent request with a shift -- e.g., fn-shift-e -- it will
-//   instead immediately output the corresponding *combining* Unicode accent mark, which will modify
-//   the *previous* character you typed. For example, if you type i followed by fn-shift-e, it will
-//   generate í. But don't be fooled by visual similarity: unlike the previous example, this one is
-//   an ordinary i followed by U+0301 COMBINING ACUTE ACCENT. It's actually *two symbols*, and this
-//   is Unicode normal form D (NFKD). Unlike NFKC, there are NFKD representations of far more
-//   combinations of letters and accents, and it's easy to add more of these if you need. (The NFKC
-//   representation of such combinations is identical to their NFKD representation)
-//
-//   Programs that try to compare Unicode strings *should* first normalize them by converting them
-//   all into one normal form or another, and there are functions in every programming language to
-//   do this -- e.g., JavaScript's string.normalize() -- but lots of programmers fail to understand
-//   this, and so write code that massively freaks out when it encounters the wrong form.
-//
-// The current accent request codes are modeled on the ones in MacOS.
-//
-//    fn+`    Grave accent (`)
-//    fn+e    Acute accent (´)
-//    fn+i    Circumflex (^)
-//    fn+u    Diaresis / umlaut / trema (¨)
-//    fn+c    Cedilla (¸)
-//    fn+n    Tilde (˜)
-//
-// Together, these functions make for a nice "polyglot" keyboard: one that can easily type in a wide
-// variety of languages, which is very useful for people who, well, need to type in a bunch of
-// languages.
-//
-// The major TODOs are:
-//   - Update the layer selection logic (and add visible layer cues);
-//   - Factor the code below so that the data layers are more clearly separated from the code logic,
-//     so that other users of this keymap can easily add whichever alphabets they need without
-//     having to deeply understand the implementation.
-
-
-enum custom_keycodes {
-  // We provide special layer management keys:
-  //    GREEK triggers the Greek (aka "Front") layer, or the SHIFTGREEK layer when shift is held.
-  //          (Because we use Unicode, we need to implement shift-handling at the firmware level,
-  //          rather than the OS level like we do in the QWERTY layer)
-  //    CADET or GREEK+ALT triggers the Cadet (aka "Top") layer, or the SHIFTCADET layer when
-  //          shift is held.
-  //    LAYER_LOCK locks the "base" layer (i.e., QWERTY, GREEK, or CADET) to the value which is
-  //          pressed at the moment that it is being released. When a layer lock is set, the
-  //          analogous layer modifier key is reversed; e.g., if you lock the GREEK layer, then the
-  //          GREEK button bounces you back to QWERTY.
-  //
-  // We also parse the shift, alt, and caps lock keys to provide management of those which is
-  // compatible with these various layers.
-  KC_GREEK = SAFE_RANGE,
-  KC_CADET,
-  KC_LAYER_LOCK,
-
-  // These are the keycodes generated by the various "accent request" keystrokes.
-  KC_ACCENT_START,
-  KC_CGRV = KC_ACCENT_START,  // Grave accent
-  KC_CAGU,  // Acute accent
-  KC_CDIA,  // Diaresis / umlaut / trema
-  KC_CCIR,  // Circumflex
-  KC_CCED,  // Cedilla
-  KC_CTIL,  // Tilde
-  KC_ACCENT_END,
-};
-
-enum layers_keymap {
-  _QWERTY = 0,
-  _FUNCTION,
-
-  _GREEK,
-  _SHIFTGREEK,
-  _CADET,
-  _SHIFTCADET,
-};
-
-// This is so that H(xxxx) has the same width as _______, which makes the grids more legible.
-#define H(x) UC(0x##x)
-#define MO_FN MO(_FUNCTION)
-#define KC_LLCK KC_LAYER_LOCK
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  // NB: Using GESC for escape in the QWERTY layer as a temporary hack because I messed up the
-  // switch on the KC_GRV key; change back to KC_ESC once this is fixed.
-	[_QWERTY] = LAYOUT_hotswap(
-    KC_GESC, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_MPLY, KC_BRK,
-    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,           KC_BSPC, KC_LLCK, KC_PSLS, KC_PAST, KC_PMNS,
-    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,
-    KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,                   KC_ENT,  KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
-    KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,
-    KC_LCTL, KC_LALT, KC_LGUI,                            KC_SPC,                             MO_FN,   KC_GREEK,KC_CADET,KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT),
-  /* The Greek layers. Shown here are the QWERTY layer (for visual reference) and the two Greek
-   * layers.
-   * ,----------------------------------------------------------------------------
-   * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|HOM|END|PGU|PGD|MUT|BRK|  QWERTY
-   * | ` | ₁ | ₂ | ₃ | ₄ | ₅ | ₆ | ₇ | ₈ | ₉ | ₀ | ₋ | ₊ | ₍ | ₎ |   |   |   |   |  SHIFTGREEK
-   * | ` | ¹ | ² | ³ | ⁴ | ⁵ | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | ⁻ | ⁺ | ⁽ | ⁾ |   |   |   |   |  GREEK
-   * |---------------------------------------------------------------------------|
-   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |LCK| / | * | - |
-   * | ` | ¿ |   | € |   |   |   |   |   |   |   |   | ≁ | BKSPC |LCK|   | ⊗ |   |
-   * |   |   |   |   |   |   |   |   |   |   |   | ∝ | ∼ | BKSPC |LCK| ⊘ | ⊙ | ⊖ |
-   * |---------------------------------------------------------------------------|
-   * | TAB  | Q | W | E | R | T | Y | U | I | O | P | [ | ] |  \ | 7 | 8 | 9 |   |
-   * |      | Θ | Ω | Ε | Ρ | Τ | Ψ | Υ | Ι | Ο | Π |   |   |    |   |   |   |   |
-   * |      | θ | ω | ε | ρ | τ | ψ | υ | ι | ο | π |   |   |    |   |   |   |   |
-   * |-----------------------------------------------------------------------| + |
-   * | CTRL   | A | S | D | F | G | H | J | K | L | ; | ' |  RET | 4 | 5 | 6 | ⊕ |
-   * | CTRL   | Α | Σ | Δ | Φ | Γ | Η |   | Κ | Λ | … | ∴ |  RET |   |   |   |   |
-   * | CTRL   | α | σ | δ | φ | γ | η | ϑ | κ | λ | ⋯ | ⋅ |  RET |   |   |   |   |
-   * |-----------------------------------------------------------------------|---|
-   * | SHIFT   | Z | X | C | V | B | N | M | , | . | / |SHFT | ↑ | 1 | 2 | 3 |   |
-   * | SHIFT   | Ζ | Ξ | Χ | ✔ | Β | Ν | Μ | ≲ | ≳ |   |SHFT |   |   |   |   |   |
-   * | SHIFT   | ζ | ξ | χ | ς | β | ν | μ | ≪ | ≫ | ∫ |SHFT |   |   |   |   |   |
-   * |-----------------------------------------------------------------------|ENT|
-   * | CTL | ALT| CMD|         SPACE         | α | β | γ | ← | ↓ | → | 0 | . |   |
-   * | CTL | ALT| CMD|         SPACE         | α | β | γ |   |   |   |   |   |   |
-   * | CTL | ALT| CMD|         SPACE         | α | β | γ |   |   |   |   |   |   |
-   * `---------------------------------------------------------------------------'
-   */
-	[_GREEK] = LAYOUT_hotswap(
-    KC_GRV,  H(00b9), H(00b2), H(00b3), H(2074), H(2075), H(2076), H(2077), H(2078), H(2079), H(2070), H(207b), H(207a), H(207d), H(207e), XXXXXXX, XXXXXXX, XXXXXXX, _______,
-    KC_GRV,  _______, _______, _______, _______, _______, _______, _______, H(00b0), _______, _______, H(221d), H(223c),          _______, _______, H(2298), H(2299), H(2296),
-    _______, H(03b8), H(03c9), H(03b5), H(03c1), H(03c4), H(03c8), H(03c5), H(03b9), H(03bf), H(03c0), KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,
-    _______, H(03b1), H(03c3), H(03b4), H(03c6), H(03b3), H(03b7), H(03d1), H(03ba), H(03bb), H(22ef), H(22c5),                   _______, KC_P4,   KC_P5,   KC_P6,   H(2295),
-    _______,          H(03b6), H(03be), H(03c7), H(03c2), H(03b2), H(03bd), H(03bc), H(226a), H(226b), H(222b), _______,          _______, KC_P1,   KC_P2,   KC_P3,
-    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, KC_P0,   KC_PDOT, KC_PENT),
-	[_SHIFTGREEK] = LAYOUT_hotswap(
-    KC_GRV,  H(2081), H(2082), H(2083), H(2084), H(2085), H(2086), H(2087), H(2088), H(2089), H(2080), H(208b), H(208a), H(208d), H(208e), XXXXXXX, XXXXXXX, XXXXXXX, _______,
-    KC_GRV,  H(00bf), _______, H(20ac), _______, _______, _______, _______, _______, _______, _______, XXXXXXX, H(2241),          _______, _______, XXXXXXX, H(2297), XXXXXXX,
-    _______, H(0398), H(03a9), H(0395), H(03a1), H(03a4), H(03a8), H(03a5), H(0399), H(039f), H(03a0), KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,
-    _______, H(0391), H(03a3), H(0394), H(03a6), H(0393), H(0397), XXXXXXX, H(039a), H(039b), H(2026), H(2234),                   _______, KC_P4,   KC_P5,   KC_P6,   H(2295),
-    _______,          H(0396), H(039e), H(03a7), H(2714), H(0392), H(039d), H(039c), H(2272), H(2273), XXXXXXX, _______,          _______, KC_P1,   KC_P2,   KC_P3,
-    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, KC_P0,   KC_PDOT, KC_PENT),
-  /* The Cadet layers. Again, we show the QWERTY layer and the two cadet layers.
-   * ,----------------------------------------------------------------------------
-   * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|HOM|END|PGU|PGD|MUT|BRK|  QWERTY
-   * | ∅ |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |  SHIFTCADET
-   * | ¬ |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |  CADET
-   * |---------------------------------------------------------------------------|
-   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |LCK| / | * | - |
-   * | ` | ¡ |   | £ |   |   |   |   | ° |   |   | * | ∓ | BKSPC |LCK|   |   |   |
-   * |   |   |   |   |   |   |   |   |   |   |   |   | ± | BKSPC |LCK|   | × |   |
-   * |---------------------------------------------------------------------------|
-   * | TAB  | Q | W | E | R | T | Y | U | I | O | P | [ | ] |  \ | 7 | 8 | 9 |   |
-   * |      | ℚ |   |   | ℝ | ⊆ | ⊇ |   | ℵ | ∄ |   | ∉ |   |    | * | * | * |   |
-   * |      | ∧ | ∨ | ∩ | ∪ | ⊂ | ⊃ | ∀ | ∞ | ∃ | ∂ | ∈ |   |    | * | * | * |   | [1]
-   * |-----------------------------------------------------------------------| + |
-   * | CTRL   | A | S | D | F | G | H | J | K | L | ; | ' |  RET | 4 | 5 | 6 | ⊕ |
-   * | CTRL   | Å |   | ∇ |   | ⇑ | ⇓ | ⇐ | ⇒ | ⇔ |   |   |  RET | * | * | * |   |
-   * | CTRL   | ⟘ | ⊤ | ⊢ | ⊣ | ↑ | ↓ | ← | → | ↔ |   |   |  RET | * | * | * |   | [1]
-   * |-----------------------------------------------------------------------|---|
-   * | SHIFT   | Z | X | C | V | B | N | M | , | . | / |SHFT | ↑ | 1 | 2 | 3 |   |
-   * | SHIFT   | ℤ | ℂ |   | ≉ | ≢ | ℕ |   |   |   |   |SHFT |   | * | * | * |   |
-   * | SHIFT   |   | ≠ |   | ≈ | ≡ | ≤ | ≥ |   |   | ÷ |SHFT |   | * | * | * |   | [1]
-   * |-----------------------------------------------------------------------|ENT|
-   * | CTL | ALT| CMD|         SPACE         | α | β | γ | ← | ↓ | → | 0 | . |   |
-   * | CTL | ALT| CMD|         SPACE         | α | β | γ |   |   |   |   |   |   |
-   * | CTL | ALT| CMD|         SPACE         | α | β | γ |   |   |   |   |   |   |
-   * `---------------------------------------------------------------------------'
-   * [1] CADET + numpad moves the mouse. SHIFT+CADET+NUMPAD moves it more quickly. CADET+5
-   * clicks the mouse, and SHIFT+CADET+FIVE right-clicks.
-   */
-	[_CADET] = LAYOUT_hotswap(
-    H(00AC), KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
-    KC_GRV,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, H(00b1),          _______, _______, XXXXXXX, H(00d7), XXXXXXX,
-    _______, H(2227), H(2228), H(2229), H(222a), H(2282), H(2283), H(2200), H(221e), H(2203), H(2202), H(2208), XXXXXXX,          XXXXXXX, KC_P7,   KC_P8,   KC_P9,
-    _______, H(22a5), H(22a4), H(22a2), H(22a3), H(2191), H(2193), H(2190), H(2192), H(2194), XXXXXXX, XXXXXXX,                   _______, KC_P4,   KC_P5,   KC_P6,   XXXXXXX,
-    _______,          XXXXXXX, H(2260), XXXXXXX, H(2248), H(2261), H(2264), H(2265), XXXXXXX, XXXXXXX, H(00f7), _______,          _______, KC_P1,   KC_P2,   KC_P3,
-    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, KC_P0,   KC_PDOT, KC_PENT),
-	[_SHIFTCADET] = LAYOUT_hotswap(
-    H(2205), KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
-    KC_GRV,  H(00a1), XXXXXXX, H(00a3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, H(2213),          _______, _______, XXXXXXX, XXXXXXX, XXXXXXX,
-    _______, H(211a), XXXXXXX, XXXXXXX, H(211d), H(2286), H(2287), XXXXXXX, H(2135), H(2204), XXXXXXX, H(2209), XXXXXXX,          XXXXXXX, KC_P7,   KC_P8,   KC_P9,
-    _______, H(212b), XXXXXXX, H(2207), XXXXXXX, H(21d1), H(21d3), H(21d0), H(21d2), H(21d4), XXXXXXX, XXXXXXX,                   _______, KC_P4,   KC_P5,   KC_P6,   XXXXXXX,
-    _______,          H(2124), H(2102), XXXXXXX, H(2249), H(2262), H(2115), XXXXXXX, XXXXXXX, XXXXXXX, H(00f7), _______,          _______, KC_P1,   KC_P2,   KC_P3,
-    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, KC_P0,   KC_PDOT, KC_PENT),
-
-  // Function layer is mostly for keyboard meta-control operations, but also contains the combining
-  // accent marks. These are deliberately placed to match where the analogous controls go on Mac OS.
-	[_FUNCTION] = LAYOUT_hotswap(
-    KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RESET,
-    KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
-    _______, _______, _______, KC_CAGU, _______, _______, _______, KC_CDIA, KC_CCIR, _______, _______, _______, _______,          _______, _______, _______, _______,
-    _______, _______, _______, UC_M_OS, UC_M_LN, UC_M_WI, UC_M_BS, UC_M_WC, _______, _______, _______, _______,                   _______, _______, _______, _______, _______,
-    _______,          _______, _______, KC_CCED, _______, _______, KC_CTIL, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
-    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______),
-};
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Accent implementation
-//
-// In the body of process_record_user, we store an "accent_request", which is the accent keycode if
-// one was just selected, or zero otherwise. When the *next* key is hit, we look up whether the
-// accent request plus that next keycode (plus the state of the shift key) together amount to an
-// interesting combined (NFKC) character, and if so, emit it; otherwise, we emit the accent as a
-// separate character and then process the next key normally. The resulting UI behavior is similar
-// to that of the combining accent keys in MacOS.
-//
-// We store two arrays, depending on whether shift is or isn't held. Each is two-dimensional, with
-// its outer key by the next keycode struck, and the inner key by the accent requested. The outer
-// array has KC_Z + 1 as its upper bound, so that we can save memory by only coding alphabetic keys.
-// The contents are either Unicode code points, or zero to indicate that we don't have a point for
-// this combination.
-
-#define KC_NUM_ACCENTS (KC_ACCENT_END - KC_ACCENT_START)
-#define KC_NUM_SLOTS (KC_Z + 1)
-
-const uint16_t PROGMEM unshifted_accents[KC_NUM_SLOTS][KC_NUM_ACCENTS] = {
-  //         KC_CGRV, KC_CAGU, KC_CDIA, KC_CCIR, KC_CCED, KC_CTIL
-  [KC_A] = { 0x00e0,  0x00e1,  0x00e4,  0x00e2,  0,       0x00e3 },
-  [KC_E] = { 0x00e8,  0x00e9,  0x00eb,  0x00ea,  0,       0      },
-  [KC_I] = { 0x00ec,  0x00ed,  0x00ef,  0x00ee,  0,       0      },
-  [KC_O] = { 0x00f2,  0x00f3,  0x00f6,  0x00f4,  0,       0x00f5 },
-  [KC_U] = { 0x00f9,  0x00fa,  0x00fc,  0x00fb,  0,       0      },
-  [KC_Y] = { 0,       0,       0x00ff,  0,       0,       0      },
-  [KC_N] = { 0,       0,       0,       0,       0,       0x00f1 },
-  [KC_C] = { 0,       0,       0,       0,       0x00e7,  0      },
-};
-
-const uint16_t PROGMEM shifted_accents[KC_NUM_SLOTS][KC_NUM_ACCENTS] = {
-  //         KC_CGRV, KC_CAGU, KC_CDIA, KC_CCIR, KC_CCED, KC_CTIL
-  [KC_A] = { 0x00c0,  0x00c1,  0x00c4,  0x00c2,  0,       0x00c3 },
-  [KC_E] = { 0x00c8,  0x00c9,  0x00cb,  0x00ca,  0,       0      },
-  [KC_I] = { 0x00cc,  0x00cd,  0x00cf,  0x00ce,  0,       0      },
-  [KC_O] = { 0x00d2,  0x00d3,  0x00d6,  0x00d4,  0,       0x00d5 },
-  [KC_U] = { 0x00d9,  0x00da,  0x00dc,  0x00db,  0,       0      },
-  [KC_Y] = { 0,       0,       0x00df,  0,       0,       0      },
-  [KC_N] = { 0,       0,       0,       0,       0,       0x00d1 },
-  [KC_C] = { 0,       0,       0,       0,       0x00c7,  0      },
-};
-
-// The uncombined and combined forms of the accents, for when we want to emit them as single
-// characters.
-const uint16_t PROGMEM uncombined_accents[KC_NUM_ACCENTS] = {
-  [KC_CGRV - KC_ACCENT_START] = 0x0060,
-  [KC_CAGU - KC_ACCENT_START] = 0x00b4,
-  [KC_CDIA - KC_ACCENT_START] = 0x00a8,
-  [KC_CCIR - KC_ACCENT_START] = 0x005e,
-  [KC_CCED - KC_ACCENT_START] = 0x00b8,
-  [KC_CTIL - KC_ACCENT_START] = 0x02dc,
-};
-
-const uint16_t PROGMEM combined_accents[KC_NUM_ACCENTS] = {
-  [KC_CGRV - KC_ACCENT_START] = 0x0300,
-  [KC_CAGU - KC_ACCENT_START] = 0x0301,
-  [KC_CDIA - KC_ACCENT_START] = 0x0308,
-  [KC_CCIR - KC_ACCENT_START] = 0x0302,
-  [KC_CCED - KC_ACCENT_START] = 0x0327,
-  [KC_CTIL - KC_ACCENT_START] = 0x0303,
-};
-
-// This function manages keypresses that happen after an accent has been selected by an earlier
-// keypress.
-// Args:
-//   accent_key: The accent key which was earlier selected. This must be in the range
-//     [KC_ACCENT_START, KC_ACCENT_END).
-//   keycode: The keycode which was just pressed.
-//   is_shifted: The current shift state (as set by a combination of shift and caps lock)
-//   force_no_accent: If true, we're in a situation where we want to force there to be no
-//     accent combination -- if e.g. we're in a non-QWERTY layer, or if other modifier keys
-//     are held.
-//
-// Returns true if the keycode has been completely handled by this function (and so should not be
-// processed further by process_record_user) or false otherwise.
-bool process_key_after_accent(
-    uint16_t accent_key,
-    uint16_t keycode,
-    bool is_shifted,
-    bool force_no_accent
-) {
-  assert(accent_key >= KC_ACCENT_START);
-  assert(accent_key < KC_ACCENT_END);
-  const int accent_index = accent_key - KC_ACCENT_START;
-
-  // If the keycode is outside A..Z, or force_no_accent is set, we know we shouldn't even bother
-  // with a table lookup.
-  if (keycode <= KC_Z && !force_no_accent) {
-    // Pick the correct array. Because this is progmem, we're going to need to do the
-    // two-dimensional array indexing by hand, and so we just cast it to a single-dimensional array.
-    const uint16_t *points = (const uint16_t*)(is_shifted ? shifted_accents : unshifted_accents);
-    const uint16_t code_point = pgm_read_word_near(points + KC_NUM_ACCENTS * keycode + accent_index);
-    if (code_point) {
-      register_unicode(code_point);
-      return true;
-    }
-  }
-
-  // If we get here, there was no accent match. Emit the accent as its own character, and then let
-  // the caller figure out what to do next.
-  register_unicode(pgm_read_word_near(uncombined_accents + accent_index));
-  return false;
-}
-
-// Layer bitfields.
-#define GREEK_LAYER (1UL << _GREEK)
-#define SHIFTGREEK_LAYER (1UL << _SHIFTGREEK)
-#define CADET_LAYER (1UL << _CADET)
-#define SHIFTCADET_LAYER (1UL << _SHIFTCADET)
-// The layers we don't touch.
-#define LAYER_MASK ~(GREEK_LAYER|SHIFTGREEK_LAYER|CADET_LAYER|SHIFTCADET_LAYER)
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  // We track these persistent globals and manage them on our own, rather than trying to rely on
-  // get_mods or the like, because this function is called *before* that's updated!
-  static bool shift_held = false;
-  static bool alt_held = false;
-  static bool ctrl_held = false;
-  static bool super_held = false;
-  static bool greek_held = false;
-  static bool cadet_held = false;
-
-  // These are where we remember the values of lock states.
-  static bool shift_lock = false;
-  static int layer_lock = _QWERTY;
-
-  // The accent request, or zero if there isn't one.
-  static uint16_t accent_request = 0;
-
-  // If this is set to true, don't trigger any handling of pending accent requests. That's what we
-  // want to do if e.g. the user just hit the shift key or something.
-  bool ignore_accent_change = !record->event.pressed;
-
-  // Step 1: Process any modifier key state changes, so we can maintain that state.
-  if (keycode == KC_LSHIFT || keycode == KC_RSHIFT) {
-    shift_held = record->event.pressed;
-    ignore_accent_change = true;
-  } else if (keycode == KC_LALT || keycode == KC_RALT) {
-    alt_held = record->event.pressed;
-    ignore_accent_change = true;
-  } else if (keycode == KC_LCTRL || keycode == KC_RCTRL) {
-    ctrl_held = record->event.pressed;
-    ignore_accent_change = true;
-  } else if (keycode == KC_LGUI || keycode == KC_RGUI) {
-    super_held = record->event.pressed;
-    ignore_accent_change = true;
-  } else if (keycode == KC_GREEK) {
-    greek_held = record->event.pressed;
-    ignore_accent_change = true;
-  } else if (keycode == KC_CADET) {
-    cadet_held = record->event.pressed;
-    ignore_accent_change = true;
-  }
-
-  // Step 2: Figure out which layer we're supposed to be in, by transforming all the prior stuff
-  // into layer requests.
-  const bool greek_request = (greek_held && !alt_held);
-  const bool cadet_request = (cadet_held || (greek_held && alt_held));
-
-  // Now, handle the lock keys. We store next_layer_lock in a local variable so that we can
-  // determine the layer to pick right now before we update layer_lock.
-  int next_layer_lock = layer_lock;
-  if (keycode == KC_CAPS) {
-    // If we're in QWERTY mode, caps lock is already going to be managed by the host OS, but by
-    // tracking it ourselves we can also usefully apply it to the GREEK and CADET layers.
-    if (record->event.pressed) {
-      shift_lock = !shift_lock;
-    }
-  } else if (keycode == KC_LAYER_LOCK) {
-    if (record->event.pressed) {
-      if (cadet_request) {
-        next_layer_lock = _CADET;
-      } else if (greek_request) {
-        next_layer_lock = _GREEK;
-      } else {
-        next_layer_lock = _QWERTY;
-      }
-    }
-  }
-
-  // OK! Now we know which buttons are being held, and the current and upcoming states of the locks.
-  // We can compute our new base layer. Remember that the CADET and GREEK keys act as their own
-  // antonyms if they match the layer lock -- e.g., if you have CADET locked, then CADET+X generates
-  // QWERTY-X.
-  int base_layer;
-  if (cadet_request) {
-    base_layer = (layer_lock == _CADET ? _QWERTY : _CADET);
-  } else if (greek_request) {
-    base_layer = (layer_lock == _GREEK ? _QWERTY : _GREEK);
-  } else {
-    base_layer = layer_lock;
-  }
-
-  const bool shifted = (shift_held != shift_lock);
-  int actual_layer;
-  if (base_layer == _CADET) {
-    actual_layer = (shifted ? _SHIFTCADET : _CADET);
-  } else if (base_layer == _GREEK) {
-    actual_layer = (shifted ? _SHIFTGREEK : _GREEK);
-  } else {
-    // We don't do shifting for the QWERTY layer, since for that we emit USB HID codes and shifting
-    // is managed by the host OS.
-    actual_layer = _QWERTY;
-  }
-
-  // And now we can update the layer lock and the actual firmware layer selector.
-  layer_lock = next_layer_lock;
-  layer_state_t new_layer_state = (layer_state & LAYER_MASK) | (1UL << actual_layer);
-  if (new_layer_state != layer_state) {
-    layer_state_set(new_layer_state);
-  }
-
-  // Step 3: Handle accents. If there's a pending accent request, process it. If what the user just
-  // hit creates a new accent request, update the pending state for the next keypress.
-  if (!ignore_accent_change && accent_request && record->event.pressed) {
-    // Only do the accent stuff if we're in the QWERTY layer and we aren't modifying something.
-    const bool force_no_accent = (
-        actual_layer != _QWERTY ||
-        ctrl_held ||
-        super_held ||
-        alt_held
-    );
-    const uint16_t old_accent = accent_request;
-    accent_request = 0;
-    if (process_key_after_accent(old_accent, keycode, shifted, force_no_accent)) {
-      return false;
-    }
-  }
-
-  // And if a new accent request just arrived, update accent_request.
-  if (keycode >= KC_ACCENT_START && keycode < KC_ACCENT_END && record->event.pressed) {
-    if (shifted) {
-      // Shift + accent request generates the combining accent key, and leaves accent_request alone.
-      register_unicode(pgm_read_word_near(combined_accents + keycode - KC_ACCENT_START));
-      return false;
-    } else {
-      accent_request = keycode;
-    }
-  }
-
-  return true;
-}
diff --git a/keyboards/melody96/keymaps/zunger/readme.md b/keyboards/melody96/keymaps/zunger/readme.md
deleted file mode 100644
index 3eb64a2e73..0000000000
--- a/keyboards/melody96/keymaps/zunger/readme.md
+++ /dev/null
@@ -1,78 +0,0 @@
-* The "Cadet-Style" keymap for the melody96.
-* Author: Yonatan Zunger (zunger@gmail.com)
-
-This is an experimental keymap being used both for practical reasons (as my daily driver) and to
-work out the ideas of a "space-cadet-style" keyboard which can type text and mathematical symbols
-with equal ease. It's designed for anyone who frequently needs to do this outside of a LaTeX
-environment, or for anyone who loves the old "Space Cadet" keyboard! And it works at its best when
-you have actual Cadet keycaps (like SA Symbolics) installed, because those keycaps will actually
-show what you get.
-
-The core idea of this keyboard is that, in addition to a QWERTY base layer and a function layer, it
-supports two additional base layers -- the GREEK layer (the analogue of the Space Cadet "Greek," or
-"Front," keys) and the CADET layer (the analogue of the Space Cadet "Top" keys). These layers use
-Unicode to generate all of the mathematical symbols you can find on a traditional Space Cadet
-layout, plus a bunch of extras.
-
-Because Unicode can't be encoded using the traditional USB HID protocol, QMK does some clever but
-horrifying things to fool your OS. One consequence of this is that the shift key needs to be handled
-by the keyboard firmware, not the host OS. To handle this, we have two additional layers --
-SHIFTGREEK and SHIFTCADET -- and handle the flipping between all of these layers here in the
-firmware.
-
-*The simple bit: Using this layout on a Melody96*
-
-At the core of this layout are three special modifier keys and two special lock keys:
-
-* The GREEK key, to the right of the spacebar, activates the GREEK layer. GREEK+SHIFT activates
-  SHIFTGREEK. These keys generate Greek letters on the letter keys (thus the name), and a few
-  mathematical symbols on other keys. They correspond to the notations on the front of traditional
-  Space Cadet keys; if your capset doesn't include those (alas, most don't), they're the "pretty
-  obvious" mappings.
-* The CADET key, to the right of GREEK, activates the CADET layer. These are the symbols above the
-  letters on a Space Cadet layout. CADET+SHIFT activates the SHIFTCADET layer, with even more
-  symbols.
-* The FUNCTION key, to the right of CADET, activates the function layer. This is where you have a
-  reset mechanism, a selector for which Unicode input type you want, and so on.
-
-Additionally, GREEK+ALT is equivalent to CADET. This is handy for other keyboards where you don't
-have room for this many modifiers.
-
-The lock keys are:
-
-* Caps lock, if you use it, will also act as a "shift lock" for the Greek and Cadet layers. Shift
-  lock is slightly different, in that while it is engaged shift will _dis_engage it; that's actually
-  pretty useful when typing math.
-* An additional "layer lock" key, by default where "num lock" usually goes, will lock the choice of
-  base layer. To use it, hold down any invocation of the GREEK or CADET layers, or none at all, and
-  hit lock; it will then put you in that layer. The corresponding modifier key will then toggle you
-  back to the QWERTY layer. (So for example, if you hit GREEK+LAYER_LOCK and release them, you're
-  now typing in Greek; the GREEK modifier would cause you to type QWERTY momentarily. To go back to
-  ordinary QWERTY mode, you'd just hit LAYER_LOCK again with no modifiers held)
-
-To see the full layout, check out the big comment in keymap.c.
-
-*A less-simple bit: Adapting this to other keyboards*
-
-This is really a canary for generic Cadet implementations. Before this can be made generic, a few
-things will have to happen:
-
-(1) Instead of a fixed keymap, this has to be refactored into some kind of array showing the
-mappings of QWERTY-layer keys onto the appropriate code points in the GREEK and CADET layers, and
-some preprocessor magic needs to auto-transform this plus a traditional keymap for the QWERTY layer
-into keymaps for all five of the core layers. (Function layers would presumably be handled on a
-per-keyboard basis)
-
-(2) The standard mapping of those should have some #define's to control things like whether there
-are physical F-keys (you would probably want to move superscript and subscripts onto the numbers if
-there weren't, and figure out what to do with the non-numeric super/sub keys), whether you actually
-want to enable GREEK+ALT=CADET, and so on;
-
-(3) There should be support for controlling indicator LEDs based on the base layer selection,
-caps/shift lock state, and layer lock state, as well as for triggering audio on transitions;
-
-(4) All the core fancy logic in process_record_user which implements the layer handling should be
-factored out into its own function, so that keyboards can easily reuse that, too.
-
-This is a lovely TODO for future work, and could be particularly fun to go along with new releases
-of SA Symbolics and the like. Anyone interested in such things, ping me!
diff --git a/keyboards/melody96/keymaps/zunger/rules.mk b/keyboards/melody96/keymaps/zunger/rules.mk
deleted file mode 100644
index a61cfa33fa..0000000000
--- a/keyboards/melody96/keymaps/zunger/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-# You need Unicode for this map.
-UNICODE_ENABLE = yes        # Unicode
diff --git a/keyboards/melody96/melody96.c b/keyboards/melody96/melody96.c
deleted file mode 100644
index 44e813586b..0000000000
--- a/keyboards/melody96/melody96.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "melody96.h"
diff --git a/keyboards/melody96/melody96.h b/keyboards/melody96/melody96.h
deleted file mode 100644
index 3d3bc6070c..0000000000
--- a/keyboards/melody96/melody96.h
+++ /dev/null
@@ -1,233 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-#define XXX KC_NO
-
-/*
- * ┌────┬───┐                                          ┌───┬───┐
- * │10  │11 │                                          │A3 │A6 │
- * └────┴───┘                                          └───┴───┘
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
- * │50 │51 │52 │53 │54 │55 │56 │57 │58 │B8 │B7 │B5 │B4 │B3 │B6 │B2 │B1 │B0 │63 │
- * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┤
- * │40 │41 │42 │43 │44 │45 │46 │47 │48 │A8 │A7 │A5 │A4 │A6     │A2 │A1 │A0 │64 │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┼───┼───┼───┤    ┌─────┐ ┌───┐
- * │30   │31 │32 │33 │34 │35 │36 │37 │38 │98 │97 │95 │94 │93   │96 │92 │91 │80 │    │93   │ │90 │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤   │ ┌──┴┐    │ ├───┤
- * │20    │21 │22 │23 │24 │25 │26 │27 │28 │88 │87 │85 │84      │86 │82 │81 │   │ │84 │    │ │80 │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤ ├───┼────┘ └───┘
- * │10      │12 │13 │14 │15 │16 │17 │18 │78 │77 │75 │74    │73 │76 │72 │71 │60 │ │70 │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┴───┼───┤   │ ├───┤
- * │00  │01  │02  │06                      │08 │07 │05 │04 │03 │62     │61 │   │ │60 │
- * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───────┴───┴───┘ └───┘
- *                                                  ┌──────────┬───┬───┐
- *                                                  │74        │66 │62 │
- *                                                  └──────────┴───┴───┘
- * ┌────┬────┬────┬────────────────────────┬─────┬─────┬───┬───┐
- * │00  │01  │02  │06                      │08   │05   │04 │03 │
- * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┘
- * ┌────┬────┬────┬─────────────────────────────┬────┬────┬────┐
- * │00  │01  │02  │06                      │08  │07  │04  │03  │
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- * ┌─────┬─────┬───────────────────────────┬─────┬─────┬───┬───┐
- * │00   │01   │06                         │08   │05   │04 │03 │
- * └─────┴─────┴───────────────────────────┴─────┴─────┴───┴───┘
- * ┌─────┬─────┬───────────────────────────┬────┬────┬────┬────┐
- * │00   │01   │06                         │08  │07  │04  │03  │
- * └─────┴─────┴───────────────────────────┴────┴────┴────┴────┘
- * ┌─────┬─────┬───────────────────────────┬───┬───┬───┬───┬───┐
- * │00   │01   │06                         │08 │07 │05 │04 │03 │
- * └─────┴─────┴───────────────────────────┴───┴───┴───┴───┴───┘
- * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
- * │00   │01 │02   │06                         │07   │04 │03   │
- * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
- * ┌─────┬───┬─────┬───────────────────────────┬───┬───┬───┬───┐
- * │00   │01 │02   │06                         │07 │05 │04 │03 │
- * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘
- * ┌─────┬───┬─────┬───────────────────────┬─────┬─────┬───┬───┐
- * │00   │01 │02   │06                     │08   │05   │04 │03 │
- * └─────┴───┴─────┴───────────────────────┴─────┴─────┴───┴───┘
- * ┌─────┬───┬─────┬───────────────────────┬───┬───┬───┬───┬───┐
- * │00   │01 │02   │06                     │08 │07 │05 │04 │03 │
- * └─────┴───┴─────┴───────────────────────┴───┴───┴───┴───┴───┘
- * ┌─────┬───┬─────┬───────────────────────┬────┬────┬────┬────┐
- * │00   │01 │02   │06                     │08  │07  │04  │03  │
- * └─────┴───┴─────┴───────────────────────┴────┴────┴────┴────┘
- */
-
-#define LAYOUT_all( \
-    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
-    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k90, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k84, k86, k82, k81, k80, \
-    k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k70, \
-    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61, k60 \
-) { \
-    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
-    { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
-    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
-    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
-    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
-    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
-    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
-    { k70, k71, k72, k73, k74, k75, k76, k77, k78 }, \
-    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
-    { k90, k91, k92, k93, k94, k95, k96, k97, k98 }, \
-    { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
-    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
-}
-
-#define LAYOUT_96_ansi( \
-    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
-    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k80, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k84, k86, k82, k81, \
-    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
-    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61 \
-) { \
-    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
-    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
-    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
-    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
-    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
-    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
-    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
-    { XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
-    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
-    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
-    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
-    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
-}
-
-#define LAYOUT_96_ansi_splitbs( \
-    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
-    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k80, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k84, k86, k82, k81, \
-    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
-    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61 \
-) { \
-    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
-    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
-    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
-    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
-    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
-    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
-    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
-    { XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
-    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
-    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
-    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
-    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
-}
-
-#define LAYOUT_96_iso( \
-    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
-    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94,      k96, k92, k91, k80, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k93, k86, k82, k81, \
-    k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
-    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61 \
-) { \
-    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
-    { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
-    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
-    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
-    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
-    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
-    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
-    { XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
-    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
-    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
-    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
-    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
-}
-
-#define LAYOUT_96_iso_splitbs( \
-    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
-    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94,      k96, k92, k91, k80, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k93, k86, k82, k81, \
-    k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
-    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61 \
-) { \
-    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
-    { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
-    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
-    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
-    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
-    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
-    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
-    { XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
-    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
-    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
-    { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
-    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
-}
-
-#define LAYOUT_96_with60( \
-    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
-    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k93, k86, k82, k81, \
-    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75,      k74, k76, k72, k71, k60,\
-    k00, k01, k02,                k06,                k08, k07, k04, k03, k62,      k61 \
-) { \
-    { k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
-    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
-    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
-    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
-    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
-    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
-    { k60, k61, k62, k63, k64, XXX, XXX, XXX, XXX }, \
-    { XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
-    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
-    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
-    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
-    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
-}
-
-#define LAYOUT_96_with60_splitbs( \
-    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
-    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k93, k86, k82, k81, \
-    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75,      k74, k76, k72, k71, k60, \
-    k00, k01, k02,                k06,                k08, k07, k04, k03, k62,      k61 \
-) { \
-    { k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
-    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
-    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
-    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
-    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
-    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
-    { k60, k61, k62, k63, k64, XXX, XXX, XXX, XXX }, \
-    { XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
-    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
-    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
-    { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
-    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
-}
-
-#define LAYOUT_96_with60_split_num0( \
-    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
-    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80,\
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k93, k86, k82, k81, \
-    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75,      k74, k76, k72, k71, k60, \
-    k00, k01, k02,                k06,                k08, k07, k04, k03, k66, k62, k61 \
-) { \
-    { k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
-    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
-    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
-    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
-    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
-    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
-    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
-    { XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
-    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
-    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
-    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
-    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
-}
diff --git a/keyboards/melody96/readme.md b/keyboards/melody96/readme.md
deleted file mode 100644
index 16338e9ed3..0000000000
--- a/keyboards/melody96/readme.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# YMDK Melody96
-
-![melody96](https://i.imgur.com/9o0a6XFh.png)
-
-96-key Keyboard from YMDK. The PCB for this board is also commonly used in the NYM96.
-
-* Keyboard Maintainer: [superuser41](https://github.com/kaylanm)
-* Hardware Supported: melody96
-* Hardware Availability: [YMDK on Geekhack, group buy closed](https://geekhack.org/index.php?topic=93614.0),  [NYM96 on Massdrop](https://www.massdrop.com/buy/nym96-aluminum-mechanical-keyboard?mode=guest_open)
-
-Make example for this keyboard (after setting up your build environment):
-
-    make melody96:default
-
-Flashing example for this keyboard:
-
-    make melody96:default:flash
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/melody96/rules.mk b/keyboards/melody96/rules.mk
deleted file mode 100644
index b27013f863..0000000000
--- a/keyboards/melody96/rules.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes       # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-NKRO_ENABLE = yes           # Enable N-Key Rollover
-BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
-AUDIO_ENABLE = no           # Audio output
diff --git a/keyboards/ymdk/melody96/config.h b/keyboards/ymdk/melody96/config.h
new file mode 100644
index 0000000000..45e7e680c1
--- /dev/null
+++ b/keyboards/ymdk/melody96/config.h
@@ -0,0 +1,55 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0x594d // "YM"
+#define PRODUCT_ID      0x4D96 // "M" + 96
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    YMDK
+#define PRODUCT         Melody96
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 9
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+#define LED_NUM_LOCK_PIN C6
+#define LED_CAPS_LOCK_PIN C7
+#define LED_SCROLL_LOCK_PIN B5
+#define LED_PIN_ON_STATE 0
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B6
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 5
+#endif
+
+/* Set location for BootMagic key*/
+#define BOOTMAGIC_LITE_ROW 5
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define RGB_DI_PIN E2
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 18
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/ymdk/melody96/info.json b/keyboards/ymdk/melody96/info.json
new file mode 100644
index 0000000000..7db60fa7d4
--- /dev/null
+++ b/keyboards/ymdk/melody96/info.json
@@ -0,0 +1,884 @@
+{
+    "keyboard_name": "melody96",
+    "url": "",
+    "maintainer": "qmk",
+    "layout_aliases": {
+        "LAYOUT": "LAYOUT_all",
+        "LAYOUT_hotswap": "LAYOUT_96_ansi"
+    },
+    "layouts": {
+        "LAYOUT_all": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+                {"x": 6, "y": 0},
+                {"x": 7, "y": 0},
+                {"x": 8, "y": 0},
+                {"x": 9, "y": 0},
+                {"x": 10, "y": 0},
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+                {"x": 17, "y": 0},
+                {"x": 18, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+                {"x": 6, "y": 1},
+                {"x": 7, "y": 1},
+                {"x": 8, "y": 1},
+                {"x": 9, "y": 1},
+                {"x": 10, "y": 1},
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1},
+                {"x": 14, "y": 1},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+                {"x": 17, "y": 1},
+                {"x": 18, "y": 1},
+
+                {"x": 0, "y": 2, "w": 1.5},
+                {"x": 1.5, "y": 2},
+                {"x": 2.5, "y": 2},
+                {"x": 3.5, "y": 2},
+                {"x": 4.5, "y": 2},
+                {"x": 5.5, "y": 2},
+                {"x": 6.5, "y": 2},
+                {"x": 7.5, "y": 2},
+                {"x": 8.5, "y": 2},
+                {"x": 9.5, "y": 2},
+                {"x": 10.5, "y": 2},
+                {"x": 11.5, "y": 2},
+                {"x": 12.5, "y": 2},
+                {"x": 13.5, "y": 2, "w": 1.5},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+                {"x": 17, "y": 2},
+                {"x": 18, "y": 2},
+
+                {"x": 0, "y": 3, "w": 1.75},
+                {"x": 1.75, "y": 3},
+                {"x": 2.75, "y": 3},
+                {"x": 3.75, "y": 3},
+                {"x": 4.75, "y": 3},
+                {"x": 5.75, "y": 3},
+                {"x": 6.75, "y": 3},
+                {"x": 7.75, "y": 3},
+                {"x": 8.75, "y": 3},
+                {"x": 9.75, "y": 3},
+                {"x": 10.75, "y": 3},
+                {"x": 11.75, "y": 3},
+                {"x": 12.75, "y": 3, "w": 2.25},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+                {"x": 17, "y": 3},
+                {"x": 18, "y": 3},
+
+                {"x": 0, "y": 4, "w": 1.25},
+                {"x": 1.25, "y": 4},
+                {"x": 2.25, "y": 4},
+                {"x": 3.25, "y": 4},
+                {"x": 4.25, "y": 4},
+                {"x": 5.25, "y": 4},
+                {"x": 6.25, "y": 4},
+                {"x": 7.25, "y": 4},
+                {"x": 8.25, "y": 4},
+                {"x": 9.25, "y": 4},
+                {"x": 10.25, "y": 4},
+                {"x": 11.25, "y": 4},
+                {"x": 12.25, "y": 4, "w": 1.75},
+                {"x": 14, "y": 4},
+                {"x": 15, "y": 4},
+                {"x": 16, "y": 4},
+                {"x": 17, "y": 4},
+                {"x": 18, "y": 4},
+
+                {"x": 0, "y": 5, "w": 1.25},
+                {"x": 1.25, "y": 5, "w": 1.25},
+                {"x": 2.5, "y": 5, "w": 1.25},
+                {"x": 3.75, "y": 5, "w": 6.25},
+                {"x": 10, "y": 5},
+                {"x": 11, "y": 5},
+                {"x": 12, "y": 5},
+                {"x": 13, "y": 5},
+                {"x": 14, "y": 5},
+                {"x": 15, "y": 5},
+                {"x": 16, "y": 5},
+                {"x": 17, "y": 5},
+                {"x": 18, "y": 5}
+            ]
+        },
+        "LAYOUT_96_ansi": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+                {"x": 6, "y": 0},
+                {"x": 7, "y": 0},
+                {"x": 8, "y": 0},
+                {"x": 9, "y": 0},
+                {"x": 10, "y": 0},
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+                {"x": 17, "y": 0},
+                {"x": 18, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+                {"x": 6, "y": 1},
+                {"x": 7, "y": 1},
+                {"x": 8, "y": 1},
+                {"x": 9, "y": 1},
+                {"x": 10, "y": 1},
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1, "w": 2},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+                {"x": 17, "y": 1},
+                {"x": 18, "y": 1},
+
+                {"x": 0, "y": 2, "w": 1.5},
+                {"x": 1.5, "y": 2},
+                {"x": 2.5, "y": 2},
+                {"x": 3.5, "y": 2},
+                {"x": 4.5, "y": 2},
+                {"x": 5.5, "y": 2},
+                {"x": 6.5, "y": 2},
+                {"x": 7.5, "y": 2},
+                {"x": 8.5, "y": 2},
+                {"x": 9.5, "y": 2},
+                {"x": 10.5, "y": 2},
+                {"x": 11.5, "y": 2},
+                {"x": 12.5, "y": 2},
+                {"x": 13.5, "y": 2, "w": 1.5},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+                {"x": 17, "y": 2},
+                {"x": 18, "y": 2, "h": 2},
+
+                {"x": 0, "y": 3, "w": 1.75},
+                {"x": 1.75, "y": 3},
+                {"x": 2.75, "y": 3},
+                {"x": 3.75, "y": 3},
+                {"x": 4.75, "y": 3},
+                {"x": 5.75, "y": 3},
+                {"x": 6.75, "y": 3},
+                {"x": 7.75, "y": 3},
+                {"x": 8.75, "y": 3},
+                {"x": 9.75, "y": 3},
+                {"x": 10.75, "y": 3},
+                {"x": 11.75, "y": 3},
+                {"x": 12.75, "y": 3, "w": 2.25},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+                {"x": 17, "y": 3},
+
+                {"x": 0, "y": 4, "w": 2.25},
+                {"x": 2.25, "y": 4},
+                {"x": 3.25, "y": 4},
+                {"x": 4.25, "y": 4},
+                {"x": 5.25, "y": 4},
+                {"x": 6.25, "y": 4},
+                {"x": 7.25, "y": 4},
+                {"x": 8.25, "y": 4},
+                {"x": 9.25, "y": 4},
+                {"x": 10.25, "y": 4},
+                {"x": 11.25, "y": 4},
+                {"x": 12.25, "y": 4, "w": 1.75},
+                {"x": 14, "y": 4},
+                {"x": 15, "y": 4},
+                {"x": 16, "y": 4},
+                {"x": 17, "y": 4},
+                {"x": 18, "y": 4, "h": 2},
+
+                {"x": 0, "y": 5, "w": 1.25},
+                {"x": 1.25, "y": 5, "w": 1.25},
+                {"x": 2.5, "y": 5, "w": 1.25},
+                {"x": 3.75, "y": 5, "w": 6.25},
+                {"x": 10, "y": 5},
+                {"x": 11, "y": 5},
+                {"x": 12, "y": 5},
+                {"x": 13, "y": 5},
+                {"x": 14, "y": 5},
+                {"x": 15, "y": 5},
+                {"x": 16, "y": 5},
+                {"x": 17, "y": 5}
+            ]
+        },
+        "LAYOUT_96_ansi_splitbs": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+                {"x": 6, "y": 0},
+                {"x": 7, "y": 0},
+                {"x": 8, "y": 0},
+                {"x": 9, "y": 0},
+                {"x": 10, "y": 0},
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+                {"x": 17, "y": 0},
+                {"x": 18, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+                {"x": 6, "y": 1},
+                {"x": 7, "y": 1},
+                {"x": 8, "y": 1},
+                {"x": 9, "y": 1},
+                {"x": 10, "y": 1},
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1},
+                {"x": 14, "y": 1},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+                {"x": 17, "y": 1},
+                {"x": 18, "y": 1},
+
+                {"x": 0, "y": 2, "w": 1.5},
+                {"x": 1.5, "y": 2},
+                {"x": 2.5, "y": 2},
+                {"x": 3.5, "y": 2},
+                {"x": 4.5, "y": 2},
+                {"x": 5.5, "y": 2},
+                {"x": 6.5, "y": 2},
+                {"x": 7.5, "y": 2},
+                {"x": 8.5, "y": 2},
+                {"x": 9.5, "y": 2},
+                {"x": 10.5, "y": 2},
+                {"x": 11.5, "y": 2},
+                {"x": 12.5, "y": 2},
+                {"x": 13.5, "y": 2, "w": 1.5},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+                {"x": 17, "y": 2},
+                {"x": 18, "y": 2, "h": 2},
+
+                {"x": 0, "y": 3, "w": 1.75},
+                {"x": 1.75, "y": 3},
+                {"x": 2.75, "y": 3},
+                {"x": 3.75, "y": 3},
+                {"x": 4.75, "y": 3},
+                {"x": 5.75, "y": 3},
+                {"x": 6.75, "y": 3},
+                {"x": 7.75, "y": 3},
+                {"x": 8.75, "y": 3},
+                {"x": 9.75, "y": 3},
+                {"x": 10.75, "y": 3},
+                {"x": 11.75, "y": 3},
+                {"x": 12.75, "y": 3, "w": 2.25},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+                {"x": 17, "y": 3},
+
+                {"x": 0, "y": 4, "w": 2.25},
+                {"x": 2.25, "y": 4},
+                {"x": 3.25, "y": 4},
+                {"x": 4.25, "y": 4},
+                {"x": 5.25, "y": 4},
+                {"x": 6.25, "y": 4},
+                {"x": 7.25, "y": 4},
+                {"x": 8.25, "y": 4},
+                {"x": 9.25, "y": 4},
+                {"x": 10.25, "y": 4},
+                {"x": 11.25, "y": 4},
+                {"x": 12.25, "y": 4, "w": 1.75},
+                {"x": 14, "y": 4},
+                {"x": 15, "y": 4},
+                {"x": 16, "y": 4},
+                {"x": 17, "y": 4},
+                {"x": 18, "y": 4, "h": 2},
+
+                {"x": 0, "y": 5, "w": 1.25},
+                {"x": 1.25, "y": 5, "w": 1.25},
+                {"x": 2.5, "y": 5, "w": 1.25},
+                {"x": 3.75, "y": 5, "w": 6.25},
+                {"x": 10, "y": 5},
+                {"x": 11, "y": 5},
+                {"x": 12, "y": 5},
+                {"x": 13, "y": 5},
+                {"x": 14, "y": 5},
+                {"x": 15, "y": 5},
+                {"x": 16, "y": 5},
+                {"x": 17, "y": 5}
+            ]
+        },
+        "LAYOUT_96_iso": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+                {"x": 6, "y": 0},
+                {"x": 7, "y": 0},
+                {"x": 8, "y": 0},
+                {"x": 9, "y": 0},
+                {"x": 10, "y": 0},
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+                {"x": 17, "y": 0},
+                {"x": 18, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+                {"x": 6, "y": 1},
+                {"x": 7, "y": 1},
+                {"x": 8, "y": 1},
+                {"x": 9, "y": 1},
+                {"x": 10, "y": 1},
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1, "w": 2},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+                {"x": 17, "y": 1},
+                {"x": 18, "y": 1},
+
+                {"x": 0, "y": 2, "w": 1.5},
+                {"x": 1.5, "y": 2},
+                {"x": 2.5, "y": 2},
+                {"x": 3.5, "y": 2},
+                {"x": 4.5, "y": 2},
+                {"x": 5.5, "y": 2},
+                {"x": 6.5, "y": 2},
+                {"x": 7.5, "y": 2},
+                {"x": 8.5, "y": 2},
+                {"x": 9.5, "y": 2},
+                {"x": 10.5, "y": 2},
+                {"x": 11.5, "y": 2},
+                {"x": 12.5, "y": 2},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+                {"x": 17, "y": 2},
+                {"x": 18, "y": 2, "h": 2},
+
+                {"x": 0, "y": 3, "w": 1.75},
+                {"x": 1.75, "y": 3},
+                {"x": 2.75, "y": 3},
+                {"x": 3.75, "y": 3},
+                {"x": 4.75, "y": 3},
+                {"x": 5.75, "y": 3},
+                {"x": 6.75, "y": 3},
+                {"x": 7.75, "y": 3},
+                {"x": 8.75, "y": 3},
+                {"x": 9.75, "y": 3},
+                {"x": 10.75, "y": 3},
+                {"x": 11.75, "y": 3},
+                {"x": 12.75, "y": 3},
+                {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+                {"x": 17, "y": 3},
+
+                {"x": 0, "y": 4, "w": 1.25},
+                {"x": 1.25, "y": 4},
+                {"x": 2.25, "y": 4},
+                {"x": 3.25, "y": 4},
+                {"x": 4.25, "y": 4},
+                {"x": 5.25, "y": 4},
+                {"x": 6.25, "y": 4},
+                {"x": 7.25, "y": 4},
+                {"x": 8.25, "y": 4},
+                {"x": 9.25, "y": 4},
+                {"x": 10.25, "y": 4},
+                {"x": 11.25, "y": 4},
+                {"x": 12.25, "y": 4, "w": 1.75},
+                {"x": 14, "y": 4},
+                {"x": 15, "y": 4},
+                {"x": 16, "y": 4},
+                {"x": 17, "y": 4},
+                {"x": 18, "y": 4, "h": 2},
+
+                {"x": 0, "y": 5, "w": 1.25},
+                {"x": 1.25, "y": 5, "w": 1.25},
+                {"x": 2.5, "y": 5, "w": 1.25},
+                {"x": 3.75, "y": 5, "w": 6.25},
+                {"x": 10, "y": 5},
+                {"x": 11, "y": 5},
+                {"x": 12, "y": 5},
+                {"x": 13, "y": 5},
+                {"x": 14, "y": 5},
+                {"x": 15, "y": 5},
+                {"x": 16, "y": 5},
+                {"x": 17, "y": 5}
+            ]
+        },
+        "LAYOUT_96_iso_splitbs": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+                {"x": 6, "y": 0},
+                {"x": 7, "y": 0},
+                {"x": 8, "y": 0},
+                {"x": 9, "y": 0},
+                {"x": 10, "y": 0},
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+                {"x": 17, "y": 0},
+                {"x": 18, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+                {"x": 6, "y": 1},
+                {"x": 7, "y": 1},
+                {"x": 8, "y": 1},
+                {"x": 9, "y": 1},
+                {"x": 10, "y": 1},
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1},
+                {"x": 14, "y": 1},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+                {"x": 17, "y": 1},
+                {"x": 18, "y": 1},
+
+                {"x": 0, "y": 2, "w": 1.5},
+                {"x": 1.5, "y": 2},
+                {"x": 2.5, "y": 2},
+                {"x": 3.5, "y": 2},
+                {"x": 4.5, "y": 2},
+                {"x": 5.5, "y": 2},
+                {"x": 6.5, "y": 2},
+                {"x": 7.5, "y": 2},
+                {"x": 8.5, "y": 2},
+                {"x": 9.5, "y": 2},
+                {"x": 10.5, "y": 2},
+                {"x": 11.5, "y": 2},
+                {"x": 12.5, "y": 2},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+                {"x": 17, "y": 2},
+                {"x": 18, "y": 2, "h": 2},
+
+                {"x": 0, "y": 3, "w": 1.75},
+                {"x": 1.75, "y": 3},
+                {"x": 2.75, "y": 3},
+                {"x": 3.75, "y": 3},
+                {"x": 4.75, "y": 3},
+                {"x": 5.75, "y": 3},
+                {"x": 6.75, "y": 3},
+                {"x": 7.75, "y": 3},
+                {"x": 8.75, "y": 3},
+                {"x": 9.75, "y": 3},
+                {"x": 10.75, "y": 3},
+                {"x": 11.75, "y": 3},
+                {"x": 12.75, "y": 3},
+                {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+                {"x": 17, "y": 3},
+
+                {"x": 0, "y": 4, "w": 1.25},
+                {"x": 1.25, "y": 4},
+                {"x": 2.25, "y": 4},
+                {"x": 3.25, "y": 4},
+                {"x": 4.25, "y": 4},
+                {"x": 5.25, "y": 4},
+                {"x": 6.25, "y": 4},
+                {"x": 7.25, "y": 4},
+                {"x": 8.25, "y": 4},
+                {"x": 9.25, "y": 4},
+                {"x": 10.25, "y": 4},
+                {"x": 11.25, "y": 4},
+                {"x": 12.25, "y": 4, "w": 1.75},
+                {"x": 14, "y": 4},
+                {"x": 15, "y": 4},
+                {"x": 16, "y": 4},
+                {"x": 17, "y": 4},
+                {"x": 18, "y": 4, "h": 2},
+
+                {"x": 0, "y": 5, "w": 1.25},
+                {"x": 1.25, "y": 5, "w": 1.25},
+                {"x": 2.5, "y": 5, "w": 1.25},
+                {"x": 3.75, "y": 5, "w": 6.25},
+                {"x": 10, "y": 5},
+                {"x": 11, "y": 5},
+                {"x": 12, "y": 5},
+                {"x": 13, "y": 5},
+                {"x": 14, "y": 5},
+                {"x": 15, "y": 5},
+                {"x": 16, "y": 5},
+                {"x": 17, "y": 5}
+            ]
+        },
+        "LAYOUT_96_with60": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+                {"x": 6, "y": 0},
+                {"x": 7, "y": 0},
+                {"x": 8, "y": 0},
+                {"x": 9, "y": 0},
+                {"x": 10, "y": 0},
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+                {"x": 17, "y": 0},
+                {"x": 18, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+                {"x": 6, "y": 1},
+                {"x": 7, "y": 1},
+                {"x": 8, "y": 1},
+                {"x": 9, "y": 1},
+                {"x": 10, "y": 1},
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1, "w": 2},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+                {"x": 17, "y": 1},
+                {"x": 18, "y": 1},
+
+                {"x": 0, "y": 2, "w": 1.5},
+                {"x": 1.5, "y": 2},
+                {"x": 2.5, "y": 2},
+                {"x": 3.5, "y": 2},
+                {"x": 4.5, "y": 2},
+                {"x": 5.5, "y": 2},
+                {"x": 6.5, "y": 2},
+                {"x": 7.5, "y": 2},
+                {"x": 8.5, "y": 2},
+                {"x": 9.5, "y": 2},
+                {"x": 10.5, "y": 2},
+                {"x": 11.5, "y": 2},
+                {"x": 12.5, "y": 2},
+                {"x": 13.5, "y": 2, "w": 1.5},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+                {"x": 17, "y": 2},
+                {"x": 18, "y": 2, "h": 2},
+
+                {"x": 0, "y": 3, "w": 1.75},
+                {"x": 1.75, "y": 3},
+                {"x": 2.75, "y": 3},
+                {"x": 3.75, "y": 3},
+                {"x": 4.75, "y": 3},
+                {"x": 5.75, "y": 3},
+                {"x": 6.75, "y": 3},
+                {"x": 7.75, "y": 3},
+                {"x": 8.75, "y": 3},
+                {"x": 9.75, "y": 3},
+                {"x": 10.75, "y": 3},
+                {"x": 11.75, "y": 3},
+                {"x": 12.75, "y": 3, "w": 2.25},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+                {"x": 17, "y": 3},
+
+                {"x": 0, "y": 4, "w": 2.25},
+                {"x": 2.25, "y": 4},
+                {"x": 3.25, "y": 4},
+                {"x": 4.25, "y": 4},
+                {"x": 5.25, "y": 4},
+                {"x": 6.25, "y": 4},
+                {"x": 7.25, "y": 4},
+                {"x": 8.25, "y": 4},
+                {"x": 9.25, "y": 4},
+                {"x": 10.25, "y": 4},
+                {"x": 11.25, "y": 4},
+                {"x": 12.25, "y": 4, "w": 2.75},
+                {"x": 15, "y": 4},
+                {"x": 16, "y": 4},
+                {"x": 17, "y": 4},
+                {"x": 18, "y": 4, "h": 2}
+
+                {"x": 0, "y": 5, "w": 1.25},
+                {"x": 1.25, "y": 5, "w": 1.25},
+                {"x": 2.5, "y": 5, "w": 1.25},
+                {"x": 3.75, "y": 5, "w": 6.25},
+                {"x": 10, "y": 5, "w": 1.25},
+                {"x": 11.25, "y": 5, "w": 1.25},
+                {"x": 12.5, "y": 5, "w": 1.25},
+                {"x": 13.75, "y": 5, "w": 1.25},
+                {"x": 15, "y": 5, "w": 2},
+                {"x": 17, "y": 5},
+            ]
+        },
+        "LAYOUT_96_with60_splitbs": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+                {"x": 6, "y": 0},
+                {"x": 7, "y": 0},
+                {"x": 8, "y": 0},
+                {"x": 9, "y": 0},
+                {"x": 10, "y": 0},
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+                {"x": 17, "y": 0},
+                {"x": 18, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+                {"x": 6, "y": 1},
+                {"x": 7, "y": 1},
+                {"x": 8, "y": 1},
+                {"x": 9, "y": 1},
+                {"x": 10, "y": 1},
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1},
+                {"x": 14, "y": 1},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+                {"x": 17, "y": 1},
+                {"x": 18, "y": 1},
+
+                {"x": 0, "y": 2, "w": 1.5},
+                {"x": 1.5, "y": 2},
+                {"x": 2.5, "y": 2},
+                {"x": 3.5, "y": 2},
+                {"x": 4.5, "y": 2},
+                {"x": 5.5, "y": 2},
+                {"x": 6.5, "y": 2},
+                {"x": 7.5, "y": 2},
+                {"x": 8.5, "y": 2},
+                {"x": 9.5, "y": 2},
+                {"x": 10.5, "y": 2},
+                {"x": 11.5, "y": 2},
+                {"x": 12.5, "y": 2},
+                {"x": 13.5, "y": 2, "w": 1.5},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+                {"x": 17, "y": 2},
+                {"x": 18, "y": 2, "h": 2},
+
+                {"x": 0, "y": 3, "w": 1.75},
+                {"x": 1.75, "y": 3},
+                {"x": 2.75, "y": 3},
+                {"x": 3.75, "y": 3},
+                {"x": 4.75, "y": 3},
+                {"x": 5.75, "y": 3},
+                {"x": 6.75, "y": 3},
+                {"x": 7.75, "y": 3},
+                {"x": 8.75, "y": 3},
+                {"x": 9.75, "y": 3},
+                {"x": 10.75, "y": 3},
+                {"x": 11.75, "y": 3},
+                {"x": 12.75, "y": 3, "w": 2.25},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+                {"x": 17, "y": 3},
+
+                {"x": 0, "y": 4, "w": 2.25},
+                {"x": 2.25, "y": 4},
+                {"x": 3.25, "y": 4},
+                {"x": 4.25, "y": 4},
+                {"x": 5.25, "y": 4},
+                {"x": 6.25, "y": 4},
+                {"x": 7.25, "y": 4},
+                {"x": 8.25, "y": 4},
+                {"x": 9.25, "y": 4},
+                {"x": 10.25, "y": 4},
+                {"x": 11.25, "y": 4},
+                {"x": 12.25, "y": 4, "w": 2.75},
+                {"x": 15, "y": 4},
+                {"x": 16, "y": 4},
+                {"x": 17, "y": 4},
+                {"x": 18, "y": 4, "h": 2}
+
+                {"x": 0, "y": 5, "w": 1.25},
+                {"x": 1.25, "y": 5, "w": 1.25},
+                {"x": 2.5, "y": 5, "w": 1.25},
+                {"x": 3.75, "y": 5, "w": 6.25},
+                {"x": 10, "y": 5, "w": 1.25},
+                {"x": 11.25, "y": 5, "w": 1.25},
+                {"x": 12.5, "y": 5, "w": 1.25},
+                {"x": 13.75, "y": 5, "w": 1.25},
+                {"x": 15, "y": 5, "w": 2},
+                {"x": 17, "y": 5},
+            ]
+        },
+        "LAYOUT_96_with60_split_num0": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+                {"x": 6, "y": 0},
+                {"x": 7, "y": 0},
+                {"x": 8, "y": 0},
+                {"x": 9, "y": 0},
+                {"x": 10, "y": 0},
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+                {"x": 17, "y": 0},
+                {"x": 18, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+                {"x": 6, "y": 1},
+                {"x": 7, "y": 1},
+                {"x": 8, "y": 1},
+                {"x": 9, "y": 1},
+                {"x": 10, "y": 1},
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1, "w": 2},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+                {"x": 17, "y": 1},
+                {"x": 18, "y": 1},
+
+                {"x": 0, "y": 2, "w": 1.5},
+                {"x": 1.5, "y": 2},
+                {"x": 2.5, "y": 2},
+                {"x": 3.5, "y": 2},
+                {"x": 4.5, "y": 2},
+                {"x": 5.5, "y": 2},
+                {"x": 6.5, "y": 2},
+                {"x": 7.5, "y": 2},
+                {"x": 8.5, "y": 2},
+                {"x": 9.5, "y": 2},
+                {"x": 10.5, "y": 2},
+                {"x": 11.5, "y": 2},
+                {"x": 12.5, "y": 2},
+                {"x": 13.5, "y": 2, "w": 1.5},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+                {"x": 17, "y": 2},
+                {"x": 18, "y": 2, "h": 2},
+
+                {"x": 0, "y": 3, "w": 1.75},
+                {"x": 1.75, "y": 3},
+                {"x": 2.75, "y": 3},
+                {"x": 3.75, "y": 3},
+                {"x": 4.75, "y": 3},
+                {"x": 5.75, "y": 3},
+                {"x": 6.75, "y": 3},
+                {"x": 7.75, "y": 3},
+                {"x": 8.75, "y": 3},
+                {"x": 9.75, "y": 3},
+                {"x": 10.75, "y": 3},
+                {"x": 11.75, "y": 3},
+                {"x": 12.75, "y": 3, "w": 2.25},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+                {"x": 17, "y": 3},
+
+                {"x": 0, "y": 4, "w": 2.25},
+                {"x": 2.25, "y": 4},
+                {"x": 3.25, "y": 4},
+                {"x": 4.25, "y": 4},
+                {"x": 5.25, "y": 4},
+                {"x": 6.25, "y": 4},
+                {"x": 7.25, "y": 4},
+                {"x": 8.25, "y": 4},
+                {"x": 9.25, "y": 4},
+                {"x": 10.25, "y": 4},
+                {"x": 11.25, "y": 4},
+                {"x": 12.25, "y": 4, "w": 2.75},
+                {"x": 15, "y": 4},
+                {"x": 16, "y": 4},
+                {"x": 17, "y": 4},
+                {"x": 18, "y": 4, "h": 2},
+
+                {"x": 0, "y": 5, "w": 1.25},
+                {"x": 1.25, "y": 5, "w": 1.25},
+                {"x": 2.5, "y": 5, "w": 1.25},
+                {"x": 3.75, "y": 5, "w": 6.25},
+                {"x": 10, "y": 5, "w": 1.25},
+                {"x": 11.25, "y": 5, "w": 1.25},
+                {"x": 12.5, "y": 5, "w": 1.25},
+                {"x": 13.75, "y": 5, "w": 1.25},
+                {"x": 15, "y": 5},
+                {"x": 16, "y": 5},
+                {"x": 17, "y": 5}
+            ]
+        }
+    }
+}
diff --git a/keyboards/ymdk/melody96/keymaps/crilith/keymap.c b/keyboards/ymdk/melody96/keymaps/crilith/keymap.c
new file mode 100644
index 0000000000..40ae691435
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/crilith/keymap.c
@@ -0,0 +1,38 @@
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+  QWERTY = SAFE_RANGE,
+  DYNAMIC_MACRO_RANGE,
+};
+
+#include "dynamic_macro.h"
+
+#define KC_REC DYN_REC_START1
+#define KC_DONE DYN_REC_STOP
+#define KC_PLAY DYN_MACRO_PLAY1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+	LAYOUT(
+    KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
+    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,          KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+    KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+    KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PENT,
+    KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             TT(1),   KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT),
+
+	LAYOUT(
+    RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______,
+    _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,          _______, _______, _______, KC_TAB,
+    BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, KC_TAB,
+    _______, _______, _______, _______, BL_DEC,  BL_TOGG, BL_INC,  _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
+    _______, _______, _______,                            KC_PLAY,                            _______, KC_REC,  KC_DONE, _______, _______, _______, _______, _______, _______),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    if (!process_record_dynamic_macro(keycode, record)) {
+        return false;
+    }
+	return true;
+}
diff --git a/keyboards/ymdk/melody96/keymaps/default/keymap.c b/keyboards/ymdk/melody96/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3ed6f3068b
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/default/keymap.c
@@ -0,0 +1,20 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_all(
+        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,          KC_P7,   KC_P8,   KC_P9,   KC_PMNS,
+        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+        KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PENT,
+        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   MO(1),   KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT
+    ),
+    [1] = LAYOUT_all(
+        RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,          _______, _______, _______, _______,
+        BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
+        _______, _______, _______, _______, BL_DEC,  BL_TOGG, BL_INC,  _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______
+    )
+};
diff --git a/keyboards/ymdk/melody96/keymaps/default_96_with60_split_num0/keymap.c b/keyboards/ymdk/melody96/keymaps/default_96_with60_split_num0/keymap.c
new file mode 100644
index 0000000000..5dc26b150d
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/default_96_with60_split_num0/keymap.c
@@ -0,0 +1,36 @@
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+    KC_P00 = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_96_with60_split_num0(
+        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,           KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,                   KC_ENT,  KC_P4,   KC_P5,   KC_P6,
+        KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,                   KC_RSFT, KC_P1,   KC_P2,   KC_P3,   KC_PENT,
+        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),            KC_APP,  KC_RCTL, KC_P0,   KC_P00,  KC_PDOT
+    ),
+    [1] = LAYOUT_96_with60_split_num0(
+        RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
+        _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______,          _______, _______, _______, _______, _______,
+        BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
+        _______,          _______, _______, BL_DEC,  BL_TOGG, BL_INC,  _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, _______,          _______, _______, _______, _______, _______
+    )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+        case KC_P00:
+            if (record->event.pressed) {
+                tap_code(KC_P0);
+                tap_code(KC_P0);
+            }
+            return false;
+    }
+    return true;
+}
diff --git a/keyboards/ymdk/melody96/keymaps/dvz/config.h b/keyboards/ymdk/melody96/keymaps/dvz/config.h
new file mode 100644
index 0000000000..be786464bc
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/dvz/config.h
@@ -0,0 +1,34 @@
+ /* Copyright 2021 Milan Düwel
+  *
+  * 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 <http://www.gnu.org/licenses/>.
+  */
+
+#pragma once
+
+#define COMBO_COUNT 4
+#define COMBO_TERM 100
+
+//#define UNICODE_SELECTED_MODES UC_WINC
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYER_BLINK
+
+#undef RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+
diff --git a/keyboards/ymdk/melody96/keymaps/dvz/keymap.c b/keyboards/ymdk/melody96/keymaps/dvz/keymap.c
new file mode 100644
index 0000000000..cea3970e18
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/dvz/keymap.c
@@ -0,0 +1,161 @@
+ /* Copyright 2021 Milan Düwel
+  *
+  * 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 <http://www.gnu.org/licenses/>.
+  */
+
+#include QMK_KEYBOARD_H
+
+ /* This keymap is designed for use with a German keyboard layout.
+  * It is essentially the same as the default via keymap but adds combo functionality to type umlauts as well as lighting layers for various actions.
+  * Toggling the combo feature also disables KC_LGUI so both can be turned off for gaming. If you want to get rid of it without reflashing new firmware, use KC_RGUI instead.
+  * Layers 2 and 3 are currently unused but are configurable within via.
+  */
+
+enum combos {
+  UML_AE,
+  UML_OE,
+  UML_UE,
+  UML_SZ
+};
+
+const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END};
+const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END};
+const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END};
+const uint16_t PROGMEM sz_combo[] = {KC_S, KC_Y, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+  [UML_AE] = COMBO(ae_combo, KC_QUOT),
+  [UML_OE] = COMBO(oe_combo, KC_SCLN),
+  [UML_UE] = COMBO(ue_combo, KC_LBRC),
+  [UML_SZ] = COMBO(sz_combo, KC_MINS)
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+	[0] = LAYOUT(
+    KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
+    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,          KC_P7,   KC_P8,   KC_P9,   KC_PMNS,
+    KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+    KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PENT,
+    KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   MO(1),   KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT),
+
+	[1] = LAYOUT(
+    RESET,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+    KC_TRNS, RGB_TOG, KC_TRNS, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+    BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CMB_TOG, BL_TOGG, BL_INC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+    KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END,  KC_TRNS, KC_TRNS, KC_MUTE),
+
+	[2] = LAYOUT(
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+	[3] = LAYOUT(
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+	KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+/*  The lighting layers feature a caps indicator as well as layer blinks for mute and the function layer (blink only to allow unhindered adjustment of the RGB backlight settings).
+    Sadly these colours can not be customized within VIA.
+*/
+
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 1, HSV_RED},
+    {15, 17, HSV_RED}
+);
+
+const rgblight_segment_t PROGMEM my_function_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+    {10, 12, HSV_YELLOW}
+);
+
+const rgblight_segment_t PROGMEM my_f2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 17, HSV_CYAN}
+);
+
+const rgblight_segment_t PROGMEM my_f3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 17, HSV_PURPLE}
+);
+
+const rgblight_segment_t PROGMEM my_flash_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+    {0, 17, HSV_RED}
+);
+
+// Now define the array of layers. Later layers take precedence
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+    my_capslock_layer,
+    my_function_layer,    // Overrides caps lock layer
+    my_f2_layer,
+    my_f3_layer,
+    my_flash_layer
+);
+
+void keyboard_post_init_user(void) {
+    // Enable the LED layers
+    rgblight_layers = my_rgb_layers;
+};
+
+bool led_update_user(led_t led_state) {
+    rgblight_set_layer_state(0, led_state.caps_lock);
+    return true;
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+    //rgblight_set_layer_state(1, layer_state_cmp(state, 1));
+    rgblight_set_layer_state(2, layer_state_cmp(state, 2));
+    rgblight_set_layer_state(3, layer_state_cmp(state, 3));
+    return state;
+};
+
+// Note we user post_process_record_user because we want the state
+// after the flag has been flipped...
+void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+        case KC_CAPS:
+        case KC_MUTE:
+        case CMB_TOG:
+            if (record->event.pressed) {
+                rgblight_blink_layer(4, 250);
+            }
+            break;
+        case MO(1):
+            if (record->event.pressed) {
+                rgblight_blink_layer(1, 250);
+            }
+            break;
+    }
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+        case KC_LGUI:   //use combo toggle to disable the win key while gaming
+            if (record->event.pressed) {
+                if (is_combo_enabled()==false) {
+                    return false;
+                }
+            }
+            return true; // Let QMK send the enter press/release events
+        default:
+            return true; // Process all other keycodes normally
+  }
+};
diff --git a/keyboards/ymdk/melody96/keymaps/dvz/readme.md b/keyboards/ymdk/melody96/keymaps/dvz/readme.md
new file mode 100644
index 0000000000..d82055244e
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/dvz/readme.md
@@ -0,0 +1,3 @@
+# DvZ's VIA compatible keymap with rolling umlauts for german typists
+
+Added by: [devilzmods](https://github.com/devilzmods)
diff --git a/keyboards/ymdk/melody96/keymaps/dvz/rules.mk b/keyboards/ymdk/melody96/keymaps/dvz/rules.mk
new file mode 100644
index 0000000000..a1e85f13f4
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/dvz/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes # reduce firmware size
+COMBO_ENABLE = yes
+#UNICODE_ENABLE = yes
+BOOTLOADER = caterina
diff --git a/keyboards/ymdk/melody96/keymaps/konstantin/config.h b/keyboards/ymdk/melody96/keymaps/konstantin/config.h
new file mode 100644
index 0000000000..4b511eb848
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/konstantin/config.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define LAYER_FN
diff --git a/keyboards/ymdk/melody96/keymaps/konstantin/keymap.c b/keyboards/ymdk/melody96/keymaps/konstantin/keymap.c
new file mode 100644
index 0000000000..1ee7ca1e77
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/konstantin/keymap.c
@@ -0,0 +1,77 @@
+#include QMK_KEYBOARD_H
+#include "konstantin.h"
+
+static const HSV *colors[] = { &godspeed_blue, &godspeed_yellow };
+static const size_t cnum = sizeof colors / sizeof *colors;
+static size_t cidx = 0;
+
+enum keycodes_keymap {
+    RGB_SET = RANGE_KEYMAP,
+};
+
+void eeconfig_init_keymap(void) {
+    rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
+}
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+    case RGB_SET:
+        if (record->event.pressed) {
+            cidx = (cidx + 1) % cnum;
+            rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
+        }
+        break;
+    }
+
+    return true;
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base layer
+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+     * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│Hom│End│PgU│PgD│
+     * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+     * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Del│NLk│P/ │P* │P- │
+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
+     * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │P7 │P8 │P9 │   │
+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤P+ │
+     * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter  │P4 │P5 │P6 │   │
+     * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
+     * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSfRCt│ ↑ │P1 │P2 │P3 │   │
+     * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┼───┼───┤PEn│
+     * │LCtl│LGui│LAlt│         Space          │RAlGu│FnFLk│ ← │ ↓ │ → │P0 │P. │   │
+     * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┴───┴───┴───┘
+     */
+    [L_BASE] = LAYOUT(
+        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_INS,  KC_HOME, KC_END,  KC_PGUP, KC_PGDN,
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_DEL,  KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSPC,          KC_P7,   KC_P8,   KC_P9,   XXXXXXX,
+        FN_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+        KC_LSFT, RAL_RGU, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, RSF_RCT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   XXXXXXX,
+        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             RAL_RGU, XXXXXXX, FN_FNLK, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT
+    ),
+
+    /* Fn layer
+     * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+     * │   │   │   │   │   │   │   │   │   │   │   │   │   │Sys│SLk│Pau│Brk│Top│Btm│
+     * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+     * │   │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│   │   │RTg│ ÷ │ × │ − │
+     * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
+     * │ M4  │M2 │M↑ │M1 │M3 │M5 │   │UCM│   │Stp│Ply│Prv│Nxt│Clear│RH+│RS+│RV+│   │
+     * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤RSt│
+     * │      │M← │M↓ │M→ │MW↑│   │   │   │   │   │   │   │        │RH-│RS-│RV-│   │
+     * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
+     * │    │   │MA0│MA2│MW←│MW→│   │   │App│Vo-│Vo+│Mut│      │PgU│RMR│RMS│RMB│   │
+     * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┤RMP│
+     * │    │DtPR│DtNA│          MW↓           │   │   │   │Hom│PgD│End│RM-│RM+│   │
+     * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+     */
+    [L_FN] = LAYOUT(
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SYSRQ,   KC_SLCK, KC_PAUS, BREAK,   TOP,     BOTTOM,
+        _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, RGB_TOG, DIVIDE,  TIMES,   MINUS,
+        KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD,  _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR,            RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
+        _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______,                   RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET,
+        _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP,  KC_VOLD, KC_VOLU, KC_MUTE, _______,          KC_PGUP, RGB_M_R, RGB_M_SN,RGB_M_B, XXXXXXX,
+        _______, DST_P_R, DST_N_A,                            KC_WH_D,                            _______, XXXXXXX, _______, KC_HOME, KC_PGDN, KC_END,  RGB_RMOD,RGB_MOD, RGB_M_P
+    ),
+};
diff --git a/keyboards/ymdk/melody96/keymaps/konstantin/rules.mk b/keyboards/ymdk/melody96/keymaps/konstantin/rules.mk
new file mode 100644
index 0000000000..b315c8e6b9
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/konstantin/rules.mk
@@ -0,0 +1,19 @@
+# Generic features
+BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
+COMMAND_ENABLE     = yes
+CONSOLE_ENABLE     = yes
+EXTRAKEY_ENABLE    = yes
+MOUSEKEY_ENABLE    = yes
+NKRO_ENABLE        = yes
+TAP_DANCE_ENABLE   = yes
+UNICODEMAP_ENABLE  = yes
+
+# Keyboard-specific features
+BACKLIGHT_ENABLE   = no
+RGBLIGHT_ENABLE    = yes
+VIA_ENABLE         = yes
+
+# Firmware size reduction
+GRAVE_ESC_ENABLE   = no
+MAGIC_ENABLE       = no
+SPACE_CADET_ENABLE = no
diff --git a/keyboards/ymdk/melody96/keymaps/via/keymap.c b/keyboards/ymdk/melody96/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c02fa785a8
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/via/keymap.c
@@ -0,0 +1,36 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_all(
+        KC_ESC,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_PSCR, KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_DEL,
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,          KC_P7,   KC_P8,   KC_P9,   KC_PMNS,
+        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,                    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+        KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_PENT,
+        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   MO(1),   KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT
+    ),
+    [1] = LAYOUT_all(
+        RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,          _______, _______, _______, _______,
+        BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
+        _______, _______, _______, _______, BL_DEC,  BL_TOGG, BL_INC,  _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______
+    ),
+    [2] = LAYOUT_all(
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______
+    ),
+    [3] = LAYOUT_all(
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______
+    )
+};
diff --git a/keyboards/ymdk/melody96/keymaps/via/rules.mk b/keyboards/ymdk/melody96/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/ymdk/melody96/keymaps/zunger/config.h b/keyboards/ymdk/melody96/keymaps/zunger/config.h
new file mode 100644
index 0000000000..cc06440e0d
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/zunger/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2018 MechMerlin
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// Enable cmd-option-escape on mac.
+#define GRAVE_ESC_ALT_OVERRIDE
+
+// place overrides here
diff --git a/keyboards/ymdk/melody96/keymaps/zunger/keymap.c b/keyboards/ymdk/melody96/keymaps/zunger/keymap.c
new file mode 100644
index 0000000000..d0d2698b7a
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/zunger/keymap.c
@@ -0,0 +1,489 @@
+/* Copyright 2019 Yonatan Zunger
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include <assert.h>
+
+// This keymap is designed to make it easy to type in a wide variety of languages, as well as
+// generate mathematical symbols (à la Space Cadet).
+//
+// LAYER MAGIC (aka, typing in many alphabets)
+//   This keyboard has three "base" layers: QWERTY, GREEK, and CADET. The GREEK and CADET layers
+// are actually full of Unicode points, and so which point they generate depends on things like
+// whether the shift key is down. To handle this, each of those layers is actually *two* layers, one
+// with and one without shift. In our main loop, we manage modifier state detection, as well as
+// layer switch detection, and pick the right layer on the fly.
+//   Layers are selected with a combination of three keys. The "Greek" and "Cadet" keys act like
+// modifiers: When held down, they transiently select the indicated base layer. The "Layer Lock" key
+// locks the value of the base layer at whatever is currently held; so e.g., if you hold Greek +
+// Layer Lock, you'll stay in Greek mode until you hit Layer Lock again without any of the mods
+// held.
+//   TODO: This system of layer selection is nice for math, but it's not very nice for actually
+// typing in multiple languages. It seems like a better plan will be to reserve one key for each
+// base layer -- maybe fn + F(n) -- which can either be held as a modifier or tapped to switch
+// layers. That will open up adding some more languages, like Yiddish, but to do this effectively
+// we'll need to find a good UI with which to show the currently selected layer. Need to check what
+// the melody96 has in the way of outputs (LEDs, sound, etc).
+//
+// ACCENT MAGIC (aka, typing conveniently in Romance languages)
+//   We want to support easy typing of diacritical marks. We can't rely on the host OS for this,
+// because (e.g.) on MacOS, to make any of the other stuff work, we need to be using the Unicode
+// input method at the OS level, which breaks all the normal accent stuff on that end. So we do it
+// ourselves. Accents can actually be invoked in two different ways: one fast and very compatible,
+// one very versatile but with occasional compatibility problems.
+//
+//   THE MAIN WAY: You can hit one of the "accent request" key patterns immediately *before* typing
+//   a letter to be accented. It will emit the corresponding accented Unicode. For example, you can
+//   hit fn-e to request an acute accent, followed by i, and it will output í, U+00ED LATIN SMALL
+//   LETTER I WITH ACUTE. These "combined characters" are in Unicode normal form C (NFKC), which is
+//   important because many European websites and apps, in particular, tend to behave very badly
+//   (misunderstanding and/or crashing) when presented with characters in other forms! The catch is
+//   that this only works for the various combinations of letters and accents found in the Latin-1
+//   supplement block of Unicode -- basically, things you need for Western European languages.
+//
+//   (NB: If you make an accent request followed by a letter which can't take the corresponding
+//   accent, it will output the uncombined form of the accent followed by whatever you typed; so
+//   e.g., if you hit fn-e followed by f, it will output ´f, U+00B4 ACUTE ACCENT followed by an
+//   ordinary f. This is very similar to the default behavior of MacOS.)
+//
+//   THE FLEXIBLE WAY: If you hit the accent request with a shift -- e.g., fn-shift-e -- it will
+//   instead immediately output the corresponding *combining* Unicode accent mark, which will modify
+//   the *previous* character you typed. For example, if you type i followed by fn-shift-e, it will
+//   generate í. But don't be fooled by visual similarity: unlike the previous example, this one is
+//   an ordinary i followed by U+0301 COMBINING ACUTE ACCENT. It's actually *two symbols*, and this
+//   is Unicode normal form D (NFKD). Unlike NFKC, there are NFKD representations of far more
+//   combinations of letters and accents, and it's easy to add more of these if you need. (The NFKC
+//   representation of such combinations is identical to their NFKD representation)
+//
+//   Programs that try to compare Unicode strings *should* first normalize them by converting them
+//   all into one normal form or another, and there are functions in every programming language to
+//   do this -- e.g., JavaScript's string.normalize() -- but lots of programmers fail to understand
+//   this, and so write code that massively freaks out when it encounters the wrong form.
+//
+// The current accent request codes are modeled on the ones in MacOS.
+//
+//    fn+`    Grave accent (`)
+//    fn+e    Acute accent (´)
+//    fn+i    Circumflex (^)
+//    fn+u    Diaresis / umlaut / trema (¨)
+//    fn+c    Cedilla (¸)
+//    fn+n    Tilde (˜)
+//
+// Together, these functions make for a nice "polyglot" keyboard: one that can easily type in a wide
+// variety of languages, which is very useful for people who, well, need to type in a bunch of
+// languages.
+//
+// The major TODOs are:
+//   - Update the layer selection logic (and add visible layer cues);
+//   - Factor the code below so that the data layers are more clearly separated from the code logic,
+//     so that other users of this keymap can easily add whichever alphabets they need without
+//     having to deeply understand the implementation.
+
+
+enum custom_keycodes {
+  // We provide special layer management keys:
+  //    GREEK triggers the Greek (aka "Front") layer, or the SHIFTGREEK layer when shift is held.
+  //          (Because we use Unicode, we need to implement shift-handling at the firmware level,
+  //          rather than the OS level like we do in the QWERTY layer)
+  //    CADET or GREEK+ALT triggers the Cadet (aka "Top") layer, or the SHIFTCADET layer when
+  //          shift is held.
+  //    LAYER_LOCK locks the "base" layer (i.e., QWERTY, GREEK, or CADET) to the value which is
+  //          pressed at the moment that it is being released. When a layer lock is set, the
+  //          analogous layer modifier key is reversed; e.g., if you lock the GREEK layer, then the
+  //          GREEK button bounces you back to QWERTY.
+  //
+  // We also parse the shift, alt, and caps lock keys to provide management of those which is
+  // compatible with these various layers.
+  KC_GREEK = SAFE_RANGE,
+  KC_CADET,
+  KC_LAYER_LOCK,
+
+  // These are the keycodes generated by the various "accent request" keystrokes.
+  KC_ACCENT_START,
+  KC_CGRV = KC_ACCENT_START,  // Grave accent
+  KC_CAGU,  // Acute accent
+  KC_CDIA,  // Diaresis / umlaut / trema
+  KC_CCIR,  // Circumflex
+  KC_CCED,  // Cedilla
+  KC_CTIL,  // Tilde
+  KC_ACCENT_END,
+};
+
+enum layers_keymap {
+  _QWERTY = 0,
+  _FUNCTION,
+
+  _GREEK,
+  _SHIFTGREEK,
+  _CADET,
+  _SHIFTCADET,
+};
+
+// This is so that H(xxxx) has the same width as _______, which makes the grids more legible.
+#define H(x) UC(0x##x)
+#define MO_FN MO(_FUNCTION)
+#define KC_LLCK KC_LAYER_LOCK
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  // NB: Using GESC for escape in the QWERTY layer as a temporary hack because I messed up the
+  // switch on the KC_GRV key; change back to KC_ESC once this is fixed.
+	[_QWERTY] = LAYOUT_hotswap(
+    KC_GESC, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_HOME, KC_END,  KC_PGUP, KC_PGDN, KC_MPLY, KC_BRK,
+    KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,           KC_BSPC, KC_LLCK, KC_PSLS, KC_PAST, KC_PMNS,
+    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,
+    KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,                   KC_ENT,  KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+    KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,          KC_UP,   KC_P1,   KC_P2,   KC_P3,
+    KC_LCTL, KC_LALT, KC_LGUI,                            KC_SPC,                             MO_FN,   KC_GREEK,KC_CADET,KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT),
+  /* The Greek layers. Shown here are the QWERTY layer (for visual reference) and the two Greek
+   * layers.
+   * ,----------------------------------------------------------------------------
+   * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|HOM|END|PGU|PGD|MUT|BRK|  QWERTY
+   * | ` | ₁ | ₂ | ₃ | ₄ | ₅ | ₆ | ₇ | ₈ | ₉ | ₀ | ₋ | ₊ | ₍ | ₎ |   |   |   |   |  SHIFTGREEK
+   * | ` | ¹ | ² | ³ | ⁴ | ⁵ | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | ⁻ | ⁺ | ⁽ | ⁾ |   |   |   |   |  GREEK
+   * |---------------------------------------------------------------------------|
+   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |LCK| / | * | - |
+   * | ` | ¿ |   | € |   |   |   |   |   |   |   |   | ≁ | BKSPC |LCK|   | ⊗ |   |
+   * |   |   |   |   |   |   |   |   |   |   |   | ∝ | ∼ | BKSPC |LCK| ⊘ | ⊙ | ⊖ |
+   * |---------------------------------------------------------------------------|
+   * | TAB  | Q | W | E | R | T | Y | U | I | O | P | [ | ] |  \ | 7 | 8 | 9 |   |
+   * |      | Θ | Ω | Ε | Ρ | Τ | Ψ | Υ | Ι | Ο | Π |   |   |    |   |   |   |   |
+   * |      | θ | ω | ε | ρ | τ | ψ | υ | ι | ο | π |   |   |    |   |   |   |   |
+   * |-----------------------------------------------------------------------| + |
+   * | CTRL   | A | S | D | F | G | H | J | K | L | ; | ' |  RET | 4 | 5 | 6 | ⊕ |
+   * | CTRL   | Α | Σ | Δ | Φ | Γ | Η |   | Κ | Λ | … | ∴ |  RET |   |   |   |   |
+   * | CTRL   | α | σ | δ | φ | γ | η | ϑ | κ | λ | ⋯ | ⋅ |  RET |   |   |   |   |
+   * |-----------------------------------------------------------------------|---|
+   * | SHIFT   | Z | X | C | V | B | N | M | , | . | / |SHFT | ↑ | 1 | 2 | 3 |   |
+   * | SHIFT   | Ζ | Ξ | Χ | ✔ | Β | Ν | Μ | ≲ | ≳ |   |SHFT |   |   |   |   |   |
+   * | SHIFT   | ζ | ξ | χ | ς | β | ν | μ | ≪ | ≫ | ∫ |SHFT |   |   |   |   |   |
+   * |-----------------------------------------------------------------------|ENT|
+   * | CTL | ALT| CMD|         SPACE         | α | β | γ | ← | ↓ | → | 0 | . |   |
+   * | CTL | ALT| CMD|         SPACE         | α | β | γ |   |   |   |   |   |   |
+   * | CTL | ALT| CMD|         SPACE         | α | β | γ |   |   |   |   |   |   |
+   * `---------------------------------------------------------------------------'
+   */
+	[_GREEK] = LAYOUT_hotswap(
+    KC_GRV,  H(00b9), H(00b2), H(00b3), H(2074), H(2075), H(2076), H(2077), H(2078), H(2079), H(2070), H(207b), H(207a), H(207d), H(207e), XXXXXXX, XXXXXXX, XXXXXXX, _______,
+    KC_GRV,  _______, _______, _______, _______, _______, _______, _______, H(00b0), _______, _______, H(221d), H(223c),          _______, _______, H(2298), H(2299), H(2296),
+    _______, H(03b8), H(03c9), H(03b5), H(03c1), H(03c4), H(03c8), H(03c5), H(03b9), H(03bf), H(03c0), KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,
+    _______, H(03b1), H(03c3), H(03b4), H(03c6), H(03b3), H(03b7), H(03d1), H(03ba), H(03bb), H(22ef), H(22c5),                   _______, KC_P4,   KC_P5,   KC_P6,   H(2295),
+    _______,          H(03b6), H(03be), H(03c7), H(03c2), H(03b2), H(03bd), H(03bc), H(226a), H(226b), H(222b), _______,          _______, KC_P1,   KC_P2,   KC_P3,
+    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, KC_P0,   KC_PDOT, KC_PENT),
+	[_SHIFTGREEK] = LAYOUT_hotswap(
+    KC_GRV,  H(2081), H(2082), H(2083), H(2084), H(2085), H(2086), H(2087), H(2088), H(2089), H(2080), H(208b), H(208a), H(208d), H(208e), XXXXXXX, XXXXXXX, XXXXXXX, _______,
+    KC_GRV,  H(00bf), _______, H(20ac), _______, _______, _______, _______, _______, _______, _______, XXXXXXX, H(2241),          _______, _______, XXXXXXX, H(2297), XXXXXXX,
+    _______, H(0398), H(03a9), H(0395), H(03a1), H(03a4), H(03a8), H(03a5), H(0399), H(039f), H(03a0), KC_LBRC, KC_RBRC,          KC_BSLS, KC_P7,   KC_P8,   KC_P9,
+    _______, H(0391), H(03a3), H(0394), H(03a6), H(0393), H(0397), XXXXXXX, H(039a), H(039b), H(2026), H(2234),                   _______, KC_P4,   KC_P5,   KC_P6,   H(2295),
+    _______,          H(0396), H(039e), H(03a7), H(2714), H(0392), H(039d), H(039c), H(2272), H(2273), XXXXXXX, _______,          _______, KC_P1,   KC_P2,   KC_P3,
+    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, KC_P0,   KC_PDOT, KC_PENT),
+  /* The Cadet layers. Again, we show the QWERTY layer and the two cadet layers.
+   * ,----------------------------------------------------------------------------
+   * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|HOM|END|PGU|PGD|MUT|BRK|  QWERTY
+   * | ∅ |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |  SHIFTCADET
+   * | ¬ |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |  CADET
+   * |---------------------------------------------------------------------------|
+   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |LCK| / | * | - |
+   * | ` | ¡ |   | £ |   |   |   |   | ° |   |   | * | ∓ | BKSPC |LCK|   |   |   |
+   * |   |   |   |   |   |   |   |   |   |   |   |   | ± | BKSPC |LCK|   | × |   |
+   * |---------------------------------------------------------------------------|
+   * | TAB  | Q | W | E | R | T | Y | U | I | O | P | [ | ] |  \ | 7 | 8 | 9 |   |
+   * |      | ℚ |   |   | ℝ | ⊆ | ⊇ |   | ℵ | ∄ |   | ∉ |   |    | * | * | * |   |
+   * |      | ∧ | ∨ | ∩ | ∪ | ⊂ | ⊃ | ∀ | ∞ | ∃ | ∂ | ∈ |   |    | * | * | * |   | [1]
+   * |-----------------------------------------------------------------------| + |
+   * | CTRL   | A | S | D | F | G | H | J | K | L | ; | ' |  RET | 4 | 5 | 6 | ⊕ |
+   * | CTRL   | Å |   | ∇ |   | ⇑ | ⇓ | ⇐ | ⇒ | ⇔ |   |   |  RET | * | * | * |   |
+   * | CTRL   | ⟘ | ⊤ | ⊢ | ⊣ | ↑ | ↓ | ← | → | ↔ |   |   |  RET | * | * | * |   | [1]
+   * |-----------------------------------------------------------------------|---|
+   * | SHIFT   | Z | X | C | V | B | N | M | , | . | / |SHFT | ↑ | 1 | 2 | 3 |   |
+   * | SHIFT   | ℤ | ℂ |   | ≉ | ≢ | ℕ |   |   |   |   |SHFT |   | * | * | * |   |
+   * | SHIFT   |   | ≠ |   | ≈ | ≡ | ≤ | ≥ |   |   | ÷ |SHFT |   | * | * | * |   | [1]
+   * |-----------------------------------------------------------------------|ENT|
+   * | CTL | ALT| CMD|         SPACE         | α | β | γ | ← | ↓ | → | 0 | . |   |
+   * | CTL | ALT| CMD|         SPACE         | α | β | γ |   |   |   |   |   |   |
+   * | CTL | ALT| CMD|         SPACE         | α | β | γ |   |   |   |   |   |   |
+   * `---------------------------------------------------------------------------'
+   * [1] CADET + numpad moves the mouse. SHIFT+CADET+NUMPAD moves it more quickly. CADET+5
+   * clicks the mouse, and SHIFT+CADET+FIVE right-clicks.
+   */
+	[_CADET] = LAYOUT_hotswap(
+    H(00AC), KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+    KC_GRV,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, H(00b1),          _______, _______, XXXXXXX, H(00d7), XXXXXXX,
+    _______, H(2227), H(2228), H(2229), H(222a), H(2282), H(2283), H(2200), H(221e), H(2203), H(2202), H(2208), XXXXXXX,          XXXXXXX, KC_P7,   KC_P8,   KC_P9,
+    _______, H(22a5), H(22a4), H(22a2), H(22a3), H(2191), H(2193), H(2190), H(2192), H(2194), XXXXXXX, XXXXXXX,                   _______, KC_P4,   KC_P5,   KC_P6,   XXXXXXX,
+    _______,          XXXXXXX, H(2260), XXXXXXX, H(2248), H(2261), H(2264), H(2265), XXXXXXX, XXXXXXX, H(00f7), _______,          _______, KC_P1,   KC_P2,   KC_P3,
+    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, KC_P0,   KC_PDOT, KC_PENT),
+	[_SHIFTCADET] = LAYOUT_hotswap(
+    H(2205), KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+    KC_GRV,  H(00a1), XXXXXXX, H(00a3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, H(2213),          _______, _______, XXXXXXX, XXXXXXX, XXXXXXX,
+    _______, H(211a), XXXXXXX, XXXXXXX, H(211d), H(2286), H(2287), XXXXXXX, H(2135), H(2204), XXXXXXX, H(2209), XXXXXXX,          XXXXXXX, KC_P7,   KC_P8,   KC_P9,
+    _______, H(212b), XXXXXXX, H(2207), XXXXXXX, H(21d1), H(21d3), H(21d0), H(21d2), H(21d4), XXXXXXX, XXXXXXX,                   _______, KC_P4,   KC_P5,   KC_P6,   XXXXXXX,
+    _______,          H(2124), H(2102), XXXXXXX, H(2249), H(2262), H(2115), XXXXXXX, XXXXXXX, XXXXXXX, H(00f7), _______,          _______, KC_P1,   KC_P2,   KC_P3,
+    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, KC_P0,   KC_PDOT, KC_PENT),
+
+  // Function layer is mostly for keyboard meta-control operations, but also contains the combining
+  // accent marks. These are deliberately placed to match where the analogous controls go on Mac OS.
+	[_FUNCTION] = LAYOUT_hotswap(
+    KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RESET,
+    KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______,
+    _______, _______, _______, KC_CAGU, _______, _______, _______, KC_CDIA, KC_CCIR, _______, _______, _______, _______,          _______, _______, _______, _______,
+    _______, _______, _______, UC_M_OS, UC_M_LN, UC_M_WI, UC_M_BS, UC_M_WC, _______, _______, _______, _______,                   _______, _______, _______, _______, _______,
+    _______,          _______, _______, KC_CCED, _______, _______, KC_CTIL, _______, _______, _______, _______, _______,          _______, _______, _______, _______,
+    _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Accent implementation
+//
+// In the body of process_record_user, we store an "accent_request", which is the accent keycode if
+// one was just selected, or zero otherwise. When the *next* key is hit, we look up whether the
+// accent request plus that next keycode (plus the state of the shift key) together amount to an
+// interesting combined (NFKC) character, and if so, emit it; otherwise, we emit the accent as a
+// separate character and then process the next key normally. The resulting UI behavior is similar
+// to that of the combining accent keys in MacOS.
+//
+// We store two arrays, depending on whether shift is or isn't held. Each is two-dimensional, with
+// its outer key by the next keycode struck, and the inner key by the accent requested. The outer
+// array has KC_Z + 1 as its upper bound, so that we can save memory by only coding alphabetic keys.
+// The contents are either Unicode code points, or zero to indicate that we don't have a point for
+// this combination.
+
+#define KC_NUM_ACCENTS (KC_ACCENT_END - KC_ACCENT_START)
+#define KC_NUM_SLOTS (KC_Z + 1)
+
+const uint16_t PROGMEM unshifted_accents[KC_NUM_SLOTS][KC_NUM_ACCENTS] = {
+  //         KC_CGRV, KC_CAGU, KC_CDIA, KC_CCIR, KC_CCED, KC_CTIL
+  [KC_A] = { 0x00e0,  0x00e1,  0x00e4,  0x00e2,  0,       0x00e3 },
+  [KC_E] = { 0x00e8,  0x00e9,  0x00eb,  0x00ea,  0,       0      },
+  [KC_I] = { 0x00ec,  0x00ed,  0x00ef,  0x00ee,  0,       0      },
+  [KC_O] = { 0x00f2,  0x00f3,  0x00f6,  0x00f4,  0,       0x00f5 },
+  [KC_U] = { 0x00f9,  0x00fa,  0x00fc,  0x00fb,  0,       0      },
+  [KC_Y] = { 0,       0,       0x00ff,  0,       0,       0      },
+  [KC_N] = { 0,       0,       0,       0,       0,       0x00f1 },
+  [KC_C] = { 0,       0,       0,       0,       0x00e7,  0      },
+};
+
+const uint16_t PROGMEM shifted_accents[KC_NUM_SLOTS][KC_NUM_ACCENTS] = {
+  //         KC_CGRV, KC_CAGU, KC_CDIA, KC_CCIR, KC_CCED, KC_CTIL
+  [KC_A] = { 0x00c0,  0x00c1,  0x00c4,  0x00c2,  0,       0x00c3 },
+  [KC_E] = { 0x00c8,  0x00c9,  0x00cb,  0x00ca,  0,       0      },
+  [KC_I] = { 0x00cc,  0x00cd,  0x00cf,  0x00ce,  0,       0      },
+  [KC_O] = { 0x00d2,  0x00d3,  0x00d6,  0x00d4,  0,       0x00d5 },
+  [KC_U] = { 0x00d9,  0x00da,  0x00dc,  0x00db,  0,       0      },
+  [KC_Y] = { 0,       0,       0x00df,  0,       0,       0      },
+  [KC_N] = { 0,       0,       0,       0,       0,       0x00d1 },
+  [KC_C] = { 0,       0,       0,       0,       0x00c7,  0      },
+};
+
+// The uncombined and combined forms of the accents, for when we want to emit them as single
+// characters.
+const uint16_t PROGMEM uncombined_accents[KC_NUM_ACCENTS] = {
+  [KC_CGRV - KC_ACCENT_START] = 0x0060,
+  [KC_CAGU - KC_ACCENT_START] = 0x00b4,
+  [KC_CDIA - KC_ACCENT_START] = 0x00a8,
+  [KC_CCIR - KC_ACCENT_START] = 0x005e,
+  [KC_CCED - KC_ACCENT_START] = 0x00b8,
+  [KC_CTIL - KC_ACCENT_START] = 0x02dc,
+};
+
+const uint16_t PROGMEM combined_accents[KC_NUM_ACCENTS] = {
+  [KC_CGRV - KC_ACCENT_START] = 0x0300,
+  [KC_CAGU - KC_ACCENT_START] = 0x0301,
+  [KC_CDIA - KC_ACCENT_START] = 0x0308,
+  [KC_CCIR - KC_ACCENT_START] = 0x0302,
+  [KC_CCED - KC_ACCENT_START] = 0x0327,
+  [KC_CTIL - KC_ACCENT_START] = 0x0303,
+};
+
+// This function manages keypresses that happen after an accent has been selected by an earlier
+// keypress.
+// Args:
+//   accent_key: The accent key which was earlier selected. This must be in the range
+//     [KC_ACCENT_START, KC_ACCENT_END).
+//   keycode: The keycode which was just pressed.
+//   is_shifted: The current shift state (as set by a combination of shift and caps lock)
+//   force_no_accent: If true, we're in a situation where we want to force there to be no
+//     accent combination -- if e.g. we're in a non-QWERTY layer, or if other modifier keys
+//     are held.
+//
+// Returns true if the keycode has been completely handled by this function (and so should not be
+// processed further by process_record_user) or false otherwise.
+bool process_key_after_accent(
+    uint16_t accent_key,
+    uint16_t keycode,
+    bool is_shifted,
+    bool force_no_accent
+) {
+  assert(accent_key >= KC_ACCENT_START);
+  assert(accent_key < KC_ACCENT_END);
+  const int accent_index = accent_key - KC_ACCENT_START;
+
+  // If the keycode is outside A..Z, or force_no_accent is set, we know we shouldn't even bother
+  // with a table lookup.
+  if (keycode <= KC_Z && !force_no_accent) {
+    // Pick the correct array. Because this is progmem, we're going to need to do the
+    // two-dimensional array indexing by hand, and so we just cast it to a single-dimensional array.
+    const uint16_t *points = (const uint16_t*)(is_shifted ? shifted_accents : unshifted_accents);
+    const uint16_t code_point = pgm_read_word_near(points + KC_NUM_ACCENTS * keycode + accent_index);
+    if (code_point) {
+      register_unicode(code_point);
+      return true;
+    }
+  }
+
+  // If we get here, there was no accent match. Emit the accent as its own character, and then let
+  // the caller figure out what to do next.
+  register_unicode(pgm_read_word_near(uncombined_accents + accent_index));
+  return false;
+}
+
+// Layer bitfields.
+#define GREEK_LAYER (1UL << _GREEK)
+#define SHIFTGREEK_LAYER (1UL << _SHIFTGREEK)
+#define CADET_LAYER (1UL << _CADET)
+#define SHIFTCADET_LAYER (1UL << _SHIFTCADET)
+// The layers we don't touch.
+#define LAYER_MASK ~(GREEK_LAYER|SHIFTGREEK_LAYER|CADET_LAYER|SHIFTCADET_LAYER)
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  // We track these persistent globals and manage them on our own, rather than trying to rely on
+  // get_mods or the like, because this function is called *before* that's updated!
+  static bool shift_held = false;
+  static bool alt_held = false;
+  static bool ctrl_held = false;
+  static bool super_held = false;
+  static bool greek_held = false;
+  static bool cadet_held = false;
+
+  // These are where we remember the values of lock states.
+  static bool shift_lock = false;
+  static int layer_lock = _QWERTY;
+
+  // The accent request, or zero if there isn't one.
+  static uint16_t accent_request = 0;
+
+  // If this is set to true, don't trigger any handling of pending accent requests. That's what we
+  // want to do if e.g. the user just hit the shift key or something.
+  bool ignore_accent_change = !record->event.pressed;
+
+  // Step 1: Process any modifier key state changes, so we can maintain that state.
+  if (keycode == KC_LSHIFT || keycode == KC_RSHIFT) {
+    shift_held = record->event.pressed;
+    ignore_accent_change = true;
+  } else if (keycode == KC_LALT || keycode == KC_RALT) {
+    alt_held = record->event.pressed;
+    ignore_accent_change = true;
+  } else if (keycode == KC_LCTRL || keycode == KC_RCTRL) {
+    ctrl_held = record->event.pressed;
+    ignore_accent_change = true;
+  } else if (keycode == KC_LGUI || keycode == KC_RGUI) {
+    super_held = record->event.pressed;
+    ignore_accent_change = true;
+  } else if (keycode == KC_GREEK) {
+    greek_held = record->event.pressed;
+    ignore_accent_change = true;
+  } else if (keycode == KC_CADET) {
+    cadet_held = record->event.pressed;
+    ignore_accent_change = true;
+  }
+
+  // Step 2: Figure out which layer we're supposed to be in, by transforming all the prior stuff
+  // into layer requests.
+  const bool greek_request = (greek_held && !alt_held);
+  const bool cadet_request = (cadet_held || (greek_held && alt_held));
+
+  // Now, handle the lock keys. We store next_layer_lock in a local variable so that we can
+  // determine the layer to pick right now before we update layer_lock.
+  int next_layer_lock = layer_lock;
+  if (keycode == KC_CAPS) {
+    // If we're in QWERTY mode, caps lock is already going to be managed by the host OS, but by
+    // tracking it ourselves we can also usefully apply it to the GREEK and CADET layers.
+    if (record->event.pressed) {
+      shift_lock = !shift_lock;
+    }
+  } else if (keycode == KC_LAYER_LOCK) {
+    if (record->event.pressed) {
+      if (cadet_request) {
+        next_layer_lock = _CADET;
+      } else if (greek_request) {
+        next_layer_lock = _GREEK;
+      } else {
+        next_layer_lock = _QWERTY;
+      }
+    }
+  }
+
+  // OK! Now we know which buttons are being held, and the current and upcoming states of the locks.
+  // We can compute our new base layer. Remember that the CADET and GREEK keys act as their own
+  // antonyms if they match the layer lock -- e.g., if you have CADET locked, then CADET+X generates
+  // QWERTY-X.
+  int base_layer;
+  if (cadet_request) {
+    base_layer = (layer_lock == _CADET ? _QWERTY : _CADET);
+  } else if (greek_request) {
+    base_layer = (layer_lock == _GREEK ? _QWERTY : _GREEK);
+  } else {
+    base_layer = layer_lock;
+  }
+
+  const bool shifted = (shift_held != shift_lock);
+  int actual_layer;
+  if (base_layer == _CADET) {
+    actual_layer = (shifted ? _SHIFTCADET : _CADET);
+  } else if (base_layer == _GREEK) {
+    actual_layer = (shifted ? _SHIFTGREEK : _GREEK);
+  } else {
+    // We don't do shifting for the QWERTY layer, since for that we emit USB HID codes and shifting
+    // is managed by the host OS.
+    actual_layer = _QWERTY;
+  }
+
+  // And now we can update the layer lock and the actual firmware layer selector.
+  layer_lock = next_layer_lock;
+  layer_state_t new_layer_state = (layer_state & LAYER_MASK) | (1UL << actual_layer);
+  if (new_layer_state != layer_state) {
+    layer_state_set(new_layer_state);
+  }
+
+  // Step 3: Handle accents. If there's a pending accent request, process it. If what the user just
+  // hit creates a new accent request, update the pending state for the next keypress.
+  if (!ignore_accent_change && accent_request && record->event.pressed) {
+    // Only do the accent stuff if we're in the QWERTY layer and we aren't modifying something.
+    const bool force_no_accent = (
+        actual_layer != _QWERTY ||
+        ctrl_held ||
+        super_held ||
+        alt_held
+    );
+    const uint16_t old_accent = accent_request;
+    accent_request = 0;
+    if (process_key_after_accent(old_accent, keycode, shifted, force_no_accent)) {
+      return false;
+    }
+  }
+
+  // And if a new accent request just arrived, update accent_request.
+  if (keycode >= KC_ACCENT_START && keycode < KC_ACCENT_END && record->event.pressed) {
+    if (shifted) {
+      // Shift + accent request generates the combining accent key, and leaves accent_request alone.
+      register_unicode(pgm_read_word_near(combined_accents + keycode - KC_ACCENT_START));
+      return false;
+    } else {
+      accent_request = keycode;
+    }
+  }
+
+  return true;
+}
diff --git a/keyboards/ymdk/melody96/keymaps/zunger/readme.md b/keyboards/ymdk/melody96/keymaps/zunger/readme.md
new file mode 100644
index 0000000000..3eb64a2e73
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/zunger/readme.md
@@ -0,0 +1,78 @@
+* The "Cadet-Style" keymap for the melody96.
+* Author: Yonatan Zunger (zunger@gmail.com)
+
+This is an experimental keymap being used both for practical reasons (as my daily driver) and to
+work out the ideas of a "space-cadet-style" keyboard which can type text and mathematical symbols
+with equal ease. It's designed for anyone who frequently needs to do this outside of a LaTeX
+environment, or for anyone who loves the old "Space Cadet" keyboard! And it works at its best when
+you have actual Cadet keycaps (like SA Symbolics) installed, because those keycaps will actually
+show what you get.
+
+The core idea of this keyboard is that, in addition to a QWERTY base layer and a function layer, it
+supports two additional base layers -- the GREEK layer (the analogue of the Space Cadet "Greek," or
+"Front," keys) and the CADET layer (the analogue of the Space Cadet "Top" keys). These layers use
+Unicode to generate all of the mathematical symbols you can find on a traditional Space Cadet
+layout, plus a bunch of extras.
+
+Because Unicode can't be encoded using the traditional USB HID protocol, QMK does some clever but
+horrifying things to fool your OS. One consequence of this is that the shift key needs to be handled
+by the keyboard firmware, not the host OS. To handle this, we have two additional layers --
+SHIFTGREEK and SHIFTCADET -- and handle the flipping between all of these layers here in the
+firmware.
+
+*The simple bit: Using this layout on a Melody96*
+
+At the core of this layout are three special modifier keys and two special lock keys:
+
+* The GREEK key, to the right of the spacebar, activates the GREEK layer. GREEK+SHIFT activates
+  SHIFTGREEK. These keys generate Greek letters on the letter keys (thus the name), and a few
+  mathematical symbols on other keys. They correspond to the notations on the front of traditional
+  Space Cadet keys; if your capset doesn't include those (alas, most don't), they're the "pretty
+  obvious" mappings.
+* The CADET key, to the right of GREEK, activates the CADET layer. These are the symbols above the
+  letters on a Space Cadet layout. CADET+SHIFT activates the SHIFTCADET layer, with even more
+  symbols.
+* The FUNCTION key, to the right of CADET, activates the function layer. This is where you have a
+  reset mechanism, a selector for which Unicode input type you want, and so on.
+
+Additionally, GREEK+ALT is equivalent to CADET. This is handy for other keyboards where you don't
+have room for this many modifiers.
+
+The lock keys are:
+
+* Caps lock, if you use it, will also act as a "shift lock" for the Greek and Cadet layers. Shift
+  lock is slightly different, in that while it is engaged shift will _dis_engage it; that's actually
+  pretty useful when typing math.
+* An additional "layer lock" key, by default where "num lock" usually goes, will lock the choice of
+  base layer. To use it, hold down any invocation of the GREEK or CADET layers, or none at all, and
+  hit lock; it will then put you in that layer. The corresponding modifier key will then toggle you
+  back to the QWERTY layer. (So for example, if you hit GREEK+LAYER_LOCK and release them, you're
+  now typing in Greek; the GREEK modifier would cause you to type QWERTY momentarily. To go back to
+  ordinary QWERTY mode, you'd just hit LAYER_LOCK again with no modifiers held)
+
+To see the full layout, check out the big comment in keymap.c.
+
+*A less-simple bit: Adapting this to other keyboards*
+
+This is really a canary for generic Cadet implementations. Before this can be made generic, a few
+things will have to happen:
+
+(1) Instead of a fixed keymap, this has to be refactored into some kind of array showing the
+mappings of QWERTY-layer keys onto the appropriate code points in the GREEK and CADET layers, and
+some preprocessor magic needs to auto-transform this plus a traditional keymap for the QWERTY layer
+into keymaps for all five of the core layers. (Function layers would presumably be handled on a
+per-keyboard basis)
+
+(2) The standard mapping of those should have some #define's to control things like whether there
+are physical F-keys (you would probably want to move superscript and subscripts onto the numbers if
+there weren't, and figure out what to do with the non-numeric super/sub keys), whether you actually
+want to enable GREEK+ALT=CADET, and so on;
+
+(3) There should be support for controlling indicator LEDs based on the base layer selection,
+caps/shift lock state, and layer lock state, as well as for triggering audio on transitions;
+
+(4) All the core fancy logic in process_record_user which implements the layer handling should be
+factored out into its own function, so that keyboards can easily reuse that, too.
+
+This is a lovely TODO for future work, and could be particularly fun to go along with new releases
+of SA Symbolics and the like. Anyone interested in such things, ping me!
diff --git a/keyboards/ymdk/melody96/keymaps/zunger/rules.mk b/keyboards/ymdk/melody96/keymaps/zunger/rules.mk
new file mode 100644
index 0000000000..a61cfa33fa
--- /dev/null
+++ b/keyboards/ymdk/melody96/keymaps/zunger/rules.mk
@@ -0,0 +1,2 @@
+# You need Unicode for this map.
+UNICODE_ENABLE = yes        # Unicode
diff --git a/keyboards/ymdk/melody96/melody96.c b/keyboards/ymdk/melody96/melody96.c
new file mode 100644
index 0000000000..44e813586b
--- /dev/null
+++ b/keyboards/ymdk/melody96/melody96.c
@@ -0,0 +1 @@
+#include "melody96.h"
diff --git a/keyboards/ymdk/melody96/melody96.h b/keyboards/ymdk/melody96/melody96.h
new file mode 100644
index 0000000000..3d3bc6070c
--- /dev/null
+++ b/keyboards/ymdk/melody96/melody96.h
@@ -0,0 +1,233 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/*
+ * ┌────┬───┐                                          ┌───┬───┐
+ * │10  │11 │                                          │A3 │A6 │
+ * └────┴───┘                                          └───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │50 │51 │52 │53 │54 │55 │56 │57 │58 │B8 │B7 │B5 │B4 │B3 │B6 │B2 │B1 │B0 │63 │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┤
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │A8 │A7 │A5 │A4 │A6     │A2 │A1 │A0 │64 │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┼───┼───┼───┤    ┌─────┐ ┌───┐
+ * │30   │31 │32 │33 │34 │35 │36 │37 │38 │98 │97 │95 │94 │93   │96 │92 │91 │80 │    │93   │ │90 │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤   │ ┌──┴┐    │ ├───┤
+ * │20    │21 │22 │23 │24 │25 │26 │27 │28 │88 │87 │85 │84      │86 │82 │81 │   │ │84 │    │ │80 │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤ ├───┼────┘ └───┘
+ * │10      │12 │13 │14 │15 │16 │17 │18 │78 │77 │75 │74    │73 │76 │72 │71 │60 │ │70 │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┴───┼───┤   │ ├───┤
+ * │00  │01  │02  │06                      │08 │07 │05 │04 │03 │62     │61 │   │ │60 │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───────┴───┴───┘ └───┘
+ *                                                  ┌──────────┬───┬───┐
+ *                                                  │74        │66 │62 │
+ *                                                  └──────────┴───┴───┘
+ * ┌────┬────┬────┬────────────────────────┬─────┬─────┬───┬───┐
+ * │00  │01  │02  │06                      │08   │05   │04 │03 │
+ * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┘
+ * ┌────┬────┬────┬─────────────────────────────┬────┬────┬────┐
+ * │00  │01  │02  │06                      │08  │07  │04  │03  │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ * ┌─────┬─────┬───────────────────────────┬─────┬─────┬───┬───┐
+ * │00   │01   │06                         │08   │05   │04 │03 │
+ * └─────┴─────┴───────────────────────────┴─────┴─────┴───┴───┘
+ * ┌─────┬─────┬───────────────────────────┬────┬────┬────┬────┐
+ * │00   │01   │06                         │08  │07  │04  │03  │
+ * └─────┴─────┴───────────────────────────┴────┴────┴────┴────┘
+ * ┌─────┬─────┬───────────────────────────┬───┬───┬───┬───┬───┐
+ * │00   │01   │06                         │08 │07 │05 │04 │03 │
+ * └─────┴─────┴───────────────────────────┴───┴───┴───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │00   │01 │02   │06                         │07   │04 │03   │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬───┬───┬───┬───┐
+ * │00   │01 │02   │06                         │07 │05 │04 │03 │
+ * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────┬─────┬─────┬───┬───┐
+ * │00   │01 │02   │06                     │08   │05   │04 │03 │
+ * └─────┴───┴─────┴───────────────────────┴─────┴─────┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────┬───┬───┬───┬───┬───┐
+ * │00   │01 │02   │06                     │08 │07 │05 │04 │03 │
+ * └─────┴───┴─────┴───────────────────────┴───┴───┴───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────┬────┬────┬────┬────┐
+ * │00   │01 │02   │06                     │08  │07  │04  │03  │
+ * └─────┴───┴─────┴───────────────────────┴────┴────┴────┴────┘
+ */
+
+#define LAYOUT_all( \
+    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k90, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k84, k86, k82, k81, k80, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k70, \
+    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61, k60 \
+) { \
+    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+    { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
+    { k70, k71, k72, k73, k74, k75, k76, k77, k78 }, \
+    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
+    { k90, k91, k92, k93, k94, k95, k96, k97, k98 }, \
+    { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
+    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
+}
+
+#define LAYOUT_96_ansi( \
+    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k80, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k84, k86, k82, k81, \
+    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
+    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61 \
+) { \
+    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
+    { XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
+    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
+    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
+    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
+    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
+}
+
+#define LAYOUT_96_ansi_splitbs( \
+    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k80, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k84, k86, k82, k81, \
+    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
+    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61 \
+) { \
+    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
+    { XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
+    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
+    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
+    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
+    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
+}
+
+#define LAYOUT_96_iso( \
+    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94,      k96, k92, k91, k80, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k93, k86, k82, k81, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
+    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61 \
+) { \
+    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+    { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
+    { XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
+    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
+    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
+    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
+    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
+}
+
+#define LAYOUT_96_iso_splitbs( \
+    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94,      k96, k92, k91, k80, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k93, k86, k82, k81, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
+    k00, k01, k02,                k06,           k08, k07, k05, k04, k03, k66, k62, k61 \
+) { \
+    { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+    { k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
+    { XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
+    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
+    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
+    { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
+    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
+}
+
+#define LAYOUT_96_with60( \
+    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k93, k86, k82, k81, \
+    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75,      k74, k76, k72, k71, k60,\
+    k00, k01, k02,                k06,                k08, k07, k04, k03, k62,      k61 \
+) { \
+    { k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
+    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+    { k60, k61, k62, k63, k64, XXX, XXX, XXX, XXX }, \
+    { XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
+    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
+    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
+    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
+    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
+}
+
+#define LAYOUT_96_with60_splitbs( \
+    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k93, k86, k82, k81, \
+    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75,      k74, k76, k72, k71, k60, \
+    k00, k01, k02,                k06,                k08, k07, k04, k03, k62,      k61 \
+) { \
+    { k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
+    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+    { k60, k61, k62, k63, k64, XXX, XXX, XXX, XXX }, \
+    { XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
+    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
+    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
+    { kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
+    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
+}
+
+#define LAYOUT_96_with60_split_num0( \
+    k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
+    k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80,\
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85,      k93, k86, k82, k81, \
+    k10,      k12, k13, k14, k15, k16, k17, k18, k78, k77, k75,      k74, k76, k72, k71, k60, \
+    k00, k01, k02,                k06,                k08, k07, k04, k03, k66, k62, k61 \
+) { \
+    { k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
+    { k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
+    { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+    { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+    { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+    { k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+    { k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
+    { XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
+    { k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
+    { XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
+    { kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
+    { kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
+}
diff --git a/keyboards/ymdk/melody96/readme.md b/keyboards/ymdk/melody96/readme.md
new file mode 100644
index 0000000000..a6bf470b32
--- /dev/null
+++ b/keyboards/ymdk/melody96/readme.md
@@ -0,0 +1,19 @@
+# YMDK Melody96
+
+![melody96](https://i.imgur.com/9o0a6XFh.png)
+
+96-key Keyboard from YMDK. The PCB for this board is also commonly used in the NYM96.
+
+* Keyboard Maintainer: [superuser41](https://github.com/kaylanm)
+* Hardware Supported: melody96
+* Hardware Availability: [YMDK on Geekhack, group buy closed](https://geekhack.org/index.php?topic=93614.0),  [NYM96 on Massdrop](https://www.massdrop.com/buy/nym96-aluminum-mechanical-keyboard?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make ymdk/melody96:default
+
+Flashing example for this keyboard:
+
+    make melody96:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ymdk/melody96/rules.mk b/keyboards/ymdk/melody96/rules.mk
new file mode 100644
index 0000000000..b27013f863
--- /dev/null
+++ b/keyboards/ymdk/melody96/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes       # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
+NKRO_ENABLE = yes           # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
+AUDIO_ENABLE = no           # Audio output
-- 
cgit v1.2.3