[Keyboard] Cospad refactor (#7957) 0.7.116
authorfauxpark <fauxpark@gmail.com>
Wed, 22 Jan 2020 02:21:47 +0000 (13:21 +1100)
committerDrashna Jaelre <drashna@live.com>
Wed, 22 Jan 2020 02:21:47 +0000 (18:21 -0800)
* Cospad refactor

* Add num lock indicator code

* Add led_init_ports()

* Revert change to matrix position blanks

* Define BACKLIGHT_ON_STATE explicitly, in anticipation of PR6749

keyboards/cospad/config.h
keyboards/cospad/cospad.c
keyboards/cospad/cospad.h
keyboards/cospad/info.json
keyboards/cospad/keymaps/default/keymap.c
keyboards/cospad/readme.md
keyboards/cospad/rules.mk

index 9844f27..cfc2d59 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2020
 
 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
@@ -21,11 +21,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* USB Device descriptor parameter */
 #define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6060
+#define PRODUCT_ID      0xB1E5
 #define DEVICE_VER      0x0001
-#define MANUFACTURER    KPREPUBLIC
-#define PRODUCT         COSPAD
-#define DESCRIPTION     QMK keyboard firmware for COSPAD
+#define MANUFACTURER    KPrepublic
+#define PRODUCT         Cospad
+#define DESCRIPTION     6x4 numpad with underglow and backlighting
 
 /* key matrix size */
 #define MATRIX_ROWS 6
@@ -40,22 +40,51 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
  *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
  *
-*/
+ */
 #define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5 }
 #define MATRIX_COL_PINS { F0, F1, E6, C7 }
 #define UNUSED_PINS
 
-/* COL2ROW or ROW2COL */
+/* COL2ROW, ROW2COL */
 #define DIODE_DIRECTION COL2ROW
 
-/* Backlight configuration */
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0  // or D1, D2, D3, E6
+
 #define BACKLIGHT_PIN F7
-#define BACKLIGHT_LEVELS 1
+// #define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+#define BACKLIGHT_ON_STATE 0
 
-/* Underlight configuration */
 #define RGB_DI_PIN F6
-#define RGBLED_NUM 4
-#define RGBLIGHT_ANIMATIONS
+#ifdef RGB_DI_PIN
+    #define RGBLED_NUM 4
+//   #define RGBLIGHT_HUE_STEP 8
+//   #define RGBLIGHT_SAT_STEP 8
+//   #define RGBLIGHT_VAL_STEP 8
+//   #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//   #define RGBLIGHT_SLEEP  /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+// /*== all animations enable ==*/
+    #define RGBLIGHT_ANIMATIONS
+// /*== or choose animations ==*/
+//   #define RGBLIGHT_EFFECT_BREATHING
+//   #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//   #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//   #define RGBLIGHT_EFFECT_SNAKE
+//   #define RGBLIGHT_EFFECT_KNIGHT
+//   #define RGBLIGHT_EFFECT_CHRISTMAS
+//   #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//   #define RGBLIGHT_EFFECT_RGB_TEST
+//   #define RGBLIGHT_EFFECT_ALTERNATING
+// /*== customize breathing effect ==*/
+//   /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//   #define RGBLIGHT_BREATHE_TABLE_SIZE 256      // 256(default) or 128 or 64
+//   /*==== use exp() and sin() ====*/
+//   #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85  // 1 to 2.7
+//   #define RGBLIGHT_EFFECT_BREATHE_MAX    255   // 0 to 255
+#endif
 
 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 #define DEBOUNCE 5
@@ -64,10 +93,89 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define MATRIX_HAS_GHOST
 
 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-//#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_SUPPORT_ENABLE
 /* Locking resynchronize hack */
 #define LOCKING_RESYNC_ENABLE
 
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP           H
+//#define MAGIC_KEY_HELP_ALT       SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER0_ALT     GRAVE
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_EEPROM_CLEAR   BSPACE
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
@@ -83,8 +191,62 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_LAYER
 //#define NO_ACTION_TAPPING
 //#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
+
+/* disable these deprecated features by default */
+#ifndef LINK_TIME_OPTIMIZATION_ENABLE
+  #define NO_ACTION_MACRO
+  #define NO_ACTION_FUNCTION
+#endif
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+/*
+ * HD44780 LCD Display Configuration
+ */
+/*
+#define LCD_LINES           2     //< number of visible lines of the display
+#define LCD_DISP_LENGTH    16     //< visibles characters per line of the display
+
+#define LCD_IO_MODE      1            //< 0: memory mapped mode, 1: IO port mode
+
+#if LCD_IO_MODE
+#define LCD_PORT         PORTB        //< port for the LCD lines
+#define LCD_DATA0_PORT   LCD_PORT     //< port for 4bit data bit 0
+#define LCD_DATA1_PORT   LCD_PORT     //< port for 4bit data bit 1
+#define LCD_DATA2_PORT   LCD_PORT     //< port for 4bit data bit 2
+#define LCD_DATA3_PORT   LCD_PORT     //< port for 4bit data bit 3
+#define LCD_DATA0_PIN    4            //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN    5            //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN    6            //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN    7            //< pin for 4bit data bit 3
+#define LCD_RS_PORT      LCD_PORT     //< port for RS line
+#define LCD_RS_PIN       3            //< pin  for RS line
+#define LCD_RW_PORT      LCD_PORT     //< port for RW line
+#define LCD_RW_PIN       2            //< pin  for RW line
+#define LCD_E_PORT       LCD_PORT     //< port for Enable line
+#define LCD_E_PIN        1            //< pin  for Enable line
+#endif
+*/
 
 /* Bootmagic Lite key configuration */
 // #define BOOTMAGIC_LITE_ROW 0
index e7ef71f..c1f3a70 100644 (file)
@@ -1,5 +1,4 @@
-    
-/* Copyright 2019
+/* Copyright 2020
  *
  * 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
  */
 #include "cospad.h"
 
-#ifdef BACKLIGHT_ENABLE
-
-void backlight_init_ports(void) {
-  setPinOutput(F7);
+void keyboard_pre_init_kb(void) {
+    led_init_ports();
+    keyboard_pre_init_user();
 }
 
-void backlight_set(uint8_t level) {
-  writePin(F7, !!level);
+void led_init_ports(void) {
+    setPinOutput(B2);
 }
 
-void backlight_task(void) {
-    // do nothing - as default implementation of software PWM does not work
+bool led_update_kb(led_t led_state) {
+    if (led_update_user(led_state)) {
+        writePin(B2, !led_state.num_lock);
+    }
+    return true;
 }
-
-#endif //BACKLIGHT_ENABLE
dissimilarity index 62%
index ad3ca0d..fc52204 100644 (file)
-
-/* Copyright 2019
- *
- * 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
-
-#include "quantum.h"
-#define ___ KC_NO
-
-/* This a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
- */
-
-/* COSPAD ortho matrix layout
-   * ,-------------------.
-   * | 00 | 01 | 02 | 03 |
-   * |----|----|----|----|
-   * | 10 | 11 | 12 | 13 |
-   * |----|----|----|----|
-   * | 20 | 21 | 22 | 23 |
-   * |----|----|----|----|
-   * | 30 | 31 | 32 | 33 |
-   * |----|----|----|----|
-   * | 40 | 41 | 42 | 43 |
-   * |----|----|----|----|
-   * | 50 | 51 | 52 | 53 |
-   * `-------------------'
- */
-#define LAYOUT_ortho_6x4( \
-       k00, k01, k02, k03, \
-       k10, k11, k12, k13, \
-       k20, k21, k22, k23, \
-       k30, k31, k32, k33, \
-       k40, k41, k42, k43, \
-       k50, k51, k52, k53  \
-) \
-{ \
-       {k00, k01, k02, k03}, \
-       {k10, k11, k12, k13}, \
-       {k20, k21, k22, k23}, \
-       {k30, k31, k32, k33}, \
-       {k40, k41, k42, k43}, \
-       {k50, k51, k52, k53}  \
-}
-
-/* COSPAD gamepad matrix layout
-   * ,-------------------.
-   * | 00 | 01 | 02 | 03 |
-   * |----|----|----|----|
-   * | 10 | 11 | 12 | 13 |
-   * |----|----|----|----|
-   * | 20 | 21 | 22 |    |
-   * |----|----|----| 23 |
-   * | 30 | 31 | 32 |    |
-   * |----|----|----|----|
-   * | 40 | 41 | 42 | 43 |
-   * |----|----|----|----|
-   * | 50 | 51 | 52 | 53 |
-   * `-------------------'
- */
-#define LAYOUT_gamepad_6x4( \
-       k00, k01, k02, k03, \
-       k10, k11, k12, k13, \
-       k20, k21, k22,      \
-       k30, k31, k32, k23, \
-       k40, k41, k42, k43, \
-       k50, k51, k52, k53  \
-) \
-{ \
-       {k00, k01, k02, k03},   \
-       {k10, k11, k12, k13},   \
-       {k20, k21, k22, k23},   \
-       {k30, k31, k32, ___}, \
-       {k40, k41, k42, k43},   \
-       {k50, k51, k52, k53}    \
-}
-
-/* COSPAD numpad matrix layout
-   * ,-------------------.
-   * | 00 | 01 | 02 | 03 |
-   * |----|----|----|----|
-   * | 10 | 11 | 12 | 13 |
-   * |----|----|----|----|
-   * | 20 | 21 | 22 |    |
-   * |----|----|----| 23 |
-   * | 30 | 31 | 32 |    |
-   * |----|----|----|----|
-   * | 40 | 41 | 42 |    |
-   * |----|----|----| 43 |
-   * |    50   | 52 |    |
-   * `-------------------'
- */
-#define LAYOUT_numpad_6x4( \
-       k00, k01, k02, k03,  \
-       k10, k11, k12, k13,  \
-       k20, k21, k22,       \
-       k30, k31, k32, k23,  \
-       k40, k41, k42,       \
-       k50,      k52, k43   \
-) \
-{ \
-       {k00, k01, k02, k03},   \
-       {k10, k11, k12, k13},   \
-       {k20, k21, k22, k23},   \
-       {k30, k31, k32, ___}, \
-       {k40, k41, k42, k43},   \
-       {k50, ___, k52, ___}  \
-}
-
-// Add backwards compatibility for existing keymaps
-#define cospad_bl_led_on   backlight_enable
-#define cospad_bl_led_off  backlight_disable
-#define cospad_bl_led_togg backlight_toggle
+/* Copyright 2020
+ *
+ * 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
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+/* 6x4 ortholinear layout
+ * ,-------------------.
+ * | 00 | 01 | 02 | 03 |
+ * |----|----|----|----|
+ * | 10 | 11 | 12 | 13 |
+ * |----|----|----|----|
+ * | 20 | 21 | 22 | 23 |
+ * |----|----|----|----|
+ * | 30 | 31 | 32 | 33 |
+ * |----|----|----|----|
+ * | 40 | 41 | 42 | 43 |
+ * |----|----|----|----|
+ * | 50 | 51 | 52 | 53 |
+ * `-------------------'
+ */
+#define LAYOUT_ortho_6x4( \
+    k00, k01, k02, k03, \
+    k10, k11, k12, k13, \
+    k20, k21, k22, k23, \
+    k30, k31, k32, k33, \
+    k40, k41, k42, k43, \
+    k50, k51, k52, k53 \
+) \
+{ \
+    { k00, k01, k02, k03 }, \
+    { k10, k11, k12, k13 }, \
+    { k20, k21, k22, k23 }, \
+    { k30, k31, k32, k33 }, \
+    { k40, k41, k42, k43 }, \
+    { k50, k51, k52, k53 } \
+}
+
+/* 6x4 gamepad layout
+ * ,-------------------.
+ * | 00 | 01 | 02 | 03 |
+ * |----|----|----|----|
+ * | 10 | 11 | 12 | 13 |
+ * |----|----|----|----|
+ * | 20 | 21 | 22 |    |
+ * |----|----|----| 23 |
+ * | 30 | 31 | 32 |    |
+ * |----|----|----|----|
+ * | 40 | 41 | 42 | 43 |
+ * |----|----|----|----|
+ * | 50 | 51 | 52 | 53 |
+ * `-------------------'
+ */
+#define LAYOUT_gamepad_6x4( \
+    k00, k01, k02, k03, \
+    k10, k11, k12, k13, \
+    k20, k21, k22, \
+    k30, k31, k32, k23, \
+    k40, k41, k42, k43, \
+    k50, k51, k52, k53  \
+) \
+{ \
+    { k00, k01, k02, k03 }, \
+    { k10, k11, k12, k13 }, \
+    { k20, k21, k22, k23 }, \
+    { k30, k31, k32, ___ }, \
+    { k40, k41, k42, k43 }, \
+    { k50, k51, k52, k53 } \
+}
+
+/* 6x4 numpad layout
+ * ,-------------------.
+ * | 00 | 01 | 02 | 03 |
+ * |----|----|----|----|
+ * | 10 | 11 | 12 | 13 |
+ * |----|----|----|----|
+ * | 20 | 21 | 22 |    |
+ * |----|----|----| 23 |
+ * | 30 | 31 | 32 |    |
+ * |----|----|----|----|
+ * | 40 | 41 | 42 |    |
+ * |----|----|----| 43 |
+ * |    50   | 52 |    |
+ * `-------------------'
+ */
+#define LAYOUT_numpad_6x4( \
+    k00, k01, k02, k03, \
+    k10, k11, k12, k13, \
+    k20, k21, k22, \
+    k30, k31, k32, k23, \
+    k40, k41, k42, \
+    k50,      k52, k43 \
+) \
+{ \
+    { k00, k01, k02, k03 }, \
+    { k10, k11, k12, k13 }, \
+    { k20, k21, k22, k23 }, \
+    { k30, k31, k32, ___ }, \
+    { k40, k41, k42, k43 }, \
+    { k50, ___, k52, ___ } \
+}
+
+// Add backwards compatibility for existing keymaps
+#define cospad_bl_led_on   backlight_enable
+#define cospad_bl_led_off  backlight_disable
+#define cospad_bl_led_togg backlight_toggle
dissimilarity index 99%
index c17f44f..83bf81c 100644 (file)
-{
-  "keyboard_name": "Cospad",
-  "keyboard_folder": "cospad",
-  "url": "",
-  "maintainer": "qmk",
-  "width": 4,
-  "height": 6,
-  "layouts": {
-    "LAYOUT_numpad_6x4": {
-      "key_count": 21,
-      "layout": [
-        {"label":"Esc", "x":0, "y":0},
-        {"label":"Tab", "x":1, "y":0},
-        {"label":"Fn", "x":2, "y":0},
-        {"label":"Back", "x":3, "y":0},
-        {"label":"Num Lock", "x":0, "y":1},
-        {"label":"/", "x":1, "y":1},
-        {"label":"*", "x":2, "y":1},
-        {"label":"-", "x":3, "y":1},
-        {"label":"7", "x":0, "y":2},
-        {"label":"8", "x":1, "y":2},
-        {"label":"9", "x":2, "y":2},
-        {"label":"4", "x":0, "y":3},
-        {"label":"5", "x":1, "y":3},
-        {"label":"6", "x":2, "y":3},
-        {"label":"+", "x":3, "y":2, "h":2},
-        {"label":"1", "x":0, "y":4},
-        {"label":"2", "x":1, "y":4},
-        {"label":"3", "x":2, "y":4},
-        {"label":"0", "x":0, "y":5, "w":2},
-        {"label":".", "x":2, "y":5},
-        {"label":"Enter", "x":3, "y":4, "h":2}
-      ]
-    },
-
-    "LAYOUT_gamepad_6x4": {
-      "key_count": 23,
-      "layout": [
-        {"label":"k00", "x":0, "y":0},
-        {"label":"k01", "x":1, "y":0},
-        {"label":"k02", "x":2, "y":0},
-        {"label":"k03", "x":3, "y":0},
-        {"label":"k10", "x":0, "y":1},
-        {"label":"k11", "x":1, "y":1},
-        {"label":"k12", "x":2, "y":1},
-        {"label":"k13", "x":3, "y":1},
-        {"label":"k20", "x":0, "y":2},
-        {"label":"k21", "x":1, "y":2},
-        {"label":"k22", "x":2, "y":2},
-        {"label":"k30", "x":0, "y":3},
-        {"label":"k31", "x":1, "y":3},
-        {"label":"k32", "x":2, "y":3},
-        {"label":"k23", "x":3, "y":2, "h":2},
-        {"label":"k40", "x":0, "y":4},
-        {"label":"k41", "x":1, "y":4},
-        {"label":"k42", "x":2, "y":4},
-        {"label":"k43", "x":3, "y":4},
-        {"label":"k50", "x":0, "y":5},
-        {"label":"k51", "x":1, "y":5},
-        {"label":"k52", "x":2, "y":5},
-        {"label":"k53", "x":3, "y":5}
-      ]
-    },
-
-    "LAYOUT_ortho_6x4": {
-      "key_count": 24,
-      "layout": [
-        {"label":"k00", "x":0, "y":0},
-        {"label":"k01", "x":1, "y":0},
-        {"label":"k02", "x":2, "y":0},
-        {"label":"k03", "x":3, "y":0},
-        {"label":"k10", "x":0, "y":1},
-        {"label":"k11", "x":1, "y":1},
-        {"label":"k12", "x":2, "y":1},
-        {"label":"k13", "x":3, "y":1},
-        {"label":"k20", "x":0, "y":2},
-        {"label":"k21", "x":1, "y":2},
-        {"label":"k22", "x":2, "y":2},
-        {"label":"k23", "x":3, "y":2},
-        {"label":"k30", "x":0, "y":3},
-        {"label":"k31", "x":1, "y":3},
-        {"label":"k32", "x":2, "y":3},
-        {"label":"k33", "x":3, "y":3},
-        {"label":"k40", "x":0, "y":4},
-        {"label":"k41", "x":1, "y":4},
-        {"label":"k42", "x":2, "y":4},
-        {"label":"k43", "x":3, "y":4},
-        {"label":"k50", "x":0, "y":5},
-        {"label":"k51", "x":1, "y":5},
-        {"label":"k52", "x":2, "y":5},
-        {"label":"k53", "x":3, "y":5}
-      ]
-    }
-  }
-}
+{
+    "keyboard_name": "Cospad",
+    "url": "",
+    "maintainer": "qmk",
+    "width": 4,
+    "height": 6,
+    "layouts": {
+        "LAYOUT_numpad_6x4": {
+            "key_count": 21,
+            "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, "w":2},
+                {"x":2, "y":5},
+                {"x":3, "y":4, "h":2}
+            ]
+        },
+        "LAYOUT_gamepad_6x4": {
+            "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":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":3, "y":4},
+
+                {"x":0, "y":5},
+                {"x":1, "y":5},
+                {"x":2, "y":5},
+                {"x":3, "y":5}
+            ]
+        },
+        "LAYOUT_ortho_6x4": {
+            "key_count": 24,
+            "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":3, "y":4},
+
+                {"x":0, "y":5},
+                {"x":1, "y":5},
+                {"x":2, "y":5},
+                {"x":3, "y":5}
+            ]
+        }
+    }
+}
dissimilarity index 94%
index adcca11..06b06d4 100644 (file)
@@ -1,60 +1,57 @@
-#include QMK_KEYBOARD_H
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-enum layers {
-  _BL = 0,
-  _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     | .  |    |
- * `-------------------'
- */
-  [_BL] = LAYOUT_numpad_6x4(
-    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,              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(
-    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,     _______
-  ),
-};
+#include QMK_KEYBOARD_H
+
+// 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     | .  |    |
+     * `-------------------'
+     */
+    [_BL] = LAYOUT_numpad_6x4(
+        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,            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(
+        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,   _______
+    )
+};
index 2e9add6..9bb3dfd 100644 (file)
@@ -1,18 +1,15 @@
-COSPAD
-===
+# Cospad
 
-A DIY Keypad Kit sold by KPRepublic, runs TKG natively.
+A DIY keypad kit sold by KPRepublic, runs TKG natively.
 
-Keyboard Maintainer: QMK Community  
-Hardware Supported: COSPAD  
-Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html)
-
-Only supports on and off for the backlight leds, as they are not connected to a PWM pin.
+* Keyboard Maintainer: QMK Community
+* Hardware Supported: Cospad PCB
+* Hardware Availability: [KPrepublic on Aliexpress](https://aliexpress.com/item/cospad-Custom-Mechanical-Keyboard-Kit-up-tp-24-keys-Supports-TKG-TOOLS-Underglow-RGB-PCB-20/32818383873.html)
 
 Supported Layouts:
 
-![Numpad Layout of COSPAD](https://i.imgur.com/t03lXJ4.png)
-![Ortholinear Layout of COSPAD](https://i.imgur.com/mliUcCc.png)
+![Numpad layouts](https://i.imgur.com/t03lXJ4.png)
+![Ortholinear layouts](https://i.imgur.com/mliUcCc.png)
 
 Make example for this keyboard (after setting up your build environment):
 
index 075320a..61243fd 100644 (file)
@@ -12,23 +12,23 @@ MCU = atmega32u4
 BOOTLOADER = atmel-dfu
 
 # Build Options
-#   comment out to disable the options.
+#   change yes to no to disable
 #
-BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no       # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes      # Audio control and System control(+450)
-CONSOLE_ENABLE = no         # Console for debug(+400)
+BOOTMAGIC_ENABLE = lite     # 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 = no         # Commands for debug and configuration
-NKRO_ENABLE = yes                  # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+# 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 = yes           # USB Nkey Rollover
 BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
-BACKLIGHT_CUSTOM_DRIVER = yes
-RGBLIGHT_ENABLE = yes       # Enable keyboard underlight functionality (+4870)
-MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE = no         # Unicode
+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
+MIDI_ENABLE = no            # MIDI support
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
 FAUXCLICKY_ENABLE = no      # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no            # Enable support for HD44780 based LCDs (+400)
-
+HD44780_ENABLE = no         # Enable support for HD44780 based LCDs
 
 LAYOUTS = numpad_6x4 ortho_6x4