From 27f9f3196d39ab0ce1b72665ea4b57ff741e6dd8 Mon Sep 17 00:00:00 2001
From: Jakob <jakob@ahrer.dev>
Date: Mon, 5 Oct 2020 00:19:34 +0200
Subject: [PATCH] [Keyboard] add support for ymd75 rev3 (#10483)

* add support for ymd75 rev3

* Update keyboards/ymd75/rev3/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/ymd75/rev3/rules.mk

Co-authored-by: Ryan <fauxpark@gmail.com>

* remove DESCRIPTION

* only apply offset for rev3

Co-authored-by: Ryan <fauxpark@gmail.com>
---
 keyboards/ymd75/README.md                    |   5 +-
 keyboards/ymd75/config.h                     |   3 -
 keyboards/ymd75/info.json                    |  87 +++++++++++++-
 keyboards/ymd75/keymaps/default_iso/keymap.c |   6 +-
 keyboards/ymd75/rev1/config.h                |   1 +
 keyboards/ymd75/rev2/config.h                |   1 +
 keyboards/ymd75/rev2/rev2.h                  |   2 +-
 keyboards/ymd75/rev3/config.h                |   9 ++
 keyboards/ymd75/rev3/rev3.c                  |  32 +++++
 keyboards/ymd75/rev3/rev3.h                  | 117 +++++++++++++++++++
 keyboards/ymd75/rev3/rules.mk                |  23 ++++
 keyboards/ymd75/ymd75.h                      |   2 +
 12 files changed, 279 insertions(+), 9 deletions(-)
 create mode 100644 keyboards/ymd75/rev3/config.h
 create mode 100644 keyboards/ymd75/rev3/rev3.c
 create mode 100644 keyboards/ymd75/rev3/rev3.h
 create mode 100644 keyboards/ymd75/rev3/rules.mk

diff --git a/keyboards/ymd75/README.md b/keyboards/ymd75/README.md
index 7c4779c9f5..cb2bcbdd51 100644
--- a/keyboards/ymd75/README.md
+++ b/keyboards/ymd75/README.md
@@ -3,7 +3,10 @@
 75% keyboard from YMDK. YMDK sell the board and name it "YMD75", however revision 1 of the PCB has "MT84" printed on both sides.
 
 * Keyboard Maintainer: [Wayne K Jones](github.com/WarmCatUK)
-* Hardware Supported: YMD75/MT84 (rev1 and rev2) with the ATmega32a chip.
+* Hardware Supported: 
+   - rev1 (ATmega32a) 
+   - rev2 (ATmega32a) 
+   - rev3 (ATmega32u4)
 * Hardware Availability: <https://www.aliexpress.com/item/32812690592.html>
 
 Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/ymd75/config.h b/keyboards/ymd75/config.h
index 0ea23bc463..69102014fd 100644
--- a/keyboards/ymd75/config.h
+++ b/keyboards/ymd75/config.h
@@ -23,12 +23,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #define VENDOR_ID       0x20A0
 #define PRODUCT_ID      0x422D
-#define DEVICE_VER      0x0200
 
 #define MANUFACTURER    YMDK
 #define PRODUCT         YMD75 / MT84
-#define DESCRIPTION     75% Keyboard
-
 
 #define BACKLIGHT_PIN D4
 #define BACKLIGHT_LEVELS 12
diff --git a/keyboards/ymd75/info.json b/keyboards/ymd75/info.json
index 64412dd2fc..fe27c0c535 100644
--- a/keyboards/ymd75/info.json
+++ b/keyboards/ymd75/info.json
@@ -6,7 +6,92 @@
     "height": 6,
     "layouts": {
         "LAYOUT": {
-            "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0}, {"label":"PrtSc", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Fn", "x":15, "y":0}, {"label":"~", "x":0, "y":1}, {"label":"!", "x":1, "y":1}, {"label":"@", "x":2, "y":1}, {"label":"#", "x":3, "y":1}, {"label":"$", "x":4, "y":1}, {"label":"%", "x":5, "y":1}, {"label":"^", "x":6, "y":1}, {"label":"&", "x":7, "y":1}, {"label":"*", "x":8, "y":1}, {"label":"(", "x":9, "y":1}, {"label":")", "x":10, "y":1}, {"label":"_", "x":11, "y":1}, {"label":"+", "x":12, "y":1}, {"label":"Backspace", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "y":1}, {"label":"Tab", "x":0, "y":2, "w":1.5}, {"label":"Q", "x":1.5, "y":2}, {"label":"W", "x":2.5, "y":2}, {"label":"E", "x":3.5, "y":2}, {"label":"R", "x":4.5, "y":2}, {"label":"T", "x":5.5, "y":2}, {"label":"Y", "x":6.5, "y":2}, {"label":"U", "x":7.5, "y":2}, {"label":"I", "x":8.5, "y":2}, {"label":"O", "x":9.5, "y":2}, {"label":"P", "x":10.5, "y":2}, {"label":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"End", "x":15, "y":2}, {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, {"label":"A", "x":1.75, "y":3}, {"label":"S", "x":2.75, "y":3}, {"label":"D", "x":3.75, "y":3}, {"label":"F", "x":4.75, "y":3}, {"label":"G", "x":5.75, "y":3}, {"label":"H", "x":6.75, "y":3}, {"label":"J", "x":7.75, "y":3}, {"label":"K", "x":8.75, "y":3}, {"label":"L", "x":9.75, "y":3}, {"label":":", "x":10.75, "y":3}, {"label":"\"", "x":11.75, "y":3}, {"label":"Enter", "x":12.75, "y":3, "w":2.25}, {"label":"Page Up", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"label":"Z", "x":2.25, "y":4}, {"label":"X", "x":3.25, "y":4}, {"label":"C", "x":4.25, "y":4}, {"label":"V", "x":5.25, "y":4}, {"label":"B", "x":6.25, "y":4}, {"label":"N", "x":7.25, "y":4}, {"label":"M", "x":8.25, "y":4}, {"label":"<", "x":9.25, "y":4}, {"label":">", "x":10.25, "y":4}, {"label":"?", "x":11.25, "y":4}, {"label":"Shift", "x":12.25, "y":4, "w":1.75}, {"label":"\u2191", "x":14, "y":4}, {"label":"Page Down", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"GUI", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
+            "layout": [
+                {"label":"Esc", "x":0, "y":0},
+                {"label":"F1", "x":1, "y":0},
+                {"label":"F2", "x":2, "y":0},
+                {"label":"F3", "x":3, "y":0},
+                {"label":"F4", "x":4, "y":0},
+                {"label":"F5", "x":5, "y":0},
+                {"label":"F6", "x":6, "y":0},
+                {"label":"F7", "x":7, "y":0},
+                {"label":"F8", "x":8, "y":0},
+                {"label":"F9", "x":9, "y":0},
+                {"label":"F10", "x":10, "y":0},
+                {"label":"F11", "x":11, "y":0},
+                {"label":"F12", "x":12, "y":0},
+                {"label":"PrtSc", "x":13, "y":0},
+                {"label":"Del", "x":14, "y":0},
+                {"label":"Fn", "x":15, "y":0},
+                {"label":"~", "x":0, "y":1},
+                {"label":"!", "x":1, "y":1},
+                {"label":"@", "x":2, "y":1},
+                {"label":"#", "x":3, "y":1},
+                {"label":"$", "x":4, "y":1},
+                {"label":"%", "x":5, "y":1},
+                {"label":"^", "x":6, "y":1},
+                {"label":"&", "x":7, "y":1},
+                {"label":"*", "x":8, "y":1},
+                {"label":"(", "x":9, "y":1},
+                {"label":")", "x":10, "y":1},
+                {"label":"_", "x":11, "y":1},
+                {"label":"+", "x":12, "y":1},
+                {"label":"Backspace", "x":13, "y":1, "w":2},
+                {"label":"Home", "x":15, "y":1},
+                {"label":"Tab", "x":0, "y":2, "w":1.5},
+                {"label":"Q", "x":1.5, "y":2},
+                {"label":"W", "x":2.5, "y":2},
+                {"label":"E", "x":3.5, "y":2},
+                {"label":"R", "x":4.5, "y":2},
+                {"label":"T", "x":5.5, "y":2},
+                {"label":"Y", "x":6.5, "y":2},
+                {"label":"U", "x":7.5, "y":2},
+                {"label":"I", "x":8.5, "y":2},
+                {"label":"O", "x":9.5, "y":2},
+                {"label":"P", "x":10.5, "y":2},
+                {"label":"{", "x":11.5, "y":2},
+                {"label":"}", "x":12.5, "y":2},
+                {"label":"|", "x":13.5, "y":2, "w":1.5},
+                {"label":"End", "x":15, "y":2},
+                {"label":"Caps Lock", "x":0, "y":3, "w":1.75},
+                {"label":"A", "x":1.75, "y":3},
+                {"label":"S", "x":2.75, "y":3},
+                {"label":"D", "x":3.75, "y":3},
+                {"label":"F", "x":4.75, "y":3},
+                {"label":"G", "x":5.75, "y":3},
+                {"label":"H", "x":6.75, "y":3},
+                {"label":"J", "x":7.75, "y":3},
+                {"label":"K", "x":8.75, "y":3},
+                {"label":"L", "x":9.75, "y":3},
+                {"label":":", "x":10.75, "y":3},
+                {"label":"\"", "x":11.75, "y":3},
+                {"label":"Enter", "x":12.75, "y":3, "w":2.25},
+                {"label":"Page Up", "x":15, "y":3},
+                {"label":"Shift", "x":0, "y":4, "w":2.25},
+                {"label":"Z", "x":2.25, "y":4},
+                {"label":"X", "x":3.25, "y":4},
+                {"label":"C", "x":4.25, "y":4},
+                {"label":"V", "x":5.25, "y":4},
+                {"label":"B", "x":6.25, "y":4},
+                {"label":"N", "x":7.25, "y":4},
+                {"label":"M", "x":8.25, "y":4},
+                {"label":"<", "x":9.25, "y":4},
+                {"label":">", "x":10.25, "y":4},
+                {"label":"?", "x":11.25, "y":4},
+                {"label":"Shift", "x":12.25, "y":4, "w":1.75},
+                {"label":"\u2191", "x":14, "y":4},
+                {"label":"Page Down", "x":15, "y":4},
+                {"label":"Ctrl", "x":0, "y":5, "w":1.25},
+                {"label":"GUI", "x":1.25, "y":5, "w":1.25},
+                {"label":"Alt", "x":2.5, "y":5, "w":1.25},
+                {"x":3.75, "y":5, "w":6.25},
+                {"label":"Alt", "x":10, "y":5},
+                {"label":"Fn", "x":11, "y":5},
+                {"label":"Ctrl", "x":12, "y":5},
+                {"label":"\u2190", "x":13, "y":5},
+                {"label":"\u2193", "x":14, "y":5},
+                {"label":"\u2192", "x":15, "y":5}
+            ]
         },
         "LAYOUT_75_iso": {
             "layout": [
diff --git a/keyboards/ymd75/keymaps/default_iso/keymap.c b/keyboards/ymd75/keymaps/default_iso/keymap.c
index 86af81e220..2008dddf8c 100644
--- a/keyboards/ymd75/keymaps/default_iso/keymap.c
+++ b/keyboards/ymd75/keymaps/default_iso/keymap.c
@@ -20,15 +20,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 	[1] = LAYOUT_75_iso(
 	/* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
-		 _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_MPLY,  KC_MPRV,  KC_MNXT,
+		 RESET,    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_MPLY,  KC_MPRV,  KC_MNXT,
 	/* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┼─────────┤ */
 		 _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,       _______,       KC_VOLU,
 	/* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┼─────────┤ */
-		 _______, 	    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                 KC_VOLD,
+		  RGB_MOD,      RGB_TOG,  RGB_HUI,  RGB_HUD,  RGB_SAI,  RGB_SAD,  RGB_VAI,  RGB_VAD,  _______,  _______,  _______,  _______,  _______,                 KC_VOLD,
 	/* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬           ├─────────┤ */
 		 _______,          _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,   _______,
 	/* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┼─────────┤ */
-		 _______,    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,      _______,  _______,
+		 _______,    _______,  _______,  _______,  BL_DEC,   BL_INC,   BL_STEP,  BL_TOGG,  _______,  _______,  _______,  _______,      _______,      _______,  _______,
 	/* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┼─────────┤ */
 		 _______,    _______,    _______,                                _______,                            _______,  _______,  _______,  _______,  _______,  _______
 	/* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
diff --git a/keyboards/ymd75/rev1/config.h b/keyboards/ymd75/rev1/config.h
index e9009ee0eb..d9796d9d72 100644
--- a/keyboards/ymd75/rev1/config.h
+++ b/keyboards/ymd75/rev1/config.h
@@ -25,3 +25,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
 #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
 #define DIODE_DIRECTION COL2ROW
+#define DEVICE_VER      0x0100
diff --git a/keyboards/ymd75/rev2/config.h b/keyboards/ymd75/rev2/config.h
index 9718b19dd1..a9578d720d 100644
--- a/keyboards/ymd75/rev2/config.h
+++ b/keyboards/ymd75/rev2/config.h
@@ -6,3 +6,4 @@
 #define MATRIX_ROW_PINS { B7, B6, B5, B4, B3, B0 }
 #define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
 #define DIODE_DIRECTION COL2ROW
+#define DEVICE_VER      0x0200
diff --git a/keyboards/ymd75/rev2/rev2.h b/keyboards/ymd75/rev2/rev2.h
index 85e07c5766..952858382b 100644
--- a/keyboards/ymd75/rev2/rev2.h
+++ b/keyboards/ymd75/rev2/rev2.h
@@ -30,7 +30,7 @@
 	{ K200,  K201,  K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  KC_NO, K214 }, \
 	{ K300,  K301,  K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314 }, \
 	{ K400,  K401,  K402,  K403,  K404,  K405,  K406,  K407,  K408,  K409,  K410,  K411,  K412,  K413,  K414 }, \
-	{ K500,  K501,  K502,  KC_NO, KC_NO, K505,  K506,  K507,  K508,  K509,  K510,  K511,  KC_NO, K513, K514 }  \
+	{ K500,  K501,  K502,  KC_NO, KC_NO, K505,  K506,  K507,  K508,  K509,  K510,  K511,  KC_NO, K513,  K514 }  \
 }
 
 #define LAYOUT_75_iso_rwkl( \
diff --git a/keyboards/ymd75/rev3/config.h b/keyboards/ymd75/rev3/config.h
new file mode 100644
index 0000000000..6118b96b8b
--- /dev/null
+++ b/keyboards/ymd75/rev3/config.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 9
+#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 DIODE_DIRECTION ROW2COL
+#define DEVICE_VER      0x0300
+#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 4
diff --git a/keyboards/ymd75/rev3/rev3.c b/keyboards/ymd75/rev3/rev3.c
new file mode 100644
index 0000000000..96e1a47549
--- /dev/null
+++ b/keyboards/ymd75/rev3/rev3.c
@@ -0,0 +1,32 @@
+/*
+Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
+
+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 "ymd75.h"
+
+void keyboard_pre_init_kb(void) {
+    led_init_ports();
+    keyboard_pre_init_user();
+}
+
+void led_init_ports(void) { setPinOutput(D1); }
+
+bool led_update_kb(led_t led_state) {
+    if (led_update_user(led_state)) {
+        writePin(D1, led_state.caps_lock);
+    }
+    return true;
+}
diff --git a/keyboards/ymd75/rev3/rev3.h b/keyboards/ymd75/rev3/rev3.h
new file mode 100644
index 0000000000..d25579eabb
--- /dev/null
+++ b/keyboards/ymd75/rev3/rev3.h
@@ -0,0 +1,117 @@
+#pragma once
+#include "quantum.h"
+
+
+/* LAYOUT
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Psc│Pse│Del│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │0  │ - │ = │BckSpc │Hm │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │End│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter  │PgU│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │PgD│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │Ctrl│Sup │Alt │          Space         │Alt│Sup│Ctl│ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+
+#define LAYOUT( \
+    K50, K51, K52, K53, K54, K55, K56, K57, K58, KB8, KB7, KB5, KB4, KB3, KB6, KB2,   \
+    K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, KA6,      KA2,   \
+    K30,   K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K94,  K84,   K96,   \
+    K20,    K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K93,        K86,   \
+    K10,       K12, K13, K14, K15, K16, K17, K18, K78, K77, K75, K74,     K73, K76,   \
+    K00,  K01,  K02,              K06,                K08, K07, K05, K04, K03, K66    \
+) { \
+    { K00,   K01,   K02,   K03,   K04,   K05,   K06,   K07,   K08   }, \
+    { K10,   KC_NO, 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   }, \
+    { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K66,   KC_NO, KC_NO }, \
+    { KC_NO, KC_NO, KC_NO, K73,   K74,   K75,   K76,   K77,   K78   }, \
+    { KC_NO, KC_NO, KC_NO, KC_NO, K84,   K85,   K86,   K87,   K88   }, \
+    { KC_NO, KC_NO, KC_NO, K93,   K94,   K95,   K96,   K97,   K98   }, \
+    { KC_NO, KC_NO, KA2,   KC_NO, KA4,   KA5,   KA6,   KA7,   KA8   }, \
+    { KC_NO, KC_NO, KB2,   KB3,   KB4,   KB5,   KB6,   KB7,   KB8   }, \
+}
+
+/* LAYOUT_75_iso
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Psc│Pse│Del│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │0  │ - │ = │BckSpc │Hm │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │End│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐Ent ├───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │PgU│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │ ↑ │PgD│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │Ctrl│Sup │Alt │          Space         │Alt│Mo │Ctl│ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+
+#define LAYOUT_75_iso( \
+    K50, K51, K52, K53, K54, K55, K56, K57, K58, KB8, KB7, KB5, KB4, KB3, KB6, KB2,   \
+    K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, KA6,      KA2,   \
+    K30,   K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K94,         K96,   \
+    K20,    K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K93,   K84, K86,   \
+    K10,  K11, K12, K13, K14, K15, K16, K17, K18, K78, K77, K75, K74,     K73, K76,   \
+    K00,  K01,  K02,              K06,                K08, K07, K05, K04, K03, K66    \
+) { \
+    { 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   }, \
+    { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K66,   KC_NO, KC_NO }, \
+    { KC_NO, KC_NO, KC_NO, K73,   K74,   K75,   K76,   K77,   K78   }, \
+    { KC_NO, KC_NO, KC_NO, KC_NO, K93,   K85,   K86,   K87,   K88   }, \
+    { KC_NO, KC_NO, KC_NO, K84,   K94,   K95,   K96,   K97,   K98   }, \
+    { KC_NO, KC_NO, KA2,   KC_NO, KA4,   KA5,   KA6,   KA7,   KA8   }, \
+    { KC_NO, KC_NO, KB2,   KB3,   KB4,   KB5,   KB6,   KB7,   KB8   }, \
+}
+
+/* LAYOUT_75_iso_rwkl
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Psc│Pse│Del│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │0  │ - │ = │BckSpc │Hm │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │     │End│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐Ent ├───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │    │PgU│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │ ↑ │PgD│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┤
+ * │Ctrl│Sup │Alt │          Space         │ Alt │ Ctl │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┘
+ */
+
+#define LAYOUT_75_iso_rwkl( \
+    K50, K51, K52, K53, K54, K55, K56, K57, K58, KB8, KB7, KB5, KB4, KB3, KB6, KB2,   \
+    K40, K41, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, KA6,      KA2,   \
+    K30,   K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K94,         K96,   \
+    K20,    K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K93,   K84, K86,   \
+    K10,  K11, K12, K13, K14, K15, K16, K17, K18, K78, K77, K75, K74,     K73, K76,   \
+    K00,  K01,  K02,              K06,                K08,      K05, K04, K03, K66    \
+) { \
+    { K00,   K01,   K02,   K03,   K04,   K05,   K06,   KC_NO, 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   }, \
+    { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K66,   KC_NO, KC_NO }, \
+    { KC_NO, KC_NO, KC_NO, K73,   K74,   K75,   K76,   K77,   K78   }, \
+    { KC_NO, KC_NO, KC_NO, KC_NO, K93,   K85,   K86,   K87,   K88   }, \
+    { KC_NO, KC_NO, KC_NO, K84,   K94,   K95,   K96,   K97,   K98   }, \
+    { KC_NO, KC_NO, KA2,   KC_NO, KA4,   KA5,   KA6,   KA7,   KA8   }, \
+    { KC_NO, KC_NO, KB2,   KB3,   KB4,   KB5,   KB6,   KB7,   KB8   }, \
+}
diff --git a/keyboards/ymd75/rev3/rules.mk b/keyboards/ymd75/rev3/rules.mk
new file mode 100644
index 0000000000..9506e636d2
--- /dev/null
+++ b/keyboards/ymd75/rev3/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = full     # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no        # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = yes        # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no            # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no       # Enable Bluetooth
+AUDIO_ENABLE = no           # Audio output
+KEY_LOCK_ENABLE = yes       # Enable KC_LOCK support
diff --git a/keyboards/ymd75/ymd75.h b/keyboards/ymd75/ymd75.h
index afeb095670..134f08060f 100644
--- a/keyboards/ymd75/ymd75.h
+++ b/keyboards/ymd75/ymd75.h
@@ -6,4 +6,6 @@
     #include "rev1.h"
 #elif defined(KEYBOARD_ymd75_rev2)
     #include "rev2.h"
+#elif defined(KEYBOARD_ymd75_rev3)
+    #include "rev3.h"
 #endif