Skip to content

Commit

Permalink
[Keyboard] GON NerD codebase refactor (#7795)
Browse files Browse the repository at this point in the history
* config.h: use #pragma once include guard

* gonnerd.h: use #pragma once include guard

* rules.mk: templating and cleanup

- remove firmware size impact numbers
- add missing rules from AVR template

* gonnerd.h: use four-space indent

* gonnerd.h: change to k<row><column> notation

Previous notation was k<column><row>.

* gonnerd.h: change LAYOUT_60 macro to use direct matrix

... instead of mapping through LAYOUT_tkl.

* info.json update

- use four-space indent
- update key labels to k<row><column> notation from k<column><row>
- use one key per line formatting

* split gonnerd codebase

Splits the unified gonnerd codebase into:

- gon/nerd60/ (NerD 60)
- gon/nerdtkl/ (NerD TKL)

* nerd60: cleanup rules.mk files

nerd60/rules.mk has the following changes:

- NKRO_ENABLE flipped from no to yes
- BACKLIGHT_ENABLE flipped from yes to no

Both nerd60 keymaps used the above settings, so using that as the keyboard-level default.

With this change, both the rules.mk files for the default and mauin keymaps are identical to the keyboard's rules.mk. The default keymap's rules.mk file has been deleted, while the mauin keymap's has been updated to match the AVR template, but without any settings changes or deletions.

* nerdtkl: cleanup rules.mk files

nerdtkl/rules.mk has the following changes:

- NKRO_ENABLE flipped from no to yes
- BACKLIGHT_ENABLE flipped from yes to no

The default keymap's rules.mk used the above settings, so using that as the keyboard-level default so that keymaps/default/rules.mk can be deleted.

The gam3cat keymap's rules.mk file has been updated to more closely match the AVR template and remove the firmware size impact notes, but without any settings changes or deletions.

* differentiate codebases

Remove the irrelevant code from each board's codebase, and differentiate the product names and descriptions.

Also update the USB Device Product IDs to make them unique within QMK.

* nerd60: minimize switch matrix

The NerD 60 doesn't have any switches on Column 8, so there's no need to matrix scan that column.

* add GON folder readme

* refactor default keymaps

Make the default keymaps more complete, and add a readme for each keymap.

* add ChangeLog entry
  • Loading branch information
noroadsleft committed Feb 8, 2020
1 parent 87a3ea7 commit 8cbd3b5
Show file tree
Hide file tree
Showing 33 changed files with 446 additions and 197 deletions.
5 changes: 5 additions & 0 deletions docs/ChangeLog/20200229/PR7795.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
* GON NerD codebase refactor
* Splits the codebase for GON NerD 60 and NerdD TKL PCBs into two separate directories.
* If your keymap is for a NerD 60 PCB, your `make` command is now `make gon/nerd60:<keymap>`.
* If your keymap is for a NerD TKL PCB, your `make` command is now `make gon/nerdtkl:<keymap>`.

35 changes: 35 additions & 0 deletions keyboards/gon/nerd60/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#pragma once

#include "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6FD7
#define DEVICE_VER 0x0001
#define MANUFACTURER GON
#define PRODUCT NerD 60
#define DESCRIPTION QMK port for the GON NerD 60 PCB

/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8

/* backlight */
#define BACKLIGHT_PIN B7
#define BACKLIGHT_LEVELS 3

/* matrix pins */
#define MATRIX_ROW_PINS { B4, E2, F4, F7, F1, F6, C6, F5, D7, C7 }
#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5 }
#define UNUSED_PINS

/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW

/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5

/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
78 changes: 78 additions & 0 deletions keyboards/gon/nerd60/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"keyboard_name": "GON NerD 60",
"url": "",
"maintainer": "qmk",
"width": 15,
"height": 5,
"layouts": {
"LAYOUT_60": {
"key_count": 64,
"layout": [
{"label":"K80", "x":0, "y":0},
{"label":"K10", "x":1, "y":0},
{"label":"K01", "x":2, "y":0},
{"label":"K11", "x":3, "y":0},
{"label":"K02", "x":4, "y":0},
{"label":"K12", "x":5, "y":0},
{"label":"K03", "x":6, "y":0},
{"label":"K13", "x":7, "y":0},
{"label":"K04", "x":8, "y":0},
{"label":"K14", "x":9, "y":0},
{"label":"K05", "x":10, "y":0},
{"label":"K15", "x":11, "y":0},
{"label":"K06", "x":12, "y":0},
{"label":"K16", "x":13, "y":0, "w":2},
{"label":"K20", "x":0, "y":1, "w":1.5},
{"label":"K30", "x":1.5, "y":1},
{"label":"K21", "x":2.5, "y":1},
{"label":"K31", "x":3.5, "y":1},
{"label":"K22", "x":4.5, "y":1},
{"label":"K32", "x":5.5, "y":1},
{"label":"K23", "x":6.5, "y":1},
{"label":"K33", "x":7.5, "y":1},
{"label":"K24", "x":8.5, "y":1},
{"label":"K34", "x":9.5, "y":1},
{"label":"K25", "x":10.5, "y":1},
{"label":"K35", "x":11.5, "y":1},
{"label":"K26", "x":12.5, "y":1},
{"label":"K36", "x":13.5, "y":1, "w":1.5},
{"label":"K40", "x":0, "y":2, "w":1.75},
{"label":"K41", "x":1.75, "y":2},
{"label":"K51", "x":2.75, "y":2},
{"label":"K42", "x":3.75, "y":2},
{"label":"K52", "x":4.75, "y":2},
{"label":"K43", "x":5.75, "y":2},
{"label":"K53", "x":6.75, "y":2},
{"label":"K44", "x":7.75, "y":2},
{"label":"K54", "x":8.75, "y":2},
{"label":"K45", "x":9.75, "y":2},
{"label":"K55", "x":10.75, "y":2},
{"label":"K46", "x":11.75, "y":2},
{"label":"K17", "x":12.75, "y":2},
{"label":"K56", "x":13.75, "y":2, "w":1.25},
{"label":"K70", "x":0, "y":3, "w":1.25},
{"label":"K97", "x":1.25, "y":3},
{"label":"K61", "x":2.25, "y":3},
{"label":"K71", "x":3.25, "y":3},
{"label":"K62", "x":4.25, "y":3},
{"label":"K72", "x":5.25, "y":3},
{"label":"K63", "x":6.25, "y":3},
{"label":"K73", "x":7.25, "y":3},
{"label":"K64", "x":8.25, "y":3},
{"label":"K74", "x":9.25, "y":3},
{"label":"K65", "x":10.25, "y":3},
{"label":"K75", "x":11.25, "y":3},
{"label":"K66", "x":12.25, "y":3, "w":1.75},
{"label":"K76", "x":14, "y":3},
{"label":"K60", "x":0, "y":4, "w":1.25},
{"label":"K50", "x":1.25, "y":4, "w":1.25},
{"label":"K87", "x":2.5, "y":4, "w":1.25},
{"label":"K07", "x":3.75, "y":4, "w":6.25},
{"label":"K27", "x":10, "y":4, "w":1.25},
{"label":"K37", "x":11.25, "y":4, "w":1.25},
{"label":"K47", "x":12.5, "y":4, "w":1.25},
{"label":"K57", "x":13.75, "y":4, "w":1.25}
]
}
}
}
20 changes: 20 additions & 0 deletions keyboards/gon/nerd60/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include QMK_KEYBOARD_H

// Keymap layers
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60( /* Base */
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
),

[1] = LAYOUT_60( /* System layer to have access to RESET button */
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL, _______, _______,
_______, _______, KC_APP, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______,
RESET, _______, _______, _______, _______, _______, _______, _______
),
};
3 changes: 3 additions & 0 deletions keyboards/gon/nerd60/keymaps/default/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# The default keymap for GON NerD 60

![keymap](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/gon/nerd60/keymaps/default/keymap.png)
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # 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 = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

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
1 change: 1 addition & 0 deletions keyboards/gon/nerd60/nerd60.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "nerd60.h"
22 changes: 22 additions & 0 deletions keyboards/gon/nerd60/nerd60.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#pragma once

#include "quantum.h"

#define LAYOUT_60( \
K80, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \
K40, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K17, K56, \
K70, K97, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \
K60, K50, K87, K07, K27, K37, K47, K57 \
) { \
{ KC_NO, K01, K02, K03, K04, K05, K06, K07 }, \
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
{ K50, K51, K52, K53, K54, K55, K56, K57 }, \
{ K60, K61, K62, K63, K64, K65, K66, KC_NO }, \
{ K70, K71, K72, K73, K74, K75, K76, KC_NO }, \
{ K80, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K87 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K97 } \
}
27 changes: 27 additions & 0 deletions keyboards/gon/nerd60/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# GON NerD 60

A Korean Custom 60%.

* Keyboard Maintainer: QMK Community
* Hardware Supported: GON NerD 60 PCB
* Hardware Availability: [gonskeyboardworks.com](http://www.gonskeyboardworks.com/pcbs-and-controllers/113-nerd-60-ver20-pcb.html)

Make example for this keyboard (after setting up your build environment):

make gon/nerd60:default

See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

## Changing Bootloader

It's not possible to simply flash this firmware on the GON NerD keyboard as the original bootloader does not support DFU connections.

It is possible to change the bootloader of the GON NerD with an ISP programmer. A guide on how to change the bootloader on your GON NerD can be found here:
[Converting NerD60 to TMK](https://deskthority.net/wiki/Converting_NerD60_to_TMK). After changing the bootloader you can flash your QMK keymap onto the keyboard.

_After changing the bootloader on your GON NerD PCB you will not be able to go back to the original firmware and the official configuration software will
not work anymore. You will lose your warranty and official support from GON!_

## Reset button

To run the `make dfu` command to flash keymaps onto the board, you need to put the board into DFU mode. As the GON NerD PCBs do not have a reset button on the board to put it into DFU mode, be sure to include a `RESET` button on your keymap. Otherwise you'll have to unscrew your keyboard from the case and short the GND and RST pins.
13 changes: 8 additions & 5 deletions keyboards/gonnerd/rules.mk → keyboards/gon/nerd60/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,15 @@ MOUSEKEY_ENABLE = yes # 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
# 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 on B7 by default
MIDI_ENABLE = no # MIDI controls
# 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 = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
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
11 changes: 4 additions & 7 deletions keyboards/gonnerd/config.h → keyboards/gon/nerdtkl/config.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
#ifndef CONFIG_H
#define CONFIG_H
#pragma once

#include "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define PRODUCT_ID 0x6965
#define DEVICE_VER 0x0001
#define MANUFACTURER GON
#define PRODUCT NerD
#define DESCRIPTION QMK port for the GON Nerd PCB
#define PRODUCT NerD TKL
#define DESCRIPTION QMK port for the GON NerD TKL PCB

/* key matrix size */
#define MATRIX_ROWS 10
Expand All @@ -34,5 +33,3 @@
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

#endif
104 changes: 104 additions & 0 deletions keyboards/gon/nerdtkl/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{
"keyboard_name": "GON NerD TKL",
"url": "",
"maintainer": "qmk",
"width": 18.25,
"height": 6.25,
"layouts": {
"LAYOUT_tkl": {
"key_count": 90,
"layout": [
{"label":"K80", "x":0, "y":0},
{"label":"K90", "x":2, "y":0},
{"label":"K81", "x":3, "y":0},
{"label":"K91", "x":4, "y":0},
{"label":"K82", "x":5, "y":0},
{"label":"K92", "x":6.5, "y":0},
{"label":"K83", "x":7.5, "y":0},
{"label":"K93", "x":8.5, "y":0},
{"label":"K84", "x":9.5, "y":0},
{"label":"K94", "x":11, "y":0},
{"label":"K85", "x":12, "y":0},
{"label":"K95", "x":13, "y":0},
{"label":"K86", "x":14, "y":0},
{"label":"K96", "x":15.25, "y":0},
{"label":"K88", "x":16.25, "y":0},
{"label":"K98", "x":17.25, "y":0},
{"label":"K00", "x":0, "y":1.25},
{"label":"K10", "x":1, "y":1.25},
{"label":"K01", "x":2, "y":1.25},
{"label":"K11", "x":3, "y":1.25},
{"label":"K02", "x":4, "y":1.25},
{"label":"K12", "x":5, "y":1.25},
{"label":"K03", "x":6, "y":1.25},
{"label":"K13", "x":7, "y":1.25},
{"label":"K04", "x":8, "y":1.25},
{"label":"K14", "x":9, "y":1.25},
{"label":"K05", "x":10, "y":1.25},
{"label":"K15", "x":11, "y":1.25},
{"label":"K06", "x":12, "y":1.25},
{"label":"K16", "x":13, "y":1.25, "w":2},
{"label":"K08", "x":15.25, "y":1.25},
{"label":"K18", "x":16.25, "y":1.25},
{"label":"K48", "x":17.25, "y":1.25},
{"label":"K20", "x":0, "y":2.25, "w":1.5},
{"label":"K30", "x":1.5, "y":2.25},
{"label":"K21", "x":2.5, "y":2.25},
{"label":"K31", "x":3.5, "y":2.25},
{"label":"K22", "x":4.5, "y":2.25},
{"label":"K32", "x":5.5, "y":2.25},
{"label":"K23", "x":6.5, "y":2.25},
{"label":"K33", "x":7.5, "y":2.25},
{"label":"K24", "x":8.5, "y":2.25},
{"label":"K34", "x":9.5, "y":2.25},
{"label":"K25", "x":10.5, "y":2.25},
{"label":"K35", "x":11.5, "y":2.25},
{"label":"K26", "x":12.5, "y":2.25},
{"label":"K36", "x":13.5, "y":2.25, "w":1.5},
{"label":"K28", "x":15.25, "y":2.25},
{"label":"K38", "x":16.25, "y":2.25},
{"label":"K58", "x":17.25, "y":2.25},
{"label":"K40", "x":0, "y":3.25, "w":1.75},
{"label":"K41", "x":1.75, "y":3.25},
{"label":"K51", "x":2.75, "y":3.25},
{"label":"K42", "x":3.75, "y":3.25},
{"label":"K52", "x":4.75, "y":3.25},
{"label":"K43", "x":5.75, "y":3.25},
{"label":"K53", "x":6.75, "y":3.25},
{"label":"K44", "x":7.75, "y":3.25},
{"label":"K54", "x":8.75, "y":3.25},
{"label":"K45", "x":9.75, "y":3.25},
{"label":"K55", "x":10.75, "y":3.25},
{"label":"K46", "x":11.75, "y":3.25},
{"label":"K17", "x":12.75, "y":3.25},
{"label":"K56", "x":13.75, "y":3.25, "w":1.25},
{"label":"K70", "x":0, "y":4.25, "w":1.25},
{"label":"K97", "x":1.25, "y":4.25},
{"label":"K61", "x":2.25, "y":4.25},
{"label":"K71", "x":3.25, "y":4.25},
{"label":"K62", "x":4.25, "y":4.25},
{"label":"K72", "x":5.25, "y":4.25},
{"label":"K63", "x":6.25, "y":4.25},
{"label":"K73", "x":7.25, "y":4.25},
{"label":"K64", "x":8.25, "y":4.25},
{"label":"K74", "x":9.25, "y":4.25},
{"label":"K65", "x":10.25, "y":4.25},
{"label":"K75", "x":11.25, "y":4.25},
{"label":"K66", "x":12.25, "y":4.25, "w":1.75},
{"label":"K76", "x":14, "y":4.25},
{"label":"K68", "x":16.25, "y":4.25},
{"label":"K60", "x":0, "y":5.25, "w":1.25},
{"label":"K50", "x":1.25, "y":5.25, "w":1.25},
{"label":"K87", "x":2.5, "y":5.25, "w":1.25},
{"label":"K07", "x":3.75, "y":5.25, "w":6.25},
{"label":"K27", "x":10, "y":5.25, "w":1.25},
{"label":"K37", "x":11.25, "y":5.25, "w":1.25},
{"label":"K47", "x":12.5, "y":5.25, "w":1.25},
{"label":"K57", "x":13.75, "y":5.25, "w":1.25},
{"label":"K67", "x":15.25, "y":5.25},
{"label":"K77", "x":16.25, "y":5.25},
{"label":"K78", "x":17.25, "y":5.25}
]
}
}
}
Loading

0 comments on commit 8cbd3b5

Please sign in to comment.