From b62829031de1ae2e5e1efaa35606981c04c443c3 Mon Sep 17 00:00:00 2001
From: James Young <18669334+noroadsleft@users.noreply.github.com>
Date: Fri, 7 Feb 2020 19:15:35 -0800
Subject: [PATCH] [Keyboard] YMDK NP21: matrix and keymap refactor (#8112)

* YMDK NP21: matrix and keymap refactor

- refactored layout macros
  - LAYOUT_ortho_6x4 orients the keyboard with the USB port to the back instead of to the right
  - LAYOUT uses the previous sideways orientation (included for backwards compatibility)
- removed redundant includes from ymdk_np21.h
- added a readme for the default keymap

* add Configurator layout support
---
 keyboards/ymdk_np21/info.json                 | 69 +++++++++++++++++++
 keyboards/ymdk_np21/keymaps/default/keymap.c  | 56 ++++++---------
 keyboards/ymdk_np21/keymaps/default/readme.md | 26 +++++++
 keyboards/ymdk_np21/ymdk_np21.h               | 32 ++++++---
 4 files changed, 137 insertions(+), 46 deletions(-)
 create mode 100644 keyboards/ymdk_np21/info.json
 create mode 100644 keyboards/ymdk_np21/keymaps/default/readme.md

diff --git a/keyboards/ymdk_np21/info.json b/keyboards/ymdk_np21/info.json
new file mode 100644
index 0000000000..b17059a1cd
--- /dev/null
+++ b/keyboards/ymdk_np21/info.json
@@ -0,0 +1,69 @@
+{
+    "keyboard_name": "YMDK NP21",
+    "url": "",
+    "maintainer": "qmk",
+    "layouts": {
+        "LAYOUT_ortho_6x4": {
+            "width": 4,
+            "height": 6.25,
+            "key_count": 24,
+            "layout": [
+                {"label":"K06", "x":0, "y":0},
+                {"label":"K16", "x":1, "y":0},
+                {"label":"K26", "x":2, "y":0},
+                {"label":"K36", "x":3, "y":0},
+                {"label":"K05", "x":0, "y":1.25},
+                {"label":"K15", "x":1, "y":1.25},
+                {"label":"K25", "x":2, "y":1.25},
+                {"label":"K35", "x":3, "y":1.25},
+                {"label":"K04", "x":0, "y":2.25},
+                {"label":"K14", "x":1, "y":2.25},
+                {"label":"K24", "x":2, "y":2.25},
+                {"label":"K34", "x":3, "y":2.25},
+                {"label":"K03", "x":0, "y":3.25},
+                {"label":"K13", "x":1, "y":3.25},
+                {"label":"K23", "x":2, "y":3.25},
+                {"label":"K33", "x":3, "y":3.25},
+                {"label":"K02", "x":0, "y":4.25},
+                {"label":"K12", "x":1, "y":4.25},
+                {"label":"K22", "x":2, "y":4.25},
+                {"label":"K32", "x":3, "y":4.25},
+                {"label":"K01", "x":0, "y":5.25},
+                {"label":"K11", "x":1, "y":5.25},
+                {"label":"K21", "x":2, "y":5.25},
+                {"label":"K31", "x":3, "y":5.25}
+            ]
+        },
+        "LAYOUT": {
+            "width": 6.25,
+            "height": 4,
+            "key_count": 24,
+            "layout": [
+                {"label":"K01", "x":0, "y":0},
+                {"label":"K02", "x":1, "y":0},
+                {"label":"K03", "x":2, "y":0},
+                {"label":"K04", "x":3, "y":0},
+                {"label":"K05", "x":4, "y":0},
+                {"label":"K06", "x":5.25, "y":0},
+                {"label":"K11", "x":0, "y":1},
+                {"label":"K12", "x":1, "y":1},
+                {"label":"K13", "x":2, "y":1},
+                {"label":"K14", "x":3, "y":1},
+                {"label":"K15", "x":4, "y":1},
+                {"label":"K16", "x":5.25, "y":1},
+                {"label":"K21", "x":0, "y":2},
+                {"label":"K22", "x":1, "y":2},
+                {"label":"K23", "x":2, "y":2},
+                {"label":"K24", "x":3, "y":2},
+                {"label":"K25", "x":4, "y":2},
+                {"label":"K26", "x":5.25, "y":2},
+                {"label":"K31", "x":0, "y":3},
+                {"label":"K32", "x":1, "y":3},
+                {"label":"K33", "x":2, "y":3},
+                {"label":"K34", "x":3, "y":3},
+                {"label":"K35", "x":4, "y":3},
+                {"label":"K36", "x":5.25, "y":3}
+            ]
+        }
+    }
+}
diff --git a/keyboards/ymdk_np21/keymaps/default/keymap.c b/keyboards/ymdk_np21/keymaps/default/keymap.c
index 3ade30479f..143f4f61bb 100644
--- a/keyboards/ymdk_np21/keymaps/default/keymap.c
+++ b/keyboards/ymdk_np21/keymaps/default/keymap.c
@@ -1,7 +1,7 @@
 #include QMK_KEYBOARD_H
 
 #define _NP 0
-#define _BL  1
+#define _BL 1
 
 enum custom_keycodes {
   NP = SAFE_RANGE,
@@ -9,38 +9,24 @@ enum custom_keycodes {
 };
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Qwerty
- * ,-----------------------------------------.
- * |   0  |   1  |   4  |   7  | NUM  | ESC  |
- * |------+------+------+------+------+------|
- * |   .  |   2  |   5  |   8  |   /  | TAB  |---,
- * |------+------+------+------+------+------|USB|
- * |  DOT |   3  |   6  |   9  |   *  | BS   |---'
- * |------+------+------+------+------+------|
- * | Enter| Enter|   +  |   +  |   -  | FN   |
- * `-----------------------------------------'
- */
-[_NP] = LAYOUT( \
-  KC_KP_0,     KC_KP_1,     KC_KP_4,    KC_KP_7,    KC_NUMLOCK,     KC_ESC,    \
-  KC_DOT,      KC_KP_2,     KC_KP_5,    KC_KP_8,    KC_KP_SLASH,    KC_TAB,    \
-  KC_KP_DOT,   KC_KP_3,     KC_KP_6,    KC_KP_9,    KC_KP_ASTERISK, KC_BSPACE, \
-  KC_KP_ENTER, KC_KP_ENTER, KC_KP_PLUS, KC_KP_PLUS, KC_KP_MINUS,    MO(_BL)     \
-),
-/* Qwerty
- * ,---------------------------------------------.
- * | BL_BRTG |        |         |        |   |   |
- * |---------+--------+---------+--------+---+---|
- * |         | BL_OFF | BL_TOGG | BL_ON  |   |   |---,
- * |---------+--------+---------+--------+---+---|USB|
- * |         |        |         |        |   |   |---'
- * |---------+--------+---------+--------+---+---|
- * | BL_DEC  | BL_DEC | BL_INC  | BL_INC |   |   |
- * `---------------------------------------------'
- */
-[_BL] = LAYOUT( \
-  BL_BRTG, _______, _______, _______, _______, _______, \
-  _______, BL_OFF,  BL_TOGG, BL_ON,   _______, _______, \
-  _______, _______, _______, _______, _______, _______, \
-  BL_DEC,  BL_DEC,  BL_INC,  BL_INC,  _______, _______  \
-)
+  /* Qwerty */
+
+  [_NP] = LAYOUT_ortho_6x4(
+    KC_ESC,  KC_TAB,  KC_BSPC, MO(_BL),
+    KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+    KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+    KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+    KC_P1,   KC_P2,   KC_P3,   KC_PENT,
+    KC_P0,   KC_DOT,  KC_PDOT, KC_PENT
+  ),
+
+  [_BL] = LAYOUT_ortho_6x4(
+    _______, _______, _______, _______,
+    _______, _______, _______, _______,
+    _______, BL_ON,   _______, BL_INC,
+    _______, BL_TOGG, _______, BL_INC,
+    _______, BL_OFF,  _______, BL_DEC,
+    BL_BRTG, _______, _______, BL_DEC
+  )
+
 };
diff --git a/keyboards/ymdk_np21/keymaps/default/readme.md b/keyboards/ymdk_np21/keymaps/default/readme.md
new file mode 100644
index 0000000000..aca4c0caba
--- /dev/null
+++ b/keyboards/ymdk_np21/keymaps/default/readme.md
@@ -0,0 +1,26 @@
+# default
+
+The default keymap for the YMDK NP21 keypad.
+
+    Base Layer                               Function Layer
+                 .-----.                                  .-----.
+                 | USB |                                  | USB |
+    ,-------------------------------.        ,-------------------------------.
+    | Esc   | Tab   | Back  | Fn    |        |       |       |       |▒▒▒▒▒▒▒|
+    |       |       | Space |       |        |       |       |       |▒▒▒▒▒▒▒|
+    |-------+-------+-------+-------|        |-------+-------+-------+-------|
+    | Num   | /     | *     | -     |        |       |       |       |       |
+    | Lock  |       |       |       |        |       |       |       |       |
+    |-------+-------+-------+-------|        |-------+-------+-------+-------|
+    | 7     | 8     | 9     | +     |        |       | BL    |       | BL    |
+    | Home  | Up    | PgUp  |       |        |       | On    |       | Inc   |
+    |-------+-------+-------+-------|        |-------+-------+-------+-------|
+    | 4     | 5     | 6     | +     |        |       | BL    |       | BL    |
+    | Left  |       | Right |       |        |       | Togg  |       | Inc   |
+    |-------+-------+-------+-------|        |-------+-------+-------+-------|
+    | 1     | 2     | 3     | Ent   |        |       | BL    |       | BL    |
+    | End   | Down  | PgDn  |       |        |       | Off   |       | Dec   |
+    |-------+-------+-------+-------|        |-------+-------+-------+-------|
+    | 0     | .     | .     | Ent   |        | BL    |       |       | BL    |
+    | Ins   |       | Del   |       |        | Brthg |       |       | Dec   |
+    `-------------------------------'        `-------------------------------'
diff --git a/keyboards/ymdk_np21/ymdk_np21.h b/keyboards/ymdk_np21/ymdk_np21.h
index 2cd2d13c21..afd3d38c7d 100644
--- a/keyboards/ymdk_np21/ymdk_np21.h
+++ b/keyboards/ymdk_np21/ymdk_np21.h
@@ -15,19 +15,17 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef KEYMAP_COMMON_H
-#define KEYMAP_COMMON_H
+#pragma once
 
 #include "quantum.h"
-#include "quantum_keycodes.h"
-#include "keycode.h"
-#include "action.h"
 
-#define LAYOUT( \
-    K01, K02, K03, K04, K05, K06, \
-    K11, K12, K13, K14, K15, K16, \
-    K21, K22, K23, K24, K25, K26, \
-    K31, K32, K33, K34, K35, K36 \
+#define LAYOUT_ortho_6x4( \
+    K06,  K16,  K26,  K36,  \
+    K05,  K15,  K25,  K35,  \
+    K04,  K14,  K24,  K34,  \
+    K03,  K13,  K23,  K33,  \
+    K02,  K12,  K22,  K32,  \
+    K01,  K11,  K21,  K31   \
 ) \
 { \
   { K06, K05, K04, K03, K02, K01 }, \
@@ -36,4 +34,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
   { K36, K35, K34, K33, K32, K31 }  \
 }
 
-#endif
+#define LAYOUT( \
+    K01, K02, K03, K04, K05, K06, \
+    K11, K12, K13, K14, K15, K16, \
+    K21, K22, K23, K24, K25, K26, \
+    K31, K32, K33, K34, K35, K36 \
+) LAYOUT_ortho_6x4( \
+    K06,  K16,  K26,  K36,  \
+    K05,  K15,  K25,  K35,  \
+    K04,  K14,  K24,  K34,  \
+    K03,  K13,  K23,  K33,  \
+    K02,  K12,  K22,  K32,  \
+    K01,  K11,  K21,  K31   \
+)