From 13206b2f87b1bce87d58cdfdddb1bcc7b58e4a24 Mon Sep 17 00:00:00 2001
From: Ryan <fauxpark@gmail.com>
Date: Thu, 28 May 2020 11:27:14 +1000
Subject: [PATCH] Community layout support for KBDpad Mk.I (#9220)

* Community layout support for KBDpad Mk.I

* Matching spacing
---
 keyboards/kbdfans/kbdpad/mk1/info.json        | 108 ++++++++++++++++--
 .../kbdpad/mk1/keymaps/default/keymap.c       |  15 +--
 keyboards/kbdfans/kbdpad/mk1/mk1.h            |  63 +++++++---
 keyboards/kbdfans/kbdpad/mk1/readme.md        |   6 +-
 keyboards/kbdfans/kbdpad/mk1/rules.mk         |   2 +
 5 files changed, 159 insertions(+), 35 deletions(-)

diff --git a/keyboards/kbdfans/kbdpad/mk1/info.json b/keyboards/kbdfans/kbdpad/mk1/info.json
index 4f0da62e83..68e8f68515 100644
--- a/keyboards/kbdfans/kbdpad/mk1/info.json
+++ b/keyboards/kbdfans/kbdpad/mk1/info.json
@@ -1,12 +1,100 @@
 {
-  "keyboard_name": "KBDfans KBDPad MKI", 
-  "url": "https://kbdfans.com/products/kbdfans-pad-custom-mechanical-keyboard-diy-kit", 
-  "maintainer": "qmk", 
-  "width": 4, 
-  "height": 6.25, 
-  "layouts": {
-      "LAYOUT": {
-          "layout": [{"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":2.25, "h":2}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":0, "y":5.25, "w":2}, {"x":2, "y":5.25}, {"x":3, "y":4.25, "h":2}]
-      }
-  }
+    "keyboard_name": "KBDfans KBDPad MKI",
+    "url": "https://kbdfans.com/products/kbdfans-pad-custom-mechanical-keyboard-diy-kit",
+    "maintainer": "qmk",
+    "width": 4,
+    "height": 6.25,
+    "layouts": {
+        "LAYOUT": {
+            "layout": [
+                {"x":2, "y":0},
+                {"x":3, "y":0},
+
+                {"x":0, "y":1.25},
+                {"x":1, "y":1.25},
+                {"x":2, "y":1.25},
+                {"x":3, "y":1.25},
+
+                {"x":0, "y":2.25},
+                {"x":1, "y":2.25},
+                {"x":2, "y":2.25},
+
+                {"x":0, "y":3.25},
+                {"x":1, "y":3.25},
+                {"x":2, "y":3.25},
+                {"x":3, "y":2.25, "h":2},
+
+                {"x":0, "y":4.25},
+                {"x":1, "y":4.25},
+                {"x":2, "y":4.25},
+
+                {"x":0, "y":5.25, "w":2},
+                {"x":2, "y":5.25},
+                {"x":3, "y":4.25, "h":2}
+            ]
+        },
+        "LAYOUT_numpad_6x4": {
+            "layout": [
+                {"x":0, "y":0},
+                {"x":1, "y":0},
+                {"x":2, "y":0},
+                {"x":3, "y":0},
+
+                {"x":0, "y":1.25},
+                {"x":1, "y":1.25},
+                {"x":2, "y":1.25},
+                {"x":3, "y":1.25},
+
+                {"x":0, "y":2.25},
+                {"x":1, "y":2.25},
+                {"x":2, "y":2.25},
+
+                {"x":0, "y":3.25},
+                {"x":1, "y":3.25},
+                {"x":2, "y":3.25},
+                {"x":3, "y":2.25, "h":2},
+
+                {"x":0, "y":4.25},
+                {"x":1, "y":4.25},
+                {"x":2, "y":4.25},
+
+                {"x":0, "y":5.25, "w":2},
+                {"x":2, "y":5.25},
+                {"x":3, "y":4.25, "h":2}
+            ]
+        },
+        "LAYOUT_ortho_6x4": {
+            "layout": [
+                {"x":0, "y":0},
+                {"x":1, "y":0},
+                {"x":2, "y":0},
+                {"x":3, "y":0},
+
+                {"x":0, "y":1.25},
+                {"x":1, "y":1.25},
+                {"x":2, "y":1.25},
+                {"x":3, "y":1.25},
+
+                {"x":0, "y":2.25},
+                {"x":1, "y":2.25},
+                {"x":2, "y":2.25},
+                {"x":3, "y":2.25},
+
+                {"x":0, "y":3.25},
+                {"x":1, "y":3.25},
+                {"x":2, "y":3.25},
+                {"x":3, "y":3.25},
+
+                {"x":0, "y":4.25},
+                {"x":1, "y":4.25},
+                {"x":2, "y":4.25},
+                {"x":3, "y":4.25},
+
+                {"x":0, "y":5.25},
+                {"x":1, "y":5.25},
+                {"x":2, "y":5.25},
+                {"x":3, "y":5.25}
+            ]
+        }
+    }
 }
diff --git a/keyboards/kbdfans/kbdpad/mk1/keymaps/default/keymap.c b/keyboards/kbdfans/kbdpad/mk1/keymaps/default/keymap.c
index 2d5053e0b6..58f2c597e7 100644
--- a/keyboards/kbdfans/kbdpad/mk1/keymaps/default/keymap.c
+++ b/keyboards/kbdfans/kbdpad/mk1/keymaps/default/keymap.c
@@ -17,11 +17,12 @@
 #include QMK_KEYBOARD_H
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT(\
-  KC_DEL,  KC_BSPC,                    \
-  KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,  \
-  KC_P7,   KC_P8,   KC_P9,             \
-  KC_P4,   KC_P5,   KC_P6,   KC_PPLS,  \
-  KC_P1,   KC_P2,   KC_P3,             \
-  KC_P0,   KC_PDOT, KC_PENT)           \
+    [0] = LAYOUT(
+                          KC_DEL,  KC_BSPC,
+        KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_P7,   KC_P8,   KC_P9,
+        KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+        KC_P1,   KC_P2,   KC_P3,
+        KC_P0,            KC_PDOT, KC_PENT
+    )
 };
diff --git a/keyboards/kbdfans/kbdpad/mk1/mk1.h b/keyboards/kbdfans/kbdpad/mk1/mk1.h
index ace7466f54..36b0287278 100644
--- a/keyboards/kbdfans/kbdpad/mk1/mk1.h
+++ b/keyboards/kbdfans/kbdpad/mk1/mk1.h
@@ -13,26 +13,59 @@
  * 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
 
 #include "quantum.h"
 
-// This a shortcut to help you visually see your layout.
+// This is a shortcut to help you visually see your layout.
 // The first section contains all of the arguments
 // The second converts the arguments into a two-dimensional array
 
-#define LAYOUT(   \
-  k52,  k53,           \
-  k40, k41, k42, k43,  \
-  k30, k31, k32,       \
-  k20, k21, k22, k23,  \
-  k10, k11, k12,       \
-  k00, k02, k03        \
-){ \
-  { k00,   KC_NO, k02, k03   }, \
-  { k10,   k11,   k12, KC_NO }, \
-  { k20,   k21,   k22, k23   }, \
-  { k30,   k31,   k32, KC_NO }, \
-  { k40,   k41,   k42, k43   }, \
-  { KC_NO, KC_NO, k52, k53   }, \
+#define LAYOUT( \
+              k52, k53, \
+    k40, k41, k42, k43, \
+    k30, k31, k32, \
+    k20, k21, k22, k23, \
+    k10, k11, k12, \
+    k00,      k02, k03 \
+) { \
+    { k00,   KC_NO, k02, k03   }, \
+    { k10,   k11,   k12, KC_NO }, \
+    { k20,   k21,   k22, k23   }, \
+    { k30,   k31,   k32, KC_NO }, \
+    { k40,   k41,   k42, k43   }, \
+    { KC_NO, KC_NO, k52, k53   } \
+}
+
+#define LAYOUT_numpad_6x4( \
+    k50, k51, k52, k53, \
+    k40, k41, k42, k43, \
+    k30, k31, k32, \
+    k20, k21, k22, k23, \
+    k10, k11, k12, \
+    k00,      k02, k03 \
+) { \
+    { k00, KC_NO, k02, k03   }, \
+    { k10, k11,   k12, KC_NO }, \
+    { k20, k21,   k22, k23   }, \
+    { k30, k31,   k32, KC_NO }, \
+    { k40, k41,   k42, k43   }, \
+    { k50, k51,   k52, k53   } \
+}
+
+#define LAYOUT_ortho_6x4( \
+    k50, k51, k52, k53, \
+    k40, k41, k42, k43, \
+    k30, k31, k32, k33, \
+    k20, k21, k22, k23, \
+    k10, k11, k12, k13, \
+    k00, k01, k02, k03 \
+) { \
+    { k00, k01, k02, k03 }, \
+    { k10, k11, k12, k13 }, \
+    { k20, k21, k22, k23 }, \
+    { k30, k31, k32, k33 }, \
+    { k40, k41, k42, k43 }, \
+    { k50, k51, k52, k53 } \
 }
diff --git a/keyboards/kbdfans/kbdpad/mk1/readme.md b/keyboards/kbdfans/kbdpad/mk1/readme.md
index 2424d4d4d6..27194e683f 100644
--- a/keyboards/kbdfans/kbdpad/mk1/readme.md
+++ b/keyboards/kbdfans/kbdpad/mk1/readme.md
@@ -1,10 +1,10 @@
 # KBDPad MKI
 
-Custom numpad.
+Custom numpad. The MKI shares the same ATmega32A and matrix layout as the newer V2 PCB (not to be confused with the MKII, which uses an ATmega32U2!).
 
 * Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
-* Hardware Supported: KBDPad MKI
-* Hardware Availability: [KBDfans](https://kbdfans.com/products/kbdfans-pad-custom-mechanical-keyboard-diy-kit)
+* Hardware Supported: KBDPad MKI, KBDPad V2
+* Hardware Availability: [KBDfans](https://kbdfans.com/collections/20/products/kbdfans-kbdpad-pcb-v2)
 
 Make example for this keyboard (after setting up your build environment):
 
diff --git a/keyboards/kbdfans/kbdpad/mk1/rules.mk b/keyboards/kbdfans/kbdpad/mk1/rules.mk
index 6b4c1f6bae..679ac08fa8 100644
--- a/keyboards/kbdfans/kbdpad/mk1/rules.mk
+++ b/keyboards/kbdfans/kbdpad/mk1/rules.mk
@@ -20,3 +20,5 @@ COMMAND_ENABLE = no
 BACKLIGHT_ENABLE = yes
 RGBLIGHT_ENABLE = no  # PCB has underglow LEDs, but case doesn't let them show.
 WS2812_DRIVER = i2c
+
+LAYOUTS = ortho_6x4 numpad_6x4