From f7722ef9ca485e3bc4f3897bb4ccfafd69b5db82 Mon Sep 17 00:00:00 2001
From: johannbl <jblanteigne@gmail.com>
Date: Sun, 22 Mar 2020 20:28:11 -0400
Subject: [PATCH] [Keyboard] Added two new layouts for the cospad (#8502)

* creation

new numpad layout for 23 keys
creation of new keymap

* Update cospad.h

* Update info.json

* Update keymap.c

* Update keymap.c

Added a macro for the "00" key.

* added two new keymap. one for each new layout.

The new keymaps are based on the default keymap but focus on

* Update keyboards/cospad/cospad.h

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/cospad.h

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/keymaps/johannbl/numpad2/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/info.json

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/keymaps/johannbl/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/keymaps/johannbl/numpad2/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/info.json

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/keymaps/johannbl/numpad3/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/keymaps/johannbl/numpad3/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/keymaps/johannbl/numpad3/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keymap.c

layout name fix.

* Update keyboards/cospad/keymaps/johannbl/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/info.json

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/keymaps/johannbl/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/cospad/keymaps/johannbl/keymap.c

Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>

* Delete keymap.c

* Rename keyboards/cospad/keymaps/johannbl/numpad2/keymap.c to keyboards/cospad/keymaps/johannbl/split_plus_and_zero/keymap.c

* Rename keyboards/cospad/keymaps/johannbl/numpad3/keymap.c to keyboards/cospad/keymaps/johannbl/split_zero/keymap.c

* Rename keyboards/cospad/keymaps/johannbl/split_plus_and_zero/keymap.c to keyboards/cospad/keymaps/split_plus_and_zero/keymap.c

* Rename keyboards/cospad/keymaps/johannbl/split_zero/keymap.c to keyboards/cospad/keymaps/split_zero/keymap.c

* Update keyboards/cospad/keymaps/split_plus_and_zero/keymap.c

Co-Authored-By: Nick Brassel <nick@tzarc.org>

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
---
 keyboards/cospad/cospad.h                     | 64 +++++++++++++++
 keyboards/cospad/info.json                    | 67 ++++++++++++++-
 .../keymaps/split_plus_and_zero/keymap.c      | 81 +++++++++++++++++++
 keyboards/cospad/keymaps/split_zero/keymap.c  | 81 +++++++++++++++++++
 4 files changed, 292 insertions(+), 1 deletion(-)
 create mode 100644 keyboards/cospad/keymaps/split_plus_and_zero/keymap.c
 create mode 100644 keyboards/cospad/keymaps/split_zero/keymap.c

diff --git a/keyboards/cospad/cospad.h b/keyboards/cospad/cospad.h
index fc52204edaf..f5ae8961f1d 100644
--- a/keyboards/cospad/cospad.h
+++ b/keyboards/cospad/cospad.h
@@ -125,6 +125,70 @@
     { k50, ___, k52, ___ } \
 }
 
+
+/* 6x4 numpad with split Plus and 0 keys
+ * ,-------------------.
+ * | 00 | 01 | 02 | 03 |
+ * |----|----|----|----|
+ * | 10 | 11 | 12 | 13 |
+ * |----|----|----|----|
+ * | 20 | 21 | 22 | 23 |
+ * |----|----|----|----|
+ * | 30 | 31 | 32 | 33 |
+ * |----|----|----|----|
+ * | 40 | 41 | 42 |    |
+ * |----|----|----| 43 |
+ * | 50 | 51 | 52 |    |
+ * `-------------------'
+ */
+#define LAYOUT_numpad_6x4_split_plus_zero( \
+    k00, k01, k02, k03, \
+    k10, k11, k12, k13, \
+    k20, k21, k22, k23, \
+    k30, k31, k32, k33, \
+    k40, k41, k42, \
+    k50, k51, k52, k43 \
+) \
+{ \
+    { k00, k01, k02, k03 }, \
+    { k10, k11, k12, k13 }, \
+    { k20, k21, k22, k23 }, \
+    { k30, k31, k32, k33 }, \
+    { k40, k41, k42, k43 }, \
+    { k50, k51, k52, ___ } \
+}
+
+/* 6x4 numpad with split 0 key
+ * ,-------------------.
+ * | 00 | 01 | 02 | 03 |
+ * |----|----|----|----|
+ * | 10 | 11 | 12 | 13 |
+ * |----|----|----|----|
+ * | 20 | 21 | 22 |    |
+ * |----|----|----| 23 |
+ * | 30 | 31 | 32 |    |
+ * |----|----|----|----|
+ * | 40 | 41 | 42 |    |
+ * |----|----|----| 43 |
+ * | 50 | 51 | 52 |    |
+ * `-------------------'
+ */
+#define LAYOUT_numpad_6x4_split_zero( \
+    k00, k01, k02, k03, \
+    k10, k11, k12, k13, \
+    k20, k21, k22, \
+    k30, k31, k32, k23, \
+    k40, k41, k42, \
+    k50, k51, k52, k43 \
+) \
+{ \
+    { k00, k01, k02, k03 }, \
+    { k10, k11, k12, k13 }, \
+    { k20, k21, k22, k23 }, \
+    { k30, k31, k32, ___ }, \
+    { k40, k41, k42, k43 }, \
+    { k50, k51, k52, ___ } \
+}
 // Add backwards compatibility for existing keymaps
 #define cospad_bl_led_on   backlight_enable
 #define cospad_bl_led_off  backlight_disable
diff --git a/keyboards/cospad/info.json b/keyboards/cospad/info.json
index 83bf81c14df..1cd197d3fdd 100644
--- a/keyboards/cospad/info.json
+++ b/keyboards/cospad/info.json
@@ -102,6 +102,71 @@
                 {"x":2, "y":5},
                 {"x":3, "y":5}
             ]
-        }
+        },
+        "LAYOUT_numpad_6x4_split_plus_zero": {
+            "key_count": 23,
+            "layout": [
+                {"x":0, "y":0},
+                {"x":1, "y":0},
+                {"x":2, "y":0},
+                {"x":3, "y":0},
+
+                {"x":0, "y":1},
+                {"x":1, "y":1},
+                {"x":2, "y":1},
+                {"x":3, "y":1},
+
+                {"x":0, "y":2},
+                {"x":1, "y":2},
+                {"x":2, "y":2},
+                {"x":3, "y":2},
+
+                {"x":0, "y":3},
+                {"x":1, "y":3},
+                {"x":2, "y":3},
+                {"x":3, "y":3},
+
+                {"x":0, "y":4},
+                {"x":1, "y":4},
+                {"x":2, "y":4},
+
+                {"x":0, "y":5},
+                {"x":1, "y":5},
+                {"x":2, "y":5},
+                {"x":3, "y":4, "h":2}
+            ]
+        },
+        "LAYOUT_numpad_6x4_split_zero": {
+            "key_count": 22,
+            "layout": [
+                {"x":0, "y":0},
+                {"x":1, "y":0},
+                {"x":2, "y":0},
+                {"x":3, "y":0},
+
+                {"x":0, "y":1},
+                {"x":1, "y":1},
+                {"x":2, "y":1},
+                {"x":3, "y":1},
+
+                {"x":0, "y":2},
+                {"x":1, "y":2},
+                {"x":2, "y":2},
+
+                {"x":0, "y":3},
+                {"x":1, "y":3},
+                {"x":2, "y":3},
+                {"x":3, "y":2, "h":2},
+
+                {"x":0, "y":4},
+                {"x":1, "y":4},
+                {"x":2, "y":4},
+
+                {"x":0, "y":5},
+                {"x":1, "y":5},
+                {"x":2, "y":5},
+                {"x":3, "y":4, "h":2}
+            ]
+        }        
     }
 }
diff --git a/keyboards/cospad/keymaps/split_plus_and_zero/keymap.c b/keyboards/cospad/keymaps/split_plus_and_zero/keymap.c
new file mode 100644
index 00000000000..dd2ff00cd1f
--- /dev/null
+++ b/keyboards/cospad/keymaps/split_plus_and_zero/keymap.c
@@ -0,0 +1,81 @@
+#include QMK_KEYBOARD_H
+
+/* 
+ *  This keymap is based on the default keymap for the cospad.
+ *  It was adapted for the split Plus and split 0 layout focusing on the "00" key.
+ */
+
+enum custom_keycodes {
+  DBL_ZRO = SAFE_RANGE,
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case DBL_ZRO:
+      if (record->event.pressed) {
+        // when keycode DBL_ZRO is pressed
+        SEND_STRING("00");
+      } else {
+        // when keycode DBL_ZRO is released
+      }
+      break;
+
+  }
+  return true;
+};
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+    _BL,
+    _FL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Keymap _BL: (Base Layer) Default Layer
+     * ,-------------------.
+     * |Esc |TAB | FN | BS |
+     * |----|----|----|----|
+     * | NL | /  | *  | -  |
+     * |----|----|----|----|
+     * | 7  | 8  | 9  | ~  |
+     * |----|----|----|----|
+     * | 4  | 5  | 6  | +  |
+     * |----|----|----|----|
+     * | 1  | 2  | 3  |    |
+     * |----|----|----| En |
+     * | 0  | 00 | .  |    |
+     * `-------------------'
+     */
+    [_BL] = LAYOUT_numpad_6x4_split_plus_zero(
+        KC_ESC,  KC_TAB,  MO(_FL), KC_BSPC,
+        KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_P7,   KC_P8,   KC_P9,   KC_TILD,
+        KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
+        KC_P1,   KC_P2,   KC_P3,
+        KC_P0,   DBL_ZRO, KC_PDOT, KC_PENT
+    ),
+        
+    /* Keymap _FL: Function Layer
+     * ,-------------------.
+     * |RGBT|    |    |    |
+     * |----|----|----|----|
+     * |RGBM|RGBP|BTOG|    |
+     * |----|----|----|----|
+     * |HUD |HUI |BON |    |
+     * |----|----|----|----|
+     * |SAD |SAI |BOFF|    |
+     * |----|----|----|----|
+     * |VAD |VAS |BSTP|    |
+     * |----|----|----|    |
+     * |    |    |RST |    |
+     * `-------------------'
+    */
+    [_FL] = LAYOUT_numpad_6x4_split_plus_zero(
+        RGB_TOG, _______, _______, _______,
+        RGB_MOD, RGB_M_P, BL_TOGG, _______,
+        RGB_HUD, RGB_HUI, BL_ON,   _______,
+        RGB_SAD, RGB_SAI, BL_OFF,  _______,
+        RGB_VAD, RGB_VAI, BL_STEP,
+        _______, _______, RESET,   _______
+    )
+};
diff --git a/keyboards/cospad/keymaps/split_zero/keymap.c b/keyboards/cospad/keymaps/split_zero/keymap.c
new file mode 100644
index 00000000000..3a0c7d6e4ef
--- /dev/null
+++ b/keyboards/cospad/keymaps/split_zero/keymap.c
@@ -0,0 +1,81 @@
+#include QMK_KEYBOARD_H
+
+/* 
+ *  This keymap is based on the default keymap for the cospad.
+ *  It was adapted for the split 0 layout focusing on the "00" key.
+ */
+
+enum custom_keycodes {
+  DBL_ZRO = SAFE_RANGE,
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case DBL_ZRO:
+      if (record->event.pressed) {
+        // when keycode DBL_ZRO is pressed
+        SEND_STRING("00");
+      } else {
+        // when keycode DBL_ZRO is released
+      }
+      break;
+
+  }
+  return true;
+};
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+    _BL,
+    _FL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Keymap _BL: (Base Layer) Default Layer
+     * ,-------------------.
+     * |Esc |TAB | FN | BS |
+     * |----|----|----|----|
+     * | NL | /  | *  | -  |
+     * |----|----|----|----|
+     * | 7  | 8  | 9  |    |
+     * |----|----|----| +  |
+     * | 4  | 5  | 6  |    |
+     * |----|----|----|----|
+     * | 1  | 2  | 3  |    |
+     * |----|----|----| En |
+     * | 0  | 00 | .  |    |
+     * `-------------------'
+     */
+    [_BL] = LAYOUT_numpad_6x4_split_zero(
+        KC_ESC,  KC_TAB,  MO(_FL), 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,   DBL_ZRO, KC_PDOT, KC_PENT
+    ),
+        
+    /* Keymap _FL: Function Layer
+     * ,-------------------.
+     * |RGBT|    |    |    |
+     * |----|----|----|----|
+     * |RGBM|RGBP|BTOG|    |
+     * |----|----|----|----|
+     * |HUD |HUI |BON |    |
+     * |----|----|----|    |
+     * |SAD |SAI |BOFF|    |
+     * |----|----|----|----|
+     * |VAD |VAS |BSTP|    |
+     * |----|----|----|    |
+     * |    |    |RST |    |
+     * `-------------------'
+    */
+    [_FL] = LAYOUT_numpad_6x4_split_zero(
+        RGB_TOG, _______, _______, _______,
+        RGB_MOD, RGB_M_P, BL_TOGG, _______,
+        RGB_HUD, RGB_HUI, BL_ON,
+        RGB_SAD, RGB_SAI, BL_OFF,  _______,
+        RGB_VAD, RGB_VAI, BL_STEP,
+        _______, _______, RESET,   _______
+    )
+};