From 8c45f66b2b519b2ea936e08e338c2edfa895e73e Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sun, 23 Jul 2023 18:05:26 -0500 Subject: [PATCH 01/15] Initial commit of Nifty Numpad keyboard --- keyboards/nifty_numpad/config.h | 33 +++ keyboards/nifty_numpad/info.json | 65 +++++ .../nifty_numpad/keymaps/default/keymap.c | 276 ++++++++++++++++++ keyboards/nifty_numpad/nifty_numpad.c | 232 +++++++++++++++ keyboards/nifty_numpad/nifty_numpad.h | 99 +++++++ keyboards/nifty_numpad/readme.md | 27 ++ keyboards/nifty_numpad/rules.mk | 4 + 7 files changed, 736 insertions(+) create mode 100644 keyboards/nifty_numpad/config.h create mode 100644 keyboards/nifty_numpad/info.json create mode 100644 keyboards/nifty_numpad/keymaps/default/keymap.c create mode 100644 keyboards/nifty_numpad/nifty_numpad.c create mode 100644 keyboards/nifty_numpad/nifty_numpad.h create mode 100644 keyboards/nifty_numpad/readme.md create mode 100644 keyboards/nifty_numpad/rules.mk diff --git a/keyboards/nifty_numpad/config.h b/keyboards/nifty_numpad/config.h new file mode 100644 index 00000000000..9821d4532cc --- /dev/null +++ b/keyboards/nifty_numpad/config.h @@ -0,0 +1,33 @@ +// Copyright 2023 Isaac Rex (@Isaac Rex) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define EECONFIG_KB_DATA_SIZE 11 + +// Setup for RGB Matrix +#define RGB_MATRIX_LED_COUNT 33 +#define WS2812_DI_PIN GP19 + +// RGB Matrix Enabled Effects +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +// RGB Matrix Parameters +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING // Sets the default mode, if none has been set +#define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 + +#define RGB_MATRIX_DEFAULT_HUE 0 // Sets the default hue value, if none has been set +#define RGB_MATRIX_DEFAULT_SAT 0 // Sets the default saturation value, if none has been set +#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES \ No newline at end of file diff --git a/keyboards/nifty_numpad/info.json b/keyboards/nifty_numpad/info.json new file mode 100644 index 00000000000..a5e4eab3e1a --- /dev/null +++ b/keyboards/nifty_numpad/info.json @@ -0,0 +1,65 @@ +{ + "manufacturer": "Isaac Rex", + "keyboard_name": "nifty_numpad", + "maintainer": "Isaac Rex", + "bootloader": "rp2040", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP17", "GP18", "GP15", "GP13", "GP14", "GP12"], + "rows": ["GP20", "GP21", "GP22", "GP23", "GP24", "GP25"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_numpad_6x6": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4, "h": 2}, + {"matrix": [5, 0], "x": 0, "y": 5}, + {"matrix": [5, 1], "x": 1, "y": 5}, + {"matrix": [5, 3], "x": 3, "y": 5, "w": 2}, + {"matrix": [5, 4], "x": 4, "y": 5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/default/keymap.c b/keyboards/nifty_numpad/keymaps/default/keymap.c new file mode 100644 index 00000000000..b98d95664a3 --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/default/keymap.c @@ -0,0 +1,276 @@ +// Copyright 2021 QMK / NachoxMacho +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "nifty_numpad.h" +#include "quantum.h" + +// Custom String Definitions +#define STR_EDIT_GEN "emg" +#define STR_EDIT_PLACE "emp" +#define STR_EDIT_ETCH "eme" +#define STR_EDIT_SHAPE "ems" +#define STR_ROUTE "xx" +#define STR_SLIDE "dd" +#define STR_VIA "vv" +#define STR_MEASURE "me" +#define STR_SHOW "sh" +#define STR_UPDATE_SHAPES "sup" +#define STR_ROTATE "rr" +#define STR_MIRROR "ff" +#define STR_PAM "pam" +#define STR_MOVE "mm" + +// Layer Defines +#define _LAYER_BL 0 +#define _LAYER_CAD 1 + +#define _LAYER_CAD_LED_INDEX 8 + +// Tap Dance Declarations +enum { + TD_NUM_TOGGLE = 0, + TD_EDIT_GEN_TOGGLE, + TD_M1, + TD_M2, + TD_M3, + TD_M4, + TD_M5, + TD_M6, + TD_M7, + TD_M8, + TD_M9, + TD_M10, + TD_M11, + TD_M12, +}; + +// TD function for 1 tap, toggle layer; 2 taps, press numlock +void tap_dance_num_toggle(tap_dance_state_t *state, void *user_data){ + switch(state->count){ + case 1: + layer_invert(_LAYER_CAD); + break; + case 2: + tap_code16(KC_NUM); + break; + } +} + +// Tap Dance Definitions +tap_dance_action_t tap_dance_actions[] = { + [TD_NUM_TOGGLE] = ACTION_TAP_DANCE_FN(tap_dance_num_toggle), + + [TD_M1] = ACTION_TAP_DANCE_DOUBLE(KC_F13, LCTL(KC_F13)), + [TD_M2] = ACTION_TAP_DANCE_DOUBLE(KC_F14, LCTL(KC_F14)), + [TD_M3] = ACTION_TAP_DANCE_DOUBLE(KC_F15, LCTL(KC_F15)), + [TD_M4] = ACTION_TAP_DANCE_DOUBLE(KC_F16, LCTL(KC_F16)), + [TD_M5] = ACTION_TAP_DANCE_DOUBLE(KC_F17, LCTL(KC_F17)), + [TD_M6] = ACTION_TAP_DANCE_DOUBLE(KC_F18, LCTL(KC_F18)), + [TD_M7] = ACTION_TAP_DANCE_DOUBLE(KC_F19, LCTL(KC_F19)), + [TD_M8] = ACTION_TAP_DANCE_DOUBLE(KC_F20, LCTL(KC_F20)), + [TD_M9] = ACTION_TAP_DANCE_DOUBLE(KC_F21, LCTL(KC_F21)), + [TD_M10] = ACTION_TAP_DANCE_DOUBLE(KC_F22, LCTL(KC_F22)), + [TD_M11] = ACTION_TAP_DANCE_DOUBLE(KC_F23, LCTL(KC_F23)), + [TD_M12] = ACTION_TAP_DANCE_DOUBLE(KC_F24, LCTL(KC_F24)) +}; + +// Setup LED map +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5 }, + { 6, 7, 8, 9, 10, 11 }, + { 12, 13, 14, 15, 16, 17 }, + { 18, 19, 20, 21, 22, NO_LED }, + { 23, 24, 25, 26, 27, 28 }, + { 29, 30, 31, NO_LED, 32, NO_LED } +}, { + // LED Index to Physical Position + { 0, 0}, { 43, 0}, { 96, 0}, {139, 0}, {181, 0}, {224, 0}, + { 0, 17}, { 43, 17}, { 96, 17}, {139, 17}, {181, 17}, {224, 17}, + { 0, 29}, { 43, 29}, { 96, 29}, {139, 29}, {181, 29}, {224, 35}, + { 0, 41}, { 43, 41}, { 96, 41}, {139, 41}, {181, 41}, { 0, 52}, + { 43, 52}, { 96, 52}, {139, 52}, {181, 52}, {224, 58}, { 0, 64}, + { 43, 64}, {117, 64}, {181, 64} +}, { + // LED Index to Flag + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT +} }; + +// Setup keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │F1 │F2 │F3 │F4 │ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [_LAYER_BL] = LAYOUT_numpad_6x6( + TD(TD_M1), TD(TD_M12), LT(_LAYER_RGB, KC_F1), KC_F2, KC_F3, KC_F4, + TD(TD_M2), TD(TD_M11), TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS, + TD(TD_M3), TD(TD_M10), KC_P7, KC_P8, KC_P9, KC_PPLS, + TD(TD_M4), TD(TD_M9), KC_P4, KC_P5, KC_P6, + TD(TD_M5), TD(TD_M8), KC_P1, KC_P2, KC_P3, KC_PENT, + TD(TD_M6), TD(TD_M7), KC_P0, KC_PDOT + ), + + /* + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │F1 │F2 │F3 │F4 │ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [_LAYER_CAD] = LAYOUT_numpad_6x6( + _______, _______, EDIT_GEN, EDIT_PLACE, EDIT_ETCH, EDIT_SHAPE, + _______, _______, TD(TD_NUM_TOGGLE), _______, _______, _______, + _______, _______, ROUTE, SLIDE, VIA, KC_F8, + _______, _______, MEASURE, SHOW, UPDATE_SHAPES, + _______, _______, ROTATE, MIRROR, PAM, KC_F6, + _______, _______, MOVE, KC_F9 + ), + + /* + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │F1 │F2 │F3 │F4 │ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [_LAYER_RGB] = LAYOUT_numpad_6x6( + _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, RGB_DEF, RGB_IEF, RGB_SPI, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_SPD, + _______, _______, _______, _______ + ) +}; + +// Set the layer toggle key to an indication of the active layer. This is a +// bit janky and should be done better, but I'm trying to avoid scope creep. +bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (layer_state_is(_LAYER_CAD) && !rgb_matrix_idle_mode()) { + // Get a hue that contrasts with current hue + uint8_t hue = rgb_matrix_get_hue() + 127; + // Make sure saturation is high enough to distiguish between hues + uint8_t sat = 255; + uint8_t val = min((uint16_t) rgb_matrix_get_val() + 50, 255); + RGB rgb = hsv_to_rgb((HSV) {hue, sat, val}); + rgb_matrix_set_color(_LAYER_CAD_LED_INDEX, rgb.r, rgb.g, rgb.b); + } + return false; +} + +// Process custom keycodes +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + switch (keycode) { + + // Custom macro strings for Cadence + case EDIT_GEN: + if (record->event.pressed) { + SEND_STRING(STR_EDIT_GEN); + } + break; + case EDIT_PLACE: + if (record->event.pressed) { + SEND_STRING(STR_EDIT_PLACE); + } + break; + case EDIT_ETCH: + if (record->event.pressed) { + SEND_STRING(STR_EDIT_ETCH); + } + break; + case EDIT_SHAPE: + if (record->event.pressed) { + SEND_STRING(STR_EDIT_SHAPE); + } + break; + case ROUTE: + if (record->event.pressed) { + SEND_STRING(STR_ROUTE); + } + break; + case SLIDE: + if (record->event.pressed) { + SEND_STRING(STR_SLIDE); + } + break; + case VIA: + if (record->event.pressed) { + SEND_STRING(STR_VIA); + } + break; + case MEASURE: + if (record->event.pressed) { + SEND_STRING(STR_MEASURE); + } + break; + case SHOW: + if (record->event.pressed) { + SEND_STRING(STR_SHOW); + } + break; + case UPDATE_SHAPES: + if (record->event.pressed) { + SEND_STRING(STR_UPDATE_SHAPES); + } + break; + case ROTATE: + if (record->event.pressed) { + SEND_STRING(STR_ROTATE); + } + break; + case MIRROR: + if (record->event.pressed) { + SEND_STRING(STR_MIRROR); + } + break; + case PAM: + if (record->event.pressed) { + SEND_STRING(STR_PAM); + } + break; + case MOVE: + if (record->event.pressed) { + SEND_STRING(STR_MOVE); + } + break; + } + return true; +}; diff --git a/keyboards/nifty_numpad/nifty_numpad.c b/keyboards/nifty_numpad/nifty_numpad.c new file mode 100644 index 00000000000..57972ac69bf --- /dev/null +++ b/keyboards/nifty_numpad/nifty_numpad.c @@ -0,0 +1,232 @@ +/* Copyright 2023 irex + * + * 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 . + */ + +#include QMK_KEYBOARD_H +#include "quantum.h" + +typedef struct { + uint8_t mode; + uint8_t speed; + HSV hsv; +} rgb_matrix_state_t; + +typedef struct { + rgb_matrix_state_t active_rgb_matrix; + rgb_matrix_state_t idle_rgb_matrix; +} kb_config_t; + +static uint32_t idle_timer = 0; +bool rgb_idle_mode = false; +bool rgb_idle_edit_mode = false; +static rgb_matrix_state_t active_rgb_matrix; +static rgb_matrix_state_t idle_rgb_matrix; +static kb_config_t config; + +// Returns true if current RGB matrix mode is idle +bool rgb_matrix_idle_mode(void){ + return rgb_idle_mode; +} + +// Stores the current mode, HSV, and speed of the RGB matrix into state +void rgb_matrix_state_save(rgb_matrix_state_t* state){ + state->mode = rgb_matrix_get_mode(); + state->hsv = rgb_matrix_get_hsv(); + state->speed = rgb_matrix_get_speed(); +} + +// Restores the mode, HSV, and speed of the RGB matrix from previous state +void rgb_matrix_state_restore(rgb_matrix_state_t* state){ + HSV hsv = state->hsv; + rgb_matrix_mode_noeeprom(state->mode); + rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v); + rgb_matrix_set_speed_noeeprom(state->speed); +} + +void matrix_scan_kb(void) { + // Check if enough time has passed since last keypress to go into idle mode + if ( timer_elapsed32(idle_timer) > RGB_IDLE_TIMEOUT_MS && !rgb_idle_mode ) { + rgb_matrix_state_save(&active_rgb_matrix); + rgb_idle_mode = true; + idle_timer = timer_read32(); + + rgb_matrix_state_restore(&idle_rgb_matrix); + } + + matrix_scan_user(); +}; + + +layer_state_t layer_state_set_kb(layer_state_t state) { + // Track if the last layer was the RGB edit layer + static bool rgb_was_on = false; + + if (IS_LAYER_ON_STATE(state, _LAYER_RGB)) { + rgb_was_on = true; + } + + // Not in RGB edit layer, but previously were + if (!IS_LAYER_ON_STATE(state, _LAYER_RGB) && rgb_was_on) { + rgb_was_on = false; + if (rgb_idle_edit_mode) { + // If we were editing the RGB idle mode, we are done now. + // Restore to active mode + rgb_idle_edit_mode = false; + rgb_matrix_state_restore(&active_rgb_matrix); + } + // Done changing stuff, save settings in "EEPROM" + config.active_rgb_matrix = active_rgb_matrix; + config.idle_rgb_matrix = idle_rgb_matrix; + eeconfig_update_kb_datablock(&config); + } + + return layer_state_set_user(state); +} + +// Process custom keycodes +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + + // If we were idling and a key was pressed, restore active RGB + if (record->event.pressed) { + idle_timer = timer_read32(); + if(rgb_idle_mode){ + rgb_matrix_state_restore(&active_rgb_matrix); + rgb_idle_mode = false; + } + } + + + switch (keycode) { + + // Handle all the RGB settings + case RGB_DEF: + if (record->event.pressed) { + // Change the RGB matrix state to active if editing idle + if(rgb_idle_edit_mode) { + rgb_matrix_state_restore(&active_rgb_matrix); + rgb_idle_edit_mode = false; + } + rgb_matrix_step_noeeprom(); + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_IEF: + if (record->event.pressed) { + // Change the RGB matrix state to idle + if(!rgb_idle_edit_mode) { + rgb_matrix_state_restore(&idle_rgb_matrix); + rgb_idle_edit_mode = true; + } + else{ + rgb_matrix_step_noeeprom(); + rgb_matrix_state_save(&idle_rgb_matrix); + } + } + return false; + case RGB_SAI: + if (record->event.pressed) { + rgb_matrix_increase_sat_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_SAD: + if (record->event.pressed) { + rgb_matrix_decrease_sat_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_VAI: + if (record->event.pressed) { + rgb_matrix_increase_val_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_VAD: + if (record->event.pressed) { + rgb_matrix_decrease_val_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_HUI: + if (record->event.pressed) { + rgb_matrix_increase_hue_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_HUD: + if (record->event.pressed) { + rgb_matrix_decrease_hue_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_SPI: + if (record->event.pressed) { + rgb_matrix_increase_speed_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_SPD: + if (record->event.pressed) { + rgb_matrix_decrease_speed_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + } + return process_record_user(keycode, record); +}; + +void keyboard_post_init_kb(void) { + // Read in the RGB Matrices from before + eeconfig_read_kb_datablock(&config); + active_rgb_matrix = config.active_rgb_matrix; + idle_rgb_matrix = config.idle_rgb_matrix; + // Restore the active matrix + rgb_matrix_state_restore(&active_rgb_matrix); + // Start the idle timer for idle mode + idle_timer = timer_read32(); + + keyboard_post_init_user(); +} + +// Setup default EEPROM config values +void eeconfig_init_kb_datablock(void){ + rgb_matrix_state_t default_active_rgb_matrix; + rgb_matrix_state_t default_idle_rgb_matrix; + + default_active_rgb_matrix.mode = RGB_MATRIX_GRADIENT_UP_DOWN; + default_active_rgb_matrix.hsv = (HSV){127, 255, 100}; + default_active_rgb_matrix.speed = 127; + + default_idle_rgb_matrix.mode = RGB_MATRIX_BREATHING; + default_idle_rgb_matrix.hsv = (HSV){127, 255, 100}; + default_idle_rgb_matrix.speed = 127; + + config.active_rgb_matrix = default_active_rgb_matrix; + config.idle_rgb_matrix = default_idle_rgb_matrix; + + eeconfig_update_kb_datablock(&config); + + #if (EECONFIG_USER_DATA_SIZE) > 0 + eeconfig_init_user_datablock(); + #endif +} diff --git a/keyboards/nifty_numpad/nifty_numpad.h b/keyboards/nifty_numpad/nifty_numpad.h new file mode 100644 index 00000000000..6ad88ebee0f --- /dev/null +++ b/keyboards/nifty_numpad/nifty_numpad.h @@ -0,0 +1,99 @@ +/* Copyright 2023 irex + * + * 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 . + */ + +#pragma once + +#include "quantum.h" + +// min/max macros +#define max(a,b) \ +({ \ + __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + _a > _b ? _a : _b; \ +}) + +#define min(a,b) \ +({ \ + __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + _a < _b ? _a : _b; \ +}) + +// Custom kycode declarations +enum custom_keycodes { + EDIT_GEN = SAFE_RANGE, + EDIT_PLACE, + EDIT_ETCH, + EDIT_SHAPE, + ROUTE, + SLIDE, + VIA, + MEASURE, + SHOW, + UPDATE_SHAPES, + ROTATE, + MIRROR, + PAM, + MOVE, + RGB_DEF, + RGB_IEF +}; + +// Layer Defines +#define _LAYER_RGB 15 + +// Custom Setup +#define TAPPING_TERM 200 +#define RGB_IDLE_TIMEOUT_MS (5*1000) + +/* +* ┌───┬───┐ ┌───┬───┬───┬───┐ +* │F13│F19│ │F1 │F2 │F3 │F4 │ +* └───┴───┘ └───┴───┴───┴───┘ +* ┌───┬───┐ ┌───┬───┬───┬───┐ +* │F14│F20│ │Num│ / │ * │ - │ +* ├───┼───┤ ├───┼───┼───┼───┤ +* │F15│F21│ │ 7 │ 8 │ 9 │ │ +* ├───┼───┤ ├───┼───┼───┤ + │ +* │F16│F22│ │ 4 │ 5 │ 6 │ │ +* ├───┼───┤ ├───┼───┼───┼───┤ +* │F17│F23│ │ 1 │ 2 │ 3 │ │ +* ├───┼───│ ├───┴───┼───┤Ent│ +* │F18│F24│ │ 0 │ . │ │ +* └───┴───┘ └───────┴───┴───┘ +*/ +#define XXX KC_NO +#define LAYOUT_numpad_6x6( \ + K00, K01, K02, K03, K04, K05, \ + K10, K11, K12, K13, K14, K15, \ + \ + K20, K21, K22, K23, K24, K25, \ + K30, K31, K32, K33, K34, \ + K40, K41, K42, K43, K44, K45, \ + K50, K51, K52, K54 \ +) { \ + { K00, K01, K02, K03, K04, K05}, \ + { K10, K11, K12, K13, K14, K15}, \ + \ + { K20, K21, K22, K23, K24, K25}, \ + { K30, K31, K32, K33, K34, XXX}, \ + { K40, K41, K42, K43, K44, K45}, \ + { K50, K51, K52, XXX, K54, XXX} \ +} + +// Functions exposed by nifty_numpad.c +bool rgb_matrix_idle_mode(void); \ No newline at end of file diff --git a/keyboards/nifty_numpad/readme.md b/keyboards/nifty_numpad/readme.md new file mode 100644 index 00000000000..9d091ea7cfd --- /dev/null +++ b/keyboards/nifty_numpad/readme.md @@ -0,0 +1,27 @@ +# nifty_numpad + +![nifty_numpad](imgur.com image replace me!) + +*A short description of the keyboard/project* + +* Keyboard Maintainer: [Isaac Rex](https://github.com/Isaac Rex) +* Hardware Supported: *The PCBs, controllers supported* +* Hardware Availability: *Links to where you can find this hardware* + +Make example for this keyboard (after setting up your build environment): + + make nifty_numpad:default + +Flashing example for this keyboard: + + make nifty_numpad:default:flash + +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). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/nifty_numpad/rules.mk b/keyboards/nifty_numpad/rules.mk new file mode 100644 index 00000000000..157dbfacfbb --- /dev/null +++ b/keyboards/nifty_numpad/rules.mk @@ -0,0 +1,4 @@ +TAP_DANCE_ENABLE=yes +RGB_MATRIX_ENABLE=yes +RGB_MATRIX_DRIVER=WS2812 +WS2812_DRIVER=vendor \ No newline at end of file From 4fa53a71fd73782c292e08f0db55b543e09f33b6 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sun, 23 Jul 2023 18:12:02 -0500 Subject: [PATCH 02/15] Initial commit of Nifty Numpad keyboard --- .gitmodules | 3 +++ qmk_firmware | 1 + 2 files changed, 4 insertions(+) create mode 160000 qmk_firmware diff --git a/.gitmodules b/.gitmodules index 7d8dbcb4ed0..745c0262b60 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,6 @@ path = lib/lvgl url = https://github.com/qmk/lvgl.git branch = release/v8.2 +[submodule "qmk_firmware"] + path = qmk_firmware + url = git@github.com:Acliad/qmk_firmware.git diff --git a/qmk_firmware b/qmk_firmware new file mode 160000 index 00000000000..00aec9e6be8 --- /dev/null +++ b/qmk_firmware @@ -0,0 +1 @@ +Subproject commit 00aec9e6be8a59e4bf697bba98ec52f917047cf3 From cfd52ca463e51ec1e7e8bdefda350fab80c79a83 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sun, 23 Jul 2023 18:14:38 -0500 Subject: [PATCH 03/15] Fixed double repo --- .vscode/settings.json | 12 +++++++++++- qmk_firmware | 1 - 2 files changed, 11 insertions(+), 2 deletions(-) delete mode 160000 qmk_firmware diff --git a/.vscode/settings.json b/.vscode/settings.json index f369ecb1748..2fc34952a67 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,6 +11,7 @@ }, "files.associations": { "*.h": "c", + "*.ino": "cpp", "*.c": "c", "*.inc": "c", "*.cpp": "cpp", @@ -18,7 +19,16 @@ "xstddef": "c", "type_traits": "c", "utility": "c", - "ranges": "c" + "ranges": "c", + "ios": "c", + "regex": "c", + "random": "c", + "variant": "c", + "chrono": "c", + "limits": "c", + "algorithm": "c", + "locale": "c", + "string": "c" }, "[markdown]": { "editor.trimAutoWhitespace": false, diff --git a/qmk_firmware b/qmk_firmware deleted file mode 160000 index 00aec9e6be8..00000000000 --- a/qmk_firmware +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 00aec9e6be8a59e4bf697bba98ec52f917047cf3 From 6348682d3fb3355ed191e222e5144564c1893ff9 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sun, 30 Jul 2023 11:45:13 -0500 Subject: [PATCH 04/15] Updated available effects --- keyboards/nifty_numpad/config.h | 27 +++++++++++++++++---------- keyboards/nifty_numpad/nifty_numpad.h | 2 +- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/keyboards/nifty_numpad/config.h b/keyboards/nifty_numpad/config.h index 9821d4532cc..b2f5e8eff08 100644 --- a/keyboards/nifty_numpad/config.h +++ b/keyboards/nifty_numpad/config.h @@ -10,23 +10,30 @@ #define WS2812_DI_PIN GP19 // RGB Matrix Enabled Effects -#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL #define ENABLE_RGB_MATRIX_CYCLE_ALL #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define ENABLE_RGB_MATRIX_BREATHING -#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH // RGB Matrix Parameters -#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING // Sets the default mode, if none has been set -#define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set +#define RGB_MATRIX_DEFAULT_SPD 100 // Sets the default animation speed, if none has been set #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 -#define RGB_MATRIX_DEFAULT_HUE 0 // Sets the default hue value, if none has been set -#define RGB_MATRIX_DEFAULT_SAT 0 // Sets the default saturation value, if none has been set +#define RGB_MATRIX_DEFAULT_HUE 127 // Sets the default hue value, if none has been set +#define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/nifty_numpad/nifty_numpad.h b/keyboards/nifty_numpad/nifty_numpad.h index 6ad88ebee0f..d19dbb5a294 100644 --- a/keyboards/nifty_numpad/nifty_numpad.h +++ b/keyboards/nifty_numpad/nifty_numpad.h @@ -58,7 +58,7 @@ enum custom_keycodes { // Custom Setup #define TAPPING_TERM 200 -#define RGB_IDLE_TIMEOUT_MS (5*1000) +#define RGB_IDLE_TIMEOUT_MS (10*60*1000) /* * ┌───┬───┐ ┌───┬───┬───┬───┐ From 1865f13a6de7e1d682a8dccb6a87cf773c0890d8 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sun, 13 Aug 2023 11:03:30 -0500 Subject: [PATCH 05/15] Added a default and VIA keymap, moved cadence to its own keymap --- keyboards/nifty_numpad/info.json | 11 +- .../nifty_numpad/keymaps/cadence/keymap.c | 297 ++++++++++++++++++ .../nifty_numpad/keymaps/cadence/rules.mk | 6 + .../nifty_numpad/keymaps/default/keymap.c | 189 ++++------- .../nifty_numpad/keymaps/default/rules.mk | 6 + keyboards/nifty_numpad/keymaps/via/keymap.c | 106 +++++++ keyboards/nifty_numpad/keymaps/via/rules.mk | 1 + keyboards/nifty_numpad/nifty_numpad.c | 18 +- keyboards/nifty_numpad/nifty_numpad.h | 42 +-- keyboards/nifty_numpad/rules.mk | 1 - 10 files changed, 513 insertions(+), 164 deletions(-) create mode 100644 keyboards/nifty_numpad/keymaps/cadence/keymap.c create mode 100644 keyboards/nifty_numpad/keymaps/cadence/rules.mk create mode 100644 keyboards/nifty_numpad/keymaps/default/rules.mk create mode 100644 keyboards/nifty_numpad/keymaps/via/keymap.c create mode 100644 keyboards/nifty_numpad/keymaps/via/rules.mk diff --git a/keyboards/nifty_numpad/info.json b/keyboards/nifty_numpad/info.json index a5e4eab3e1a..9c7dfe06430 100644 --- a/keyboards/nifty_numpad/info.json +++ b/keyboards/nifty_numpad/info.json @@ -1,6 +1,6 @@ { "manufacturer": "Isaac Rex", - "keyboard_name": "nifty_numpad", + "keyboard_name": "Nifty Numpad", "maintainer": "Isaac Rex", "bootloader": "rp2040", "diode_direction": "ROW2COL", @@ -21,7 +21,7 @@ "usb": { "device_version": "1.0.0", "pid": "0x0000", - "vid": "0xFEED" + "vid": "0x4E4E" }, "layouts": { "LAYOUT_numpad_6x6": { @@ -32,32 +32,37 @@ {"matrix": [0, 3], "x": 3, "y": 0}, {"matrix": [0, 4], "x": 4, "y": 0}, {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, {"matrix": [1, 3], "x": 3, "y": 1}, {"matrix": [1, 4], "x": 4, "y": 1}, {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, {"matrix": [2, 3], "x": 3, "y": 2}, {"matrix": [2, 4], "x": 4, "y": 2}, {"matrix": [2, 5], "x": 5, "y": 2, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, {"matrix": [3, 1], "x": 1, "y": 3}, {"matrix": [3, 2], "x": 2, "y": 3}, {"matrix": [3, 3], "x": 3, "y": 3}, {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, {"matrix": [4, 1], "x": 1, "y": 4}, {"matrix": [4, 2], "x": 2, "y": 4}, {"matrix": [4, 3], "x": 3, "y": 4}, {"matrix": [4, 4], "x": 4, "y": 4}, {"matrix": [4, 5], "x": 5, "y": 4, "h": 2}, + {"matrix": [5, 0], "x": 0, "y": 5}, {"matrix": [5, 1], "x": 1, "y": 5}, - {"matrix": [5, 3], "x": 3, "y": 5, "w": 2}, + {"matrix": [5, 3], "x": 2, "y": 5, "w": 2}, {"matrix": [5, 4], "x": 4, "y": 5} ] } diff --git a/keyboards/nifty_numpad/keymaps/cadence/keymap.c b/keyboards/nifty_numpad/keymaps/cadence/keymap.c new file mode 100644 index 00000000000..2f7a99298f0 --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/cadence/keymap.c @@ -0,0 +1,297 @@ +// Copyright 2021 QMK / NachoxMacho +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "nifty_numpad.h" +#include "quantum.h" + +// Custom String Definitions +#define STR_EDIT_GEN "emg" +#define STR_EDIT_PLACE "emp" +#define STR_EDIT_ETCH "eme" +#define STR_EDIT_SHAPE "ems" +#define STR_ROUTE "xx" +#define STR_SLIDE "dd" +#define STR_VIA "vv" +#define STR_MEASURE "me" +#define STR_SHOW "sh" +#define STR_UPDATE_SHAPES "sup" +#define STR_ROTATE "rr" +#define STR_MIRROR "ff" +#define STR_PAM "pam" +#define STR_MOVE "mm" + +// Layer Defines +#define _LAYER_BL 0 +#define _LAYER_CAD 1 +#define _LAYER_RGB 15 + +#define _LAYER_CAD_LED_INDEX 8 + +#define TAPPING_TERM 200 + +// Custom keycode declarations +enum cadence_keycodes { + EDIT_GEN = RGB_IEF + 1, + EDIT_PLACE, + EDIT_ETCH, + EDIT_SHAPE, + ROUTE, + SLIDE, + VIA, + MEASURE, + SHOW, + UPDATE_SHAPES, + ROTATE, + MIRROR, + PAM, + MOVE +}; + +// Tap Dance Declarations +enum { + TD_NUM_TOGGLE = 0, + TD_EDIT_GEN_TOGGLE, + TD_M1, + TD_M2, + TD_M3, + TD_M4, + TD_M5, + TD_M6, + TD_M7, + TD_M8, + TD_M9, + TD_M10, + TD_M11, + TD_M12, +}; + +// TD function for 1 tap, toggle layer; 2 taps, press numlock +void tap_dance_num_toggle(tap_dance_state_t *state, void *user_data){ + switch(state->count){ + case 1: + layer_invert(_LAYER_CAD); + break; + case 2: + tap_code16(KC_NUM); + break; + } +} + +// Tap Dance Definitions +tap_dance_action_t tap_dance_actions[] = { + [TD_NUM_TOGGLE] = ACTION_TAP_DANCE_FN(tap_dance_num_toggle), + + [TD_M1] = ACTION_TAP_DANCE_DOUBLE(KC_F13, LCTL(KC_F13)), + [TD_M2] = ACTION_TAP_DANCE_DOUBLE(KC_F14, LCTL(KC_F14)), + [TD_M3] = ACTION_TAP_DANCE_DOUBLE(KC_F15, LCTL(KC_F15)), + [TD_M4] = ACTION_TAP_DANCE_DOUBLE(KC_F16, LCTL(KC_F16)), + [TD_M5] = ACTION_TAP_DANCE_DOUBLE(KC_F17, LCTL(KC_F17)), + [TD_M6] = ACTION_TAP_DANCE_DOUBLE(KC_F18, LCTL(KC_F18)), + [TD_M7] = ACTION_TAP_DANCE_DOUBLE(KC_F19, LCTL(KC_F19)), + [TD_M8] = ACTION_TAP_DANCE_DOUBLE(KC_F20, LCTL(KC_F20)), + [TD_M9] = ACTION_TAP_DANCE_DOUBLE(KC_F21, LCTL(KC_F21)), + [TD_M10] = ACTION_TAP_DANCE_DOUBLE(KC_F22, LCTL(KC_F22)), + [TD_M11] = ACTION_TAP_DANCE_DOUBLE(KC_F23, LCTL(KC_F23)), + [TD_M12] = ACTION_TAP_DANCE_DOUBLE(KC_F24, LCTL(KC_F24)) +}; + +// Setup LED map +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5 }, + { 6, 7, 8, 9, 10, 11 }, + { 12, 13, 14, 15, 16, 17 }, + { 18, 19, 20, 21, 22, NO_LED }, + { 23, 24, 25, 26, 27, 28 }, + { 29, 30, 31, NO_LED, 32, NO_LED } +}, { + // LED Index to Physical Position + { 0, 0}, { 43, 0}, { 96, 0}, {139, 0}, {181, 0}, {224, 0}, + { 0, 17}, { 43, 17}, { 96, 17}, {139, 17}, {181, 17}, {224, 17}, + { 0, 29}, { 43, 29}, { 96, 29}, {139, 29}, {181, 29}, {224, 35}, + { 0, 41}, { 43, 41}, { 96, 41}, {139, 41}, {181, 41}, { 0, 52}, + { 43, 52}, { 96, 52}, {139, 52}, {181, 52}, {224, 58}, { 0, 64}, + { 43, 64}, {117, 64}, {181, 64} +}, { + // LED Index to Flag + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT +} }; + +// Setup keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │F1 │F2 │F3 │F4 │ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [_LAYER_BL] = LAYOUT_numpad_6x6( + TD(TD_M1), TD(TD_M12), LT(_LAYER_RGB, KC_F1), KC_F2, KC_F3, KC_F4, + TD(TD_M2), TD(TD_M11), TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS, + TD(TD_M3), TD(TD_M10), KC_P7, KC_P8, KC_P9, KC_PPLS, + TD(TD_M4), TD(TD_M9), KC_P4, KC_P5, KC_P6, + TD(TD_M5), TD(TD_M8), KC_P1, KC_P2, KC_P3, KC_PENT, + TD(TD_M6), TD(TD_M7), KC_P0, KC_PDOT + ), + + /* + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │F1 │F2 │F3 │F4 │ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [_LAYER_CAD] = LAYOUT_numpad_6x6( + _______, _______, EDIT_GEN, EDIT_PLACE, EDIT_ETCH, EDIT_SHAPE, + _______, _______, TD(TD_NUM_TOGGLE), _______, _______, _______, + _______, _______, ROUTE, SLIDE, VIA, KC_F8, + _______, _______, MEASURE, SHOW, UPDATE_SHAPES, + _______, _______, ROTATE, MIRROR, PAM, KC_F6, + _______, _______, MOVE, KC_F9 + ), + + /* + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │F1 │F2 │F3 │F4 │ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [_LAYER_RGB] = LAYOUT_numpad_6x6( + _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, RGB_DEF, RGB_IEF, RGB_SPI, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_SPD, + _______, _______, _______, _______ + ) +}; + +// Set the layer toggle key to an indication of the active layer. This is a +// bit janky and should be done better, but I'm trying to avoid scope creep. +bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (layer_state_is(_LAYER_CAD) && !rgb_matrix_idle_mode()) { + // Get a hue that contrasts with current hue + uint8_t hue = rgb_matrix_get_hue() + 127; + // Make sure saturation is high enough to distiguish between hues + uint8_t sat = 255; + uint8_t val = min((uint16_t) rgb_matrix_get_val() + 50, 255); + RGB rgb = hsv_to_rgb((HSV) {hue, sat, val}); + rgb_matrix_set_color(_LAYER_CAD_LED_INDEX, rgb.r, rgb.g, rgb.b); + } + return false; +} + +// Process custom keycodes +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + switch (keycode) { + + // Custom macro strings for Cadence + case EDIT_GEN: + if (record->event.pressed) { + SEND_STRING(STR_EDIT_GEN); + } + break; + case EDIT_PLACE: + if (record->event.pressed) { + SEND_STRING(STR_EDIT_PLACE); + } + break; + case EDIT_ETCH: + if (record->event.pressed) { + SEND_STRING(STR_EDIT_ETCH); + } + break; + case EDIT_SHAPE: + if (record->event.pressed) { + SEND_STRING(STR_EDIT_SHAPE); + } + break; + case ROUTE: + if (record->event.pressed) { + SEND_STRING(STR_ROUTE); + } + break; + case SLIDE: + if (record->event.pressed) { + SEND_STRING(STR_SLIDE); + } + break; + case VIA: + if (record->event.pressed) { + SEND_STRING(STR_VIA); + } + break; + case MEASURE: + if (record->event.pressed) { + SEND_STRING(STR_MEASURE); + } + break; + case SHOW: + if (record->event.pressed) { + SEND_STRING(STR_SHOW); + } + break; + case UPDATE_SHAPES: + if (record->event.pressed) { + SEND_STRING(STR_UPDATE_SHAPES); + } + break; + case ROTATE: + if (record->event.pressed) { + SEND_STRING(STR_ROTATE); + } + break; + case MIRROR: + if (record->event.pressed) { + SEND_STRING(STR_MIRROR); + } + break; + case PAM: + if (record->event.pressed) { + SEND_STRING(STR_PAM); + } + break; + case MOVE: + if (record->event.pressed) { + SEND_STRING(STR_MOVE); + } + break; + } + return true; +}; diff --git a/keyboards/nifty_numpad/keymaps/cadence/rules.mk b/keyboards/nifty_numpad/keymaps/cadence/rules.mk new file mode 100644 index 00000000000..3deed59d6eb --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/cadence/rules.mk @@ -0,0 +1,6 @@ +TAP_DANCE_ENABLE=yes +RGB_IDLE_ENABLE=yes + +ifeq ($(strip $(RGB_IDLE_ENABLE)), yes) + OPT_DEFS += -DRGB_IDLE_ENABLE +endif \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/default/keymap.c b/keyboards/nifty_numpad/keymaps/default/keymap.c index b98d95664a3..d3a8129c399 100644 --- a/keyboards/nifty_numpad/keymaps/default/keymap.c +++ b/keyboards/nifty_numpad/keymaps/default/keymap.c @@ -5,27 +5,14 @@ #include "nifty_numpad.h" #include "quantum.h" -// Custom String Definitions -#define STR_EDIT_GEN "emg" -#define STR_EDIT_PLACE "emp" -#define STR_EDIT_ETCH "eme" -#define STR_EDIT_SHAPE "ems" -#define STR_ROUTE "xx" -#define STR_SLIDE "dd" -#define STR_VIA "vv" -#define STR_MEASURE "me" -#define STR_SHOW "sh" -#define STR_UPDATE_SHAPES "sup" -#define STR_ROTATE "rr" -#define STR_MIRROR "ff" -#define STR_PAM "pam" -#define STR_MOVE "mm" - // Layer Defines #define _LAYER_BL 0 -#define _LAYER_CAD 1 +#define _LAYER_1 1 -#define _LAYER_CAD_LED_INDEX 8 +// Layer Indicator LED index +#define _NUM_LED_INDEX 8 + +#define TAPPING_TERM 200 // Tap Dance Declarations enum { @@ -49,7 +36,7 @@ enum { void tap_dance_num_toggle(tap_dance_state_t *state, void *user_data){ switch(state->count){ case 1: - layer_invert(_LAYER_CAD); + layer_invert(_LAYER_1); break; case 2: tap_code16(KC_NUM); @@ -105,8 +92,12 @@ led_config_t g_led_config = { { // Setup keymap const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* + * SCN -> Screenshot + * WIN -> Task View + * EXP -> Open Explorer + * BCK -> Backspace * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F13│F19│ │F1 │F2 │F3 │F4 │ + * │F13│F19│ │SCN│WIN│EXP│BCK│ * └───┴───┘ └───┴───┴───┴───┘ * ┌───┬───┐ ┌───┬───┬───┬───┐ * │F14│F20│ │Num│ / │ * │ - │ @@ -121,53 +112,69 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └───┴───┘ └───────┴───┴───┘ */ [_LAYER_BL] = LAYOUT_numpad_6x6( - TD(TD_M1), TD(TD_M12), LT(_LAYER_RGB, KC_F1), KC_F2, KC_F3, KC_F4, - TD(TD_M2), TD(TD_M11), TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS, - TD(TD_M3), TD(TD_M10), KC_P7, KC_P8, KC_P9, KC_PPLS, - TD(TD_M4), TD(TD_M9), KC_P4, KC_P5, KC_P6, - TD(TD_M5), TD(TD_M8), KC_P1, KC_P2, KC_P3, KC_PENT, - TD(TD_M6), TD(TD_M7), KC_P0, KC_PDOT + TD(TD_M1), TD(TD_M12), LT(_LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)), + TD(TD_M2), TD(TD_M11), TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS, + TD(TD_M3), TD(TD_M10), KC_P7, KC_P8, KC_P9, KC_PPLS, + TD(TD_M4), TD(TD_M9), KC_P4, KC_P5, KC_P6, + TD(TD_M5), TD(TD_M8), KC_P1, KC_P2, KC_P3, KC_PENT, + TD(TD_M6), TD(TD_M7), KC_P0, KC_PDOT ), /* * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F13│F19│ │F1 │F2 │F3 │F4 │ + * │F13│F19│ │F9 │F10│F11│F12│ * └───┴───┘ └───┴───┴───┴───┘ * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F14│F20│ │Num│ / │ * │ - │ + * │___│___│ │___│~/ │~* │___│ * ├───┼───┤ ├───┼───┼───┼───┤ - * │F15│F21│ │ 7 │ 8 │ 9 │ │ - * ├───┼───┤ ├───┼───┼───┤ + │ - * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * │___│___│ │~7 │~8 │~9 │ │ + * ├───┼───┤ ├───┼───┼───┤___│ + * │___│___│ │~4 │~5 │~6 │ │ * ├───┼───┤ ├───┼───┼───┼───┤ - * │F17│F23│ │ 1 │ 2 │ 3 │ │ - * ├───┼───│ ├───┴───┼───┤Ent│ - * │F18│F24│ │ 0 │ . │ │ + * │___│___│ │~1 │~2 │~3 │ │ + * ├───┼───│ ├───┴───┼───┤___│ + * │___│___│ │~0 │~. │ │ * └───┴───┘ └───────┴───┴───┘ */ - [_LAYER_CAD] = LAYOUT_numpad_6x6( - _______, _______, EDIT_GEN, EDIT_PLACE, EDIT_ETCH, EDIT_SHAPE, - _______, _______, TD(TD_NUM_TOGGLE), _______, _______, _______, - _______, _______, ROUTE, SLIDE, VIA, KC_F8, - _______, _______, MEASURE, SHOW, UPDATE_SHAPES, - _______, _______, ROTATE, MIRROR, PAM, KC_F6, - _______, _______, MOVE, KC_F9 + [_LAYER_1] = LAYOUT_numpad_6x6( + _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, TD(TD_NUM_TOGGLE), RCTL(KC_PSLS), RCTL(KC_PAST), _______, + _______, _______, RCTL(KC_P7), RCTL(KC_P8), RCTL(KC_P9), _______, + _______, _______, RCTL(KC_P4), RCTL(KC_P5), RCTL(KC_P6), + _______, _______, RCTL(KC_P1), RCTL(KC_P2), RCTL(KC_P3), _______, + _______, _______, RCTL(KC_P0), RCTL(KC_PDOT) ), /* + * HUI -> Hue Increase + * HUD -> Hue Decrease + * + * SAI -> Saturation Increase + * SAD -> Saturation Decrease + * + * VAI -> Value Increase + * VAD -> Value Decrease + * + * SPI -> Speed Increase + * SPD -> Speed Decrease + * + * DEF -> Set default effect mode + * IEF -> Set idle effect mode + * + * ___ -> Base Layer Function * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F13│F19│ │F1 │F2 │F3 │F4 │ + * │___│___│ │___│HUI│SAI│VAI│ * └───┴───┘ └───┴───┴───┴───┘ * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F14│F20│ │Num│ / │ * │ - │ + * │___│___│ │Num│HUD│SAD│VAD│ * ├───┼───┤ ├───┼───┼───┼───┤ - * │F15│F21│ │ 7 │ 8 │ 9 │ │ - * ├───┼───┤ ├───┼───┼───┤ + │ - * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * │___│___│ │___│DEF│IEF│ │ + * ├───┼───┤ ├───┼───┼───┤SPI│ + * │___│___│ │___│___│___│ │ * ├───┼───┤ ├───┼───┼───┼───┤ - * │F17│F23│ │ 1 │ 2 │ 3 │ │ - * ├───┼───│ ├───┴───┼───┤Ent│ - * │F18│F24│ │ 0 │ . │ │ + * │___│___│ │___│___│___│ │ + * ├───┼───│ ├───┴───┼───┤SPD│ + * │___│___│ │___ │___│ │ * └───┴───┘ └───────┴───┴───┘ */ [_LAYER_RGB] = LAYOUT_numpad_6x6( @@ -183,94 +190,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Set the layer toggle key to an indication of the active layer. This is a // bit janky and should be done better, but I'm trying to avoid scope creep. bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - if (layer_state_is(_LAYER_CAD) && !rgb_matrix_idle_mode()) { + if (layer_state_is(_LAYER_1) && !rgb_matrix_idle_mode()) { // Get a hue that contrasts with current hue uint8_t hue = rgb_matrix_get_hue() + 127; // Make sure saturation is high enough to distiguish between hues uint8_t sat = 255; uint8_t val = min((uint16_t) rgb_matrix_get_val() + 50, 255); RGB rgb = hsv_to_rgb((HSV) {hue, sat, val}); - rgb_matrix_set_color(_LAYER_CAD_LED_INDEX, rgb.r, rgb.g, rgb.b); + rgb_matrix_set_color(_NUM_LED_INDEX, rgb.r, rgb.g, rgb.b); } return false; } - -// Process custom keycodes -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - - switch (keycode) { - - // Custom macro strings for Cadence - case EDIT_GEN: - if (record->event.pressed) { - SEND_STRING(STR_EDIT_GEN); - } - break; - case EDIT_PLACE: - if (record->event.pressed) { - SEND_STRING(STR_EDIT_PLACE); - } - break; - case EDIT_ETCH: - if (record->event.pressed) { - SEND_STRING(STR_EDIT_ETCH); - } - break; - case EDIT_SHAPE: - if (record->event.pressed) { - SEND_STRING(STR_EDIT_SHAPE); - } - break; - case ROUTE: - if (record->event.pressed) { - SEND_STRING(STR_ROUTE); - } - break; - case SLIDE: - if (record->event.pressed) { - SEND_STRING(STR_SLIDE); - } - break; - case VIA: - if (record->event.pressed) { - SEND_STRING(STR_VIA); - } - break; - case MEASURE: - if (record->event.pressed) { - SEND_STRING(STR_MEASURE); - } - break; - case SHOW: - if (record->event.pressed) { - SEND_STRING(STR_SHOW); - } - break; - case UPDATE_SHAPES: - if (record->event.pressed) { - SEND_STRING(STR_UPDATE_SHAPES); - } - break; - case ROTATE: - if (record->event.pressed) { - SEND_STRING(STR_ROTATE); - } - break; - case MIRROR: - if (record->event.pressed) { - SEND_STRING(STR_MIRROR); - } - break; - case PAM: - if (record->event.pressed) { - SEND_STRING(STR_PAM); - } - break; - case MOVE: - if (record->event.pressed) { - SEND_STRING(STR_MOVE); - } - break; - } - return true; -}; diff --git a/keyboards/nifty_numpad/keymaps/default/rules.mk b/keyboards/nifty_numpad/keymaps/default/rules.mk new file mode 100644 index 00000000000..3deed59d6eb --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/default/rules.mk @@ -0,0 +1,6 @@ +TAP_DANCE_ENABLE=yes +RGB_IDLE_ENABLE=yes + +ifeq ($(strip $(RGB_IDLE_ENABLE)), yes) + OPT_DEFS += -DRGB_IDLE_ENABLE +endif \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/via/keymap.c b/keyboards/nifty_numpad/keymaps/via/keymap.c new file mode 100644 index 00000000000..35e65f8a849 --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/via/keymap.c @@ -0,0 +1,106 @@ +#include QMK_KEYBOARD_H +#include "nifty_numpad.h" +#include "quantum.h" + +// Layer Defines +#define _LAYER_BL 0 +#define _LAYER_RGB 3 + +// Setup LED map +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5 }, + { 6, 7, 8, 9, 10, 11 }, + { 12, 13, 14, 15, 16, 17 }, + { 18, 19, 20, 21, 22, NO_LED }, + { 23, 24, 25, 26, 27, 28 }, + { 29, 30, 31, NO_LED, 32, NO_LED } +}, { + // LED Index to Physical Position + { 0, 0}, { 43, 0}, { 96, 0}, {139, 0}, {181, 0}, {224, 0}, + { 0, 17}, { 43, 17}, { 96, 17}, {139, 17}, {181, 17}, {224, 17}, + { 0, 29}, { 43, 29}, { 96, 29}, {139, 29}, {181, 29}, {224, 35}, + { 0, 41}, { 43, 41}, { 96, 41}, {139, 41}, {181, 41}, { 0, 52}, + { 43, 52}, { 96, 52}, {139, 52}, {181, 52}, {224, 58}, { 0, 64}, + { 43, 64}, {117, 64}, {181, 64} +}, { + // LED Index to Flag + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, + LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT +} }; + +// Setup keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * SCN -> Screenshot + * WIN -> Task View + * EXP -> Open Explorer + * BCK -> Backspace + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │BCK│WIN│EXP│SCN│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [_LAYER_BL] = LAYOUT_numpad_6x6( + KC_F13, KC_F19, LT(_LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)), + KC_F14, KC_F20, MT(MOD_RCTL, KC_NUM), KC_PSLS, KC_PAST, KC_PMNS, + KC_F15, KC_F21, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_F16, KC_F22, KC_P4, KC_P5, KC_P6, + KC_F17, KC_F23, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_F18, KC_F24, KC_P0, KC_PDOT + ), + + /* + * HUI -> Hue Increase + * HUD -> Hue Decrease + * + * SAI -> Saturation Increase + * SAD -> Saturation Decrease + * + * VAI -> Value Increase + * VAD -> Value Decrease + * + * SPI -> Speed Increase + * SPD -> Speed Decrease + * + * MOD -> RGB Mode (effect cycle) + * + * ___ -> Base Layer Function + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │___│HUI│SAI│VAI│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │Num│HUD│SAD│VAD│ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │___│MOD│___│ │ + * ├───┼───┤ ├───┼───┼───┤SPI│ + * │___│___│ │___│___│___│ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │___│___│___│ │ + * ├───┼───│ ├───┴───┼───┤SPD│ + * │___│___│ │___ │___│ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [_LAYER_RGB] = LAYOUT_numpad_6x6( + _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, RGB_MOD, _______, RGB_SPI, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_SPD, + _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/via/rules.mk b/keyboards/nifty_numpad/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/nifty_numpad/nifty_numpad.c b/keyboards/nifty_numpad/nifty_numpad.c index 57972ac69bf..dc2429b881f 100644 --- a/keyboards/nifty_numpad/nifty_numpad.c +++ b/keyboards/nifty_numpad/nifty_numpad.c @@ -17,6 +17,7 @@ #include QMK_KEYBOARD_H #include "quantum.h" +#ifdef RGB_IDLE_ENABLE typedef struct { uint8_t mode; uint8_t speed; @@ -54,8 +55,11 @@ void rgb_matrix_state_restore(rgb_matrix_state_t* state){ rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v); rgb_matrix_set_speed_noeeprom(state->speed); } +#endif void matrix_scan_kb(void) { + + #ifdef RGB_IDLE_ENABLE // Check if enough time has passed since last keypress to go into idle mode if ( timer_elapsed32(idle_timer) > RGB_IDLE_TIMEOUT_MS && !rgb_idle_mode ) { rgb_matrix_state_save(&active_rgb_matrix); @@ -64,12 +68,15 @@ void matrix_scan_kb(void) { rgb_matrix_state_restore(&idle_rgb_matrix); } + #endif matrix_scan_user(); }; layer_state_t layer_state_set_kb(layer_state_t state) { + + #ifdef RGB_IDLE_ENABLE // Track if the last layer was the RGB edit layer static bool rgb_was_on = false; @@ -91,6 +98,7 @@ layer_state_t layer_state_set_kb(layer_state_t state) { config.idle_rgb_matrix = idle_rgb_matrix; eeconfig_update_kb_datablock(&config); } + #endif return layer_state_set_user(state); } @@ -98,6 +106,7 @@ layer_state_t layer_state_set_kb(layer_state_t state) { // Process custom keycodes bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + #ifdef RGB_IDLE_ENABLE // If we were idling and a key was pressed, restore active RGB if (record->event.pressed) { idle_timer = timer_read32(); @@ -106,10 +115,12 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { rgb_idle_mode = false; } } + #endif switch (keycode) { + #ifdef RGB_IDLE_ENABLE // Handle all the RGB settings case RGB_DEF: if (record->event.pressed) { @@ -191,11 +202,13 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { rgb_matrix_state_save(&active_rgb_matrix); } return false; + #endif } return process_record_user(keycode, record); }; void keyboard_post_init_kb(void) { + #ifdef RGB_IDLE_ENABLE // Read in the RGB Matrices from before eeconfig_read_kb_datablock(&config); active_rgb_matrix = config.active_rgb_matrix; @@ -204,12 +217,14 @@ void keyboard_post_init_kb(void) { rgb_matrix_state_restore(&active_rgb_matrix); // Start the idle timer for idle mode idle_timer = timer_read32(); + #endif keyboard_post_init_user(); } // Setup default EEPROM config values void eeconfig_init_kb_datablock(void){ + #ifdef RGB_IDLE_ENABLE rgb_matrix_state_t default_active_rgb_matrix; rgb_matrix_state_t default_idle_rgb_matrix; @@ -228,5 +243,6 @@ void eeconfig_init_kb_datablock(void){ #if (EECONFIG_USER_DATA_SIZE) > 0 eeconfig_init_user_datablock(); - #endif + #endif // EECONFIG_USER_DATA_SIZE + #endif // RGB_IDLE_ENABLE } diff --git a/keyboards/nifty_numpad/nifty_numpad.h b/keyboards/nifty_numpad/nifty_numpad.h index d19dbb5a294..84d8530428a 100644 --- a/keyboards/nifty_numpad/nifty_numpad.h +++ b/keyboards/nifty_numpad/nifty_numpad.h @@ -33,33 +33,6 @@ _a < _b ? _a : _b; \ }) -// Custom kycode declarations -enum custom_keycodes { - EDIT_GEN = SAFE_RANGE, - EDIT_PLACE, - EDIT_ETCH, - EDIT_SHAPE, - ROUTE, - SLIDE, - VIA, - MEASURE, - SHOW, - UPDATE_SHAPES, - ROTATE, - MIRROR, - PAM, - MOVE, - RGB_DEF, - RGB_IEF -}; - -// Layer Defines -#define _LAYER_RGB 15 - -// Custom Setup -#define TAPPING_TERM 200 -#define RGB_IDLE_TIMEOUT_MS (10*60*1000) - /* * ┌───┬───┐ ┌───┬───┬───┬───┐ * │F13│F19│ │F1 │F2 │F3 │F4 │ @@ -95,5 +68,18 @@ enum custom_keycodes { { K50, K51, K52, XXX, K54, XXX} \ } + +#ifdef RGB_IDLE_ENABLE +#define _LAYER_RGB 15 +// Custom keycode declarations +enum custom_keycodes { + RGB_DEF = SAFE_RANGE, + RGB_IEF +}; + +#define RGB_IDLE_TIMEOUT_MS (10*60*1000) + // Functions exposed by nifty_numpad.c -bool rgb_matrix_idle_mode(void); \ No newline at end of file +bool rgb_matrix_idle_mode(void); + +#endif diff --git a/keyboards/nifty_numpad/rules.mk b/keyboards/nifty_numpad/rules.mk index 157dbfacfbb..414312ec805 100644 --- a/keyboards/nifty_numpad/rules.mk +++ b/keyboards/nifty_numpad/rules.mk @@ -1,4 +1,3 @@ -TAP_DANCE_ENABLE=yes RGB_MATRIX_ENABLE=yes RGB_MATRIX_DRIVER=WS2812 WS2812_DRIVER=vendor \ No newline at end of file From 9ea6afa4eeea019b46745a47c1239a98dab2c555 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sun, 13 Aug 2023 11:30:28 -0500 Subject: [PATCH 06/15] Fixed qmk_firmware submodule issue --- .gitmodules | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 745c0262b60..7d8dbcb4ed0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,6 +25,3 @@ path = lib/lvgl url = https://github.com/qmk/lvgl.git branch = release/v8.2 -[submodule "qmk_firmware"] - path = qmk_firmware - url = git@github.com:Acliad/qmk_firmware.git From bcfceaa41df10966553f713bfe6360ab7f21ac3c Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sat, 2 Sep 2023 16:28:01 -0500 Subject: [PATCH 07/15] Updated Nifty Numpad readme Updated Cadence keymap Updated vscode settings to match QMK master --- .vscode/settings.json | 12 +--- keyboards/nifty_numpad/config.h | 58 +++++++++++++------ .../nifty_numpad/keymaps/cadence/keymap.c | 47 ++++++++------- keyboards/nifty_numpad/keymaps/via/keymap.c | 1 + keyboards/nifty_numpad/readme.md | 28 +++++---- 5 files changed, 82 insertions(+), 64 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 2fc34952a67..f369ecb1748 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,7 +11,6 @@ }, "files.associations": { "*.h": "c", - "*.ino": "cpp", "*.c": "c", "*.inc": "c", "*.cpp": "cpp", @@ -19,16 +18,7 @@ "xstddef": "c", "type_traits": "c", "utility": "c", - "ranges": "c", - "ios": "c", - "regex": "c", - "random": "c", - "variant": "c", - "chrono": "c", - "limits": "c", - "algorithm": "c", - "locale": "c", - "string": "c" + "ranges": "c" }, "[markdown]": { "editor.trimAutoWhitespace": false, diff --git a/keyboards/nifty_numpad/config.h b/keyboards/nifty_numpad/config.h index b2f5e8eff08..3bc1724debc 100644 --- a/keyboards/nifty_numpad/config.h +++ b/keyboards/nifty_numpad/config.h @@ -9,24 +9,6 @@ #define RGB_MATRIX_LED_COUNT 33 #define WS2812_DI_PIN GP19 -// RGB Matrix Enabled Effects -#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -#define ENABLE_RGB_MATRIX_BREATHING -#define ENABLE_RGB_MATRIX_BAND_SAT -#define ENABLE_RGB_MATRIX_BAND_VAL -#define ENABLE_RGB_MATRIX_CYCLE_ALL -#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define ENABLE_RGB_MATRIX_HUE_BREATHING -#define ENABLE_RGB_MATRIX_HUE_PENDULUM -#define ENABLE_RGB_MATRIX_HUE_WAVE -#define ENABLE_RGB_MATRIX_PIXEL_RAIN -#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#define ENABLE_RGB_MATRIX_SPLASH -#define ENABLE_RGB_MATRIX_SOLID_SPLASH - // RGB Matrix Parameters #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set #define RGB_MATRIX_DEFAULT_SPD 100 // Sets the default animation speed, if none has been set @@ -37,4 +19,42 @@ #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define RGB_MATRIX_KEYPRESSES \ No newline at end of file +#define RGB_MATRIX_KEYPRESSES + +// RGB Matrix Enabled Effects +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/cadence/keymap.c b/keyboards/nifty_numpad/keymaps/cadence/keymap.c index 2f7a99298f0..c973550ece4 100644 --- a/keyboards/nifty_numpad/keymaps/cadence/keymap.c +++ b/keyboards/nifty_numpad/keymaps/cadence/keymap.c @@ -13,18 +13,17 @@ #define STR_ROUTE "xx" #define STR_SLIDE "dd" #define STR_VIA "vv" -#define STR_MEASURE "me" +#define STR_MEASURE "~m" #define STR_SHOW "sh" #define STR_UPDATE_SHAPES "sup" -#define STR_ROTATE "rr" -#define STR_MIRROR "ff" +#define STR_ROTATE "r" +#define STR_MIRROR "f" #define STR_PAM "pam" -#define STR_MOVE "mm" +#define STR_MOVE "m" // Layer Defines #define _LAYER_BL 0 #define _LAYER_CAD 1 -#define _LAYER_RGB 15 #define _LAYER_CAD_LED_INDEX 8 @@ -82,18 +81,18 @@ void tap_dance_num_toggle(tap_dance_state_t *state, void *user_data){ tap_dance_action_t tap_dance_actions[] = { [TD_NUM_TOGGLE] = ACTION_TAP_DANCE_FN(tap_dance_num_toggle), - [TD_M1] = ACTION_TAP_DANCE_DOUBLE(KC_F13, LCTL(KC_F13)), - [TD_M2] = ACTION_TAP_DANCE_DOUBLE(KC_F14, LCTL(KC_F14)), - [TD_M3] = ACTION_TAP_DANCE_DOUBLE(KC_F15, LCTL(KC_F15)), - [TD_M4] = ACTION_TAP_DANCE_DOUBLE(KC_F16, LCTL(KC_F16)), - [TD_M5] = ACTION_TAP_DANCE_DOUBLE(KC_F17, LCTL(KC_F17)), - [TD_M6] = ACTION_TAP_DANCE_DOUBLE(KC_F18, LCTL(KC_F18)), - [TD_M7] = ACTION_TAP_DANCE_DOUBLE(KC_F19, LCTL(KC_F19)), - [TD_M8] = ACTION_TAP_DANCE_DOUBLE(KC_F20, LCTL(KC_F20)), - [TD_M9] = ACTION_TAP_DANCE_DOUBLE(KC_F21, LCTL(KC_F21)), - [TD_M10] = ACTION_TAP_DANCE_DOUBLE(KC_F22, LCTL(KC_F22)), - [TD_M11] = ACTION_TAP_DANCE_DOUBLE(KC_F23, LCTL(KC_F23)), - [TD_M12] = ACTION_TAP_DANCE_DOUBLE(KC_F24, LCTL(KC_F24)) + [TD_M1] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_1), LCTL(KC_1)), + [TD_M2] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_2), LCTL(KC_2)), + [TD_M3] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_3), LCTL(KC_3)), + [TD_M4] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_4), LCTL(KC_4)), + [TD_M5] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_5), LCTL(KC_5)), + [TD_M6] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_F5), LCTL(KC_F5)), + [TD_M7] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_F6), LCTL(KC_F6)), + [TD_M8] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_6), LCTL(KC_6)), + [TD_M9] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_7), LCTL(KC_7)), + [TD_M10] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_8), LCTL(KC_8)), + [TD_M11] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_9), LCTL(KC_9)), + [TD_M12] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_0), LCTL(KC_0)) }; // Setup LED map @@ -142,12 +141,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * └───┴───┘ └───────┴───┴───┘ */ [_LAYER_BL] = LAYOUT_numpad_6x6( - TD(TD_M1), TD(TD_M12), LT(_LAYER_RGB, KC_F1), KC_F2, KC_F3, KC_F4, - TD(TD_M2), TD(TD_M11), TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS, - TD(TD_M3), TD(TD_M10), KC_P7, KC_P8, KC_P9, KC_PPLS, - TD(TD_M4), TD(TD_M9), KC_P4, KC_P5, KC_P6, - TD(TD_M5), TD(TD_M8), KC_P1, KC_P2, KC_P3, KC_PENT, - TD(TD_M6), TD(TD_M7), KC_P0, KC_PDOT + TD(TD_M1), TD(TD_M12), LT(_LAYER_RGB, (KC_F1)), LALT(LWIN(KC_F)), KC_F3, KC_BACKSPACE, + TD(TD_M2), TD(TD_M11), TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS, + TD(TD_M3), TD(TD_M10), KC_P7, KC_P8, KC_P9, KC_PPLS, + TD(TD_M4), TD(TD_M9), KC_P4, KC_P5, KC_P6, + TD(TD_M5), TD(TD_M8), KC_P1, KC_P2, KC_P3, KC_PENT, + TD(TD_M6), TD(TD_M7), KC_P0, KC_PDOT ), /* @@ -171,7 +170,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, TD(TD_NUM_TOGGLE), _______, _______, _______, _______, _______, ROUTE, SLIDE, VIA, KC_F8, _______, _______, MEASURE, SHOW, UPDATE_SHAPES, - _______, _______, ROTATE, MIRROR, PAM, KC_F6, + _______, _______, ROTATE, MIRROR, PAM, KC_ESC, _______, _______, MOVE, KC_F9 ), diff --git a/keyboards/nifty_numpad/keymaps/via/keymap.c b/keyboards/nifty_numpad/keymaps/via/keymap.c index 35e65f8a849..9460e54e4f4 100644 --- a/keyboards/nifty_numpad/keymaps/via/keymap.c +++ b/keyboards/nifty_numpad/keymaps/via/keymap.c @@ -6,6 +6,7 @@ #define _LAYER_BL 0 #define _LAYER_RGB 3 + // Setup LED map led_config_t g_led_config = { { // Key Matrix to LED Index diff --git a/keyboards/nifty_numpad/readme.md b/keyboards/nifty_numpad/readme.md index 9d091ea7cfd..8bb0bc82f60 100644 --- a/keyboards/nifty_numpad/readme.md +++ b/keyboards/nifty_numpad/readme.md @@ -1,12 +1,21 @@ -# nifty_numpad +# Nifty Numpad -![nifty_numpad](imgur.com image replace me!) +![Nifty Numpad](https://gitlab.com/Acliad/nifty-numpad/-/raw/main/Docs/Render%20(Blue,%20SS%20screws).png) -*A short description of the keyboard/project* +Nifty Numpad is a full sized numpad with an extra row and two extra columns of macro keys. It was created because I wanted a companion to my TKL keyboard for work. My main workflow involves heavy use of ECAD programs, so the design was tailored for that, but it is generic enough to be nice for many workflows! -* Keyboard Maintainer: [Isaac Rex](https://github.com/Isaac Rex) -* Hardware Supported: *The PCBs, controllers supported* -* Hardware Availability: *Links to where you can find this hardware* + +The main features are: +- Full sized numpad with row of macro/function keys on the top +- Two extra columns of macro keys +- Cherry MX style socketed switches +- Key Backlights +- 3D printable case (FDM or resin) + +### Development Information: +* Keyboard Maintainer: [Isaac Rex](https://github.com/Acliad/) +* Hardware Supported: RP2040 +* Hardware Availability: See [The GitLab Page](https://gitlab.com/Acliad/nifty-numpad) for full details Make example for this keyboard (after setting up your build environment): @@ -20,8 +29,7 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to ## Bootloader -Enter the bootloader in 3 ways: +Enter the bootloader in 2 ways: -* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard -* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead -* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left) and plug in the keyboard +* **Physical reset button**: Press the ```RST``` button while holding the ```BOOT_SEL``` button on the back of the PCB From dabe97f984805f1f79d0e7207e9d7d1376287306 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sun, 4 Feb 2024 19:10:16 -0600 Subject: [PATCH 08/15] Added Nifty Numpad --- keyboards/nifty_numpad/config.h | 6 + keyboards/nifty_numpad/info.json | 150 ++++++++++++ .../nifty_numpad/keymaps/default/keymap.c | 83 +++++++ .../keymaps/idle_rgb_example/keymap.c | 177 ++++++++++++++ .../keymaps/idle_rgb_example/rules.mk | 2 + keyboards/nifty_numpad/keymaps/via/keymap.c | 81 +++++++ keyboards/nifty_numpad/keymaps/via/rules.mk | 1 + keyboards/nifty_numpad/nifty_numpad.c | 229 ++++++++++++++++++ keyboards/nifty_numpad/nifty_numpad.h | 52 ++++ keyboards/nifty_numpad/post_rules.mk | 3 + keyboards/nifty_numpad/readme.md | 35 +++ keyboards/nifty_numpad/rules.mk | 0 12 files changed, 819 insertions(+) create mode 100644 keyboards/nifty_numpad/config.h create mode 100644 keyboards/nifty_numpad/info.json create mode 100644 keyboards/nifty_numpad/keymaps/default/keymap.c create mode 100644 keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c create mode 100644 keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk create mode 100644 keyboards/nifty_numpad/keymaps/via/keymap.c create mode 100644 keyboards/nifty_numpad/keymaps/via/rules.mk create mode 100644 keyboards/nifty_numpad/nifty_numpad.c create mode 100644 keyboards/nifty_numpad/nifty_numpad.h create mode 100644 keyboards/nifty_numpad/post_rules.mk create mode 100644 keyboards/nifty_numpad/readme.md create mode 100644 keyboards/nifty_numpad/rules.mk diff --git a/keyboards/nifty_numpad/config.h b/keyboards/nifty_numpad/config.h new file mode 100644 index 00000000000..50a59bae83a --- /dev/null +++ b/keyboards/nifty_numpad/config.h @@ -0,0 +1,6 @@ +// Copyright 2023 Isaac Rex (@Acliad) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define EECONFIG_KB_DATA_SIZE 10 diff --git a/keyboards/nifty_numpad/info.json b/keyboards/nifty_numpad/info.json new file mode 100644 index 00000000000..ae6f7bd07da --- /dev/null +++ b/keyboards/nifty_numpad/info.json @@ -0,0 +1,150 @@ +{ + "manufacturer": "Isaac Rex", + "keyboard_name": "Nifty Numpad", + "maintainer": "Acliad", + "bootloader": "rp2040", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP17", "GP18", "GP15", "GP13", "GP14", "GP12"], + "rows": ["GP20", "GP21", "GP22", "GP23", "GP24", "GP25"] + }, + "processor": "RP2040", + "rgb_matrix": { + "driver": "ws2812", + "default": { + "animation": "solid_color", + "hue": 127, + "speed": 100 + }, + "animations": { + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_up_down": true, + "jellybean_raindrops": true, + "multisplash": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": false + }, + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 43, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 96, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 139, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 181, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 224, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 17, "flags": 4}, + {"matrix": [1, 1], "x": 43, "y": 17, "flags": 4}, + {"matrix": [1, 2], "x": 96, "y": 17, "flags": 4}, + {"matrix": [1, 3], "x": 139, "y": 17, "flags": 4}, + {"matrix": [1, 4], "x": 181, "y": 17, "flags": 4}, + {"matrix": [1, 5], "x": 224, "y": 17, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 29, "flags": 4}, + {"matrix": [2, 1], "x": 43, "y": 29, "flags": 4}, + {"matrix": [2, 2], "x": 96, "y": 29, "flags": 4}, + {"matrix": [2, 3], "x": 139, "y": 29, "flags": 4}, + {"matrix": [2, 4], "x": 181, "y": 29, "flags": 4}, + {"matrix": [2, 5], "x": 224, "y": 35, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 41, "flags": 4}, + {"matrix": [3, 1], "x": 43, "y": 41, "flags": 4}, + {"matrix": [3, 2], "x": 96, "y": 41, "flags": 4}, + {"matrix": [3, 3], "x": 139, "y": 41, "flags": 4}, + {"matrix": [3, 4], "x": 181, "y": 41, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 52, "flags": 4}, + {"matrix": [4, 1], "x": 43, "y": 52, "flags": 4}, + {"matrix": [4, 2], "x": 96, "y": 52, "flags": 4}, + {"matrix": [4, 3], "x": 139, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 181, "y": 52, "flags": 4}, + {"matrix": [4, 5], "x": 224, "y": 58, "flags": 4}, + {"matrix": [5, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [5, 1], "x": 43, "y": 64, "flags": 4}, + {"matrix": [5, 2], "x": 117, "y": 64, "flags": 4}, + {"matrix": [5, 3], "x": 181, "y": 64, "flags": 4} + ] + }, + "url": "https://gitlab.com/Acliad/nifty-numpad", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0x4E4E" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP19" + }, + "layouts": { + "LAYOUT_numpad_6x6": { + "layout": [ + {"label": "F13", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F19", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "BACKSPACE", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "TASK VIEW", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "EXPLORER", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "SCREENSHOT", "matrix": [0, 5], "x": 5.25, "y": 0}, + {"label": "F14", "matrix": [1, 0], "x": 0, "y": 1.5}, + {"label": "F20", "matrix": [1, 1], "x": 1, "y": 1.5}, + {"label": "NUM LOCK", "matrix": [1, 2], "x": 2.25, "y": 1.5}, + {"label": "/", "matrix": [1, 3], "x": 3.25, "y": 1.5}, + {"label": "*", "matrix": [1, 4], "x": 4.25, "y": 1.5}, + {"label": "-", "matrix": [1, 5], "x": 5.25, "y": 1.5}, + {"label": "F15", "matrix": [2, 0], "x": 0, "y": 2.5}, + {"label": "F21", "matrix": [2, 1], "x": 1, "y": 2.5}, + {"label": "7", "matrix": [2, 2], "x": 2.25, "y": 2.5}, + {"label": "8", "matrix": [2, 3], "x": 3.25, "y": 2.5}, + {"label": "9", "matrix": [2, 4], "x": 4.25, "y": 2.5}, + {"label": "+", "matrix": [2, 5], "x": 5.25, "y": 2.5, "h": 2}, + {"label": "F16", "matrix": [3, 0], "x": 0, "y": 3.5}, + {"label": "F22", "matrix": [3, 1], "x": 1, "y": 3.5}, + {"label": "4", "matrix": [3, 2], "x": 2.25, "y": 3.5}, + {"label": "5", "matrix": [3, 3], "x": 3.25, "y": 3.5}, + {"label": "6", "matrix": [3, 4], "x": 4.25, "y": 3.5}, + {"label": "F17", "matrix": [4, 0], "x": 0, "y": 4.5}, + {"label": "F23", "matrix": [4, 1], "x": 1, "y": 4.5}, + {"label": "1", "matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"label": "2", "matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"label": "3", "matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"label": "ENTER", "matrix": [4, 5], "x": 5.25, "y": 4.5, "h": 2}, + {"label": "F18", "matrix": [5, 0], "x": 0, "y": 5.5}, + {"label": "F24", "matrix": [5, 1], "x": 1, "y": 5.5}, + {"label": "0", "matrix": [5, 2], "x": 2.25, "y": 5.5, "w": 2}, + {"label": ".", "matrix": [5, 4], "x": 4.25, "y": 5.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/default/keymap.c b/keyboards/nifty_numpad/keymaps/default/keymap.c new file mode 100644 index 00000000000..402df36a13e --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/default/keymap.c @@ -0,0 +1,83 @@ +// Copyright 2023 Isaac Rex (@Acliad) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Layers +// NOTE: LAYER_RGB is defined in nifty_numpad.h +enum LAYERS { + LAYER_BL, +}; + +// Setup keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * SCN -> Screenshot + * WIN -> Task View + * EXP -> Open Explorer + * BCK -> Backspace + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │BCK│WIN│EXP│SCN│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [LAYER_BL] = LAYOUT_numpad_6x6( + KC_F13, KC_F19, LT(LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)), + KC_F14, KC_F20, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_F15, KC_F21, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_F16, KC_F22, KC_P4, KC_P5, KC_P6, + KC_F17, KC_F23, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_F18, KC_F24, KC_P0, KC_PDOT + ), + + /* + * HUI -> Hue Increase + * HUD -> Hue Decrease + * + * SAI -> Saturation Increase + * SAD -> Saturation Decrease + * + * VAI -> Value Increase + * VAD -> Value Decrease + * + * SPI -> Speed Increase + * SPD -> Speed Decrease + * + * DEF -> Set default effect mode + * IEF -> Set idle effect mode + * + * ___ -> Base Layer Function + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │___│HUI│SAI│VAI│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │Num│HUD│SAD│VAD│ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │___│DEF│IEF│ │ + * ├───┼───┤ ├───┼───┼───┤SPI│ + * │___│___│ │___│___│___│ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │___│___│___│ │ + * ├───┼───│ ├───┴───┼───┤SPD│ + * │___│___│ │___ │___│ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [LAYER_RGB] = LAYOUT_numpad_6x6( + _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, RGB_MOD, _______, RGB_SPI, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_SPD, + _______, _______, _______, _______ + ) +}; diff --git a/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c b/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c new file mode 100644 index 00000000000..b2a22b0ee4f --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c @@ -0,0 +1,177 @@ +// Copyright 2023 Isaac Rex (@Acliad) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Layers +// NOTE: LAYER_RGB is defined in nifty_numpad.h +enum LAYERS { + LAYER_BL = 0, + LAYER_MOD, +}; + +// Layer Indicator LED index +#define _NUM_LED_INDEX 8 + +#define TAPPING_TERM 200 + +// Tap Dance Declarations +enum { + TD_NUM_TOGGLE = 0, + TD_EDIT_GEN_TOGGLE, + TD_M1, + TD_M2, + TD_M3, + TD_M4, + TD_M5, + TD_M6, + TD_M7, + TD_M8, + TD_M9, + TD_M10, + TD_M11, + TD_M12, +}; + +// TD function for 1 tap, toggle layer; 2 taps, press numlock +void tap_dance_num_toggle(tap_dance_state_t *state, void *user_data){ + switch(state->count){ + case 1: + layer_invert(LAYER_MOD); + break; + case 2: + tap_code16(KC_NUM); + break; + } +} + +// Tap Dance Definitions +tap_dance_action_t tap_dance_actions[] = { + [TD_NUM_TOGGLE] = ACTION_TAP_DANCE_FN(tap_dance_num_toggle), + + [TD_M1] = ACTION_TAP_DANCE_DOUBLE(KC_F13, LCTL(KC_F13)), + [TD_M2] = ACTION_TAP_DANCE_DOUBLE(KC_F14, LCTL(KC_F14)), + [TD_M3] = ACTION_TAP_DANCE_DOUBLE(KC_F15, LCTL(KC_F15)), + [TD_M4] = ACTION_TAP_DANCE_DOUBLE(KC_F16, LCTL(KC_F16)), + [TD_M5] = ACTION_TAP_DANCE_DOUBLE(KC_F17, LCTL(KC_F17)), + [TD_M6] = ACTION_TAP_DANCE_DOUBLE(KC_F18, LCTL(KC_F18)), + [TD_M7] = ACTION_TAP_DANCE_DOUBLE(KC_F19, LCTL(KC_F19)), + [TD_M8] = ACTION_TAP_DANCE_DOUBLE(KC_F20, LCTL(KC_F20)), + [TD_M9] = ACTION_TAP_DANCE_DOUBLE(KC_F21, LCTL(KC_F21)), + [TD_M10] = ACTION_TAP_DANCE_DOUBLE(KC_F22, LCTL(KC_F22)), + [TD_M11] = ACTION_TAP_DANCE_DOUBLE(KC_F23, LCTL(KC_F23)), + [TD_M12] = ACTION_TAP_DANCE_DOUBLE(KC_F24, LCTL(KC_F24)) +}; + +// Setup keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * SCN -> Screenshot + * WIN -> Task View + * EXP -> Open Explorer + * BCK -> Backspace + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │SCN│WIN│EXP│BCK│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [LAYER_BL] = LAYOUT_numpad_6x6( + TD(TD_M1), TD(TD_M7) , LT(LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)), + TD(TD_M2), TD(TD_M8) , TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS, + TD(TD_M3), TD(TD_M9) , KC_P7, KC_P8, KC_P9, KC_PPLS, + TD(TD_M4), TD(TD_M10), KC_P4, KC_P5, KC_P6, + TD(TD_M5), TD(TD_M11), KC_P1, KC_P2, KC_P3, KC_PENT, + TD(TD_M6), TD(TD_M12), KC_P0, KC_PDOT + ), + + /* + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │F9 │F10│F11│F12│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │___│~/ │~* │___│ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │~7 │~8 │~9 │ │ + * ├───┼───┤ ├───┼───┼───┤___│ + * │___│___│ │~4 │~5 │~6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │~1 │~2 │~3 │ │ + * ├───┼───│ ├───┴───┼───┤___│ + * │___│___│ │~0 │~. │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [LAYER_MOD] = LAYOUT_numpad_6x6( + _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, + _______, _______, TD(TD_NUM_TOGGLE), RCTL(KC_PSLS), RCTL(KC_PAST), _______, + _______, _______, RCTL(KC_P7), RCTL(KC_P8), RCTL(KC_P9), _______, + _______, _______, RCTL(KC_P4), RCTL(KC_P5), RCTL(KC_P6), + _______, _______, RCTL(KC_P1), RCTL(KC_P2), RCTL(KC_P3), _______, + _______, _______, RCTL(KC_P0), RCTL(KC_PDOT) + ), + + /* + * HUI -> Hue Increase + * HUD -> Hue Decrease + * + * SAI -> Saturation Increase + * SAD -> Saturation Decrease + * + * VAI -> Value Increase + * VAD -> Value Decrease + * + * SPI -> Speed Increase + * SPD -> Speed Decrease + * + * DEF -> Set default effect mode + * IEF -> Set idle effect mode + * + * ___ -> Base Layer Function + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │___│HUI│SAI│VAI│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │Num│HUD│SAD│VAD│ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │___│DEF│IEF│ │ + * ├───┼───┤ ├───┼───┼───┤SPI│ + * │___│___│ │___│___│___│ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │___│___│___│ │ + * ├───┼───│ ├───┴───┼───┤SPD│ + * │___│___│ │___ │___│ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [LAYER_RGB] = LAYOUT_numpad_6x6( + _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, RGB_DEF, RGB_IEF, RGB_SPI, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_SPD, + _______, _______, _______, _______ + ) +}; + +// Set the layer toggle key to an indication of the active layer. This is a +// bit janky and should be done better, but I'm trying to avoid scope creep. +bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { + if (layer_state_is(LAYER_MOD) && !rgb_matrix_idle_mode()) { + // Get a hue that contrasts with current hue + uint8_t hue = rgb_matrix_get_hue() + 127; + // Make sure saturation is high enough to distiguish between hues + uint8_t sat = 255; + uint8_t val = MIN((uint16_t) rgb_matrix_get_val() + 50, 255); + RGB rgb = hsv_to_rgb((HSV) {hue, sat, val}); + rgb_matrix_set_color(_NUM_LED_INDEX, rgb.r, rgb.g, rgb.b); + } + return false; +} diff --git a/keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk b/keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk new file mode 100644 index 00000000000..0cd2ffc18cb --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk @@ -0,0 +1,2 @@ +TAP_DANCE_ENABLE=yes +RGB_IDLE_ENABLE=yes \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/via/keymap.c b/keyboards/nifty_numpad/keymaps/via/keymap.c new file mode 100644 index 00000000000..105e74d571f --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/via/keymap.c @@ -0,0 +1,81 @@ +// Copyright 2023 Isaac Rex (@Acliad) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// NOTE: LAYER_RGB is defined in nifty_numpad.h +enum LAYERS { + LAYER_BL = 0, +}; + +// Setup keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * BCK -> Backspace + * WIN -> Task View + * EXP -> Open Explorer + * SCN -> Screenshot + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F13│F19│ │BCK│WIN│EXP│SCN│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │F14│F20│ │Num│ / │ * │ - │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F15│F21│ │ 7 │ 8 │ 9 │ │ + * ├───┼───┤ ├───┼───┼───┤ + │ + * │F16│F22│ │ 4 │ 5 │ 6 │ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │F17│F23│ │ 1 │ 2 │ 3 │ │ + * ├───┼───│ ├───┴───┼───┤Ent│ + * │F18│F24│ │ 0 │ . │ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [LAYER_BL] = LAYOUT_numpad_6x6( + KC_F13, KC_F19, LT(LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)), + KC_F14, KC_F20, MT(MOD_RCTL, KC_NUM), KC_PSLS, KC_PAST, KC_PMNS, + KC_F15, KC_F21, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_F16, KC_F22, KC_P4, KC_P5, KC_P6, + KC_F17, KC_F23, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_F18, KC_F24, KC_P0, KC_PDOT + ), + + /* + * HUI -> Hue Increase + * HUD -> Hue Decrease + * + * SAI -> Saturation Increase + * SAD -> Saturation Decrease + * + * VAI -> Value Increase + * VAD -> Value Decrease + * + * SPI -> Speed Increase + * SPD -> Speed Decrease + * + * MOD -> RGB Mode (effect cycle) + * + * ___ -> Base Layer Function + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │___│HUI│SAI│VAI│ + * └───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┐ ┌───┬───┬───┬───┐ + * │___│___│ │Num│HUD│SAD│VAD│ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │___│MOD│___│ │ + * ├───┼───┤ ├───┼───┼───┤SPI│ + * │___│___│ │___│___│___│ │ + * ├───┼───┤ ├───┼───┼───┼───┤ + * │___│___│ │___│___│___│ │ + * ├───┼───│ ├───┴───┼───┤SPD│ + * │___│___│ │___ │___│ │ + * └───┴───┘ └───────┴───┴───┘ + */ + [LAYER_RGB] = LAYOUT_numpad_6x6( + _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, + _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, + _______, _______, _______, RGB_MOD, _______, RGB_SPI, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, RGB_SPD, + _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/via/rules.mk b/keyboards/nifty_numpad/keymaps/via/rules.mk new file mode 100644 index 00000000000..036bd6d1c3e --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/nifty_numpad/nifty_numpad.c b/keyboards/nifty_numpad/nifty_numpad.c new file mode 100644 index 00000000000..d59518bfcb2 --- /dev/null +++ b/keyboards/nifty_numpad/nifty_numpad.c @@ -0,0 +1,229 @@ +/* Copyright 2023 Acliad + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +#ifdef RGB_IDLE_ENABLE +typedef struct { + uint8_t mode; + uint8_t speed; + HSV hsv; +} rgb_matrix_state_t; + +_Static_assert(sizeof(rgb_matrix_state_t) == 5, "Invalid size for rgb_matrix_state_t"); + +typedef struct { + rgb_matrix_state_t active_rgb_matrix; + rgb_matrix_state_t idle_rgb_matrix; +} kb_config_t; + +_Static_assert(sizeof(kb_config_t) == EECONFIG_KB_DATA_SIZE, "Invalid size for kb_config_t"); + +bool rgb_idle_mode = false; +bool rgb_idle_edit_mode = false; +static rgb_matrix_state_t active_rgb_matrix; +static rgb_matrix_state_t idle_rgb_matrix; +static kb_config_t config; + +// Returns true if current RGB matrix mode is idle +bool rgb_matrix_idle_mode(void) { + return rgb_idle_mode; +} + +// Stores the current mode, HSV, and speed of the RGB matrix into state +void rgb_matrix_state_save(rgb_matrix_state_t* state) { + state->mode = rgb_matrix_get_mode(); + state->hsv = rgb_matrix_get_hsv(); + state->speed = rgb_matrix_get_speed(); +} + +// Restores the mode, HSV, and speed of the RGB matrix from previous state +void rgb_matrix_state_restore(rgb_matrix_state_t* state) { + HSV hsv = state->hsv; + rgb_matrix_mode_noeeprom(state->mode); + rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v); + rgb_matrix_set_speed_noeeprom(state->speed); +} +#endif + +void housekeeping_task_kb(void) { +#ifdef RGB_IDLE_ENABLE + // Check if enough time has passed since last keypress to go into idle mode + if (last_input_activity_elapsed() > RGB_IDLE_TIMEOUT_MS && !rgb_idle_mode) { + rgb_matrix_state_save(&active_rgb_matrix); + rgb_idle_mode = true; + + rgb_matrix_state_restore(&idle_rgb_matrix); + } +#endif +}; + +layer_state_t layer_state_set_kb(layer_state_t state) { +#ifdef RGB_IDLE_ENABLE + // Track if the last layer was the RGB edit layer + static bool rgb_was_on = false; + + if (IS_LAYER_ON_STATE(state, LAYER_RGB)) { + rgb_was_on = true; + } + + // Not in RGB edit layer, but previously were + if (!IS_LAYER_ON_STATE(state, LAYER_RGB) && rgb_was_on) { + rgb_was_on = false; + if (rgb_idle_edit_mode) { + // If we were editing the RGB idle mode, we are done now. + // Restore to active mode + rgb_idle_edit_mode = false; + rgb_matrix_state_restore(&active_rgb_matrix); + } + // Done changing stuff, save settings in "EEPROM" + config.active_rgb_matrix = active_rgb_matrix; + config.idle_rgb_matrix = idle_rgb_matrix; + eeconfig_update_kb_datablock(&config); + } +#endif + + return layer_state_set_user(state); +} + +// Process custom keycodes +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { +#ifdef RGB_IDLE_ENABLE + // If we were idling and a key was pressed, restore active RGB + if (record->event.pressed) { + if (rgb_idle_mode) { + rgb_matrix_state_restore(&active_rgb_matrix); + rgb_idle_mode = false; + } + } +#endif + + switch (keycode) { +#ifdef RGB_IDLE_ENABLE + // Handle all the RGB settings + case RGB_DEF: + if (record->event.pressed) { + // Change the RGB matrix state to active if editing idle + if (rgb_idle_edit_mode) { + rgb_matrix_state_restore(&active_rgb_matrix); + rgb_idle_edit_mode = false; + } + rgb_matrix_step_noeeprom(); + rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_IEF: + if (record->event.pressed) { + // Change the RGB matrix state to idle + if (!rgb_idle_edit_mode) { + rgb_matrix_state_restore(&idle_rgb_matrix); + rgb_idle_edit_mode = true; + } else { + rgb_matrix_step_noeeprom(); + rgb_matrix_state_save(&idle_rgb_matrix); + } + } + return false; + case RGB_SAI: + if (record->event.pressed) { + rgb_matrix_increase_sat_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_SAD: + if (record->event.pressed) { + rgb_matrix_decrease_sat_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_VAI: + if (record->event.pressed) { + rgb_matrix_increase_val_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_VAD: + if (record->event.pressed) { + rgb_matrix_decrease_val_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_HUI: + if (record->event.pressed) { + rgb_matrix_increase_hue_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_HUD: + if (record->event.pressed) { + rgb_matrix_decrease_hue_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_SPI: + if (record->event.pressed) { + rgb_matrix_increase_speed_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); + } + return false; + case RGB_SPD: + if (record->event.pressed) { + rgb_matrix_decrease_speed_noeeprom(); + rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); + } + return false; +#endif + } + return process_record_user(keycode, record); +}; + +void keyboard_post_init_kb(void) { +#ifdef RGB_IDLE_ENABLE + // Read in the RGB Matrices from before + eeconfig_read_kb_datablock(&config); + active_rgb_matrix = config.active_rgb_matrix; + idle_rgb_matrix = config.idle_rgb_matrix; + // Restore the active matrix + rgb_matrix_state_restore(&active_rgb_matrix); +#endif + + keyboard_post_init_user(); +} + +// Setup default EEPROM config values +void eeconfig_init_kb_datablock(void) { +#ifdef RGB_IDLE_ENABLE + rgb_matrix_state_t default_active_rgb_matrix; + rgb_matrix_state_t default_idle_rgb_matrix; + + default_active_rgb_matrix.mode = RGB_MATRIX_GRADIENT_UP_DOWN; + default_active_rgb_matrix.hsv = (HSV){127, 255, 100}; + default_active_rgb_matrix.speed = 127; + + default_idle_rgb_matrix.mode = RGB_MATRIX_BREATHING; + default_idle_rgb_matrix.hsv = (HSV){127, 255, 100}; + default_idle_rgb_matrix.speed = 127; + + config.active_rgb_matrix = default_active_rgb_matrix; + config.idle_rgb_matrix = default_idle_rgb_matrix; + + eeconfig_update_kb_datablock(&config); + +# if (EECONFIG_USER_DATA_SIZE) > 0 + eeconfig_init_user_datablock(); +# endif // EECONFIG_USER_DATA_SIZE +#endif // RGB_IDLE_ENABLE +} diff --git a/keyboards/nifty_numpad/nifty_numpad.h b/keyboards/nifty_numpad/nifty_numpad.h new file mode 100644 index 00000000000..f625e3ef5da --- /dev/null +++ b/keyboards/nifty_numpad/nifty_numpad.h @@ -0,0 +1,52 @@ +/* Copyright 2023 Acliad + * + * 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 . + */ + +#pragma once + +#include "quantum.h" + +/* +* ┌───┬───┐ ┌───┬───┬───┬───┐ +* │F13│F19│ │F1 │F2 │F3 │F4 │ +* └───┴───┘ └───┴───┴───┴───┘ +* ┌───┬───┐ ┌───┬───┬───┬───┐ +* │F14│F20│ │Num│ / │ * │ - │ +* ├───┼───┤ ├───┼───┼───┼───┤ +* │F15│F21│ │ 7 │ 8 │ 9 │ │ +* ├───┼───┤ ├───┼───┼───┤ + │ +* │F16│F22│ │ 4 │ 5 │ 6 │ │ +* ├───┼───┤ ├───┼───┼───┼───┤ +* │F17│F23│ │ 1 │ 2 │ 3 │ │ +* ├───┼───│ ├───┴───┼───┤Ent│ +* │F18│F24│ │ 0 │ . │ │ +* └───┴───┘ └───────┴───┴───┘ +*/ + +enum custom_keycodes { + RGB_DEF = QK_KB, + RGB_IEF +}; +#define LAYER_RGB (MAX_LAYER - 1) + +#ifdef RGB_IDLE_ENABLE +// Custom keycode declarations + +#define RGB_IDLE_TIMEOUT_MS (10*60*1000) + +// Functions exposed by nifty_numpad.c +bool rgb_matrix_idle_mode(void); + +#endif diff --git a/keyboards/nifty_numpad/post_rules.mk b/keyboards/nifty_numpad/post_rules.mk new file mode 100644 index 00000000000..92adb5051a6 --- /dev/null +++ b/keyboards/nifty_numpad/post_rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(RGB_IDLE_ENABLE)), yes) + OPT_DEFS += -DRGB_IDLE_ENABLE +endif \ No newline at end of file diff --git a/keyboards/nifty_numpad/readme.md b/keyboards/nifty_numpad/readme.md new file mode 100644 index 00000000000..37692dbdb0b --- /dev/null +++ b/keyboards/nifty_numpad/readme.md @@ -0,0 +1,35 @@ +# Nifty Numpad + +![Nifty Numpad](https://i.imgur.com/jfB8tfKh.png) + +Nifty Numpad is a full sized numpad with an extra row and two extra columns of macro keys. It was created because I wanted a companion to my TKL keyboard for work. My main workflow involves heavy use of ECAD programs, so the design was tailored for that, but it is generic enough to be nice for many workflows! + + +The main features are: +- Full sized numpad with row of macro/function keys on the top +- Two extra columns of macro keys +- Cherry MX style socketed switches +- Key Backlights +- 3D printable case (FDM or resin) + +### Development Information: +* Keyboard Maintainer: [Isaac Rex](https://github.com/Acliad/) +* Hardware Supported: RP2040 +* Hardware Availability: See [The GitLab Page](https://gitlab.com/Acliad/nifty-numpad) for full details + +Make example for this keyboard (after setting up your build environment): + + make nifty_numpad:default + +Flashing example for this keyboard: + + make nifty_numpad:default:flash + +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). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left) and plug in the keyboard +* **Physical reset button**: Press the `RST` button while holding the `BOOT_SEL` button on the back of the PCB diff --git a/keyboards/nifty_numpad/rules.mk b/keyboards/nifty_numpad/rules.mk new file mode 100644 index 00000000000..e69de29bb2d From e875b8772620a79534c4ed71d8ded12626f946a4 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sat, 16 Mar 2024 08:27:34 -0500 Subject: [PATCH 09/15] Added config.h to idle_rgb_example --- keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h | 6 ++++++ keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c | 8 +++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h diff --git a/keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h b/keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h new file mode 100644 index 00000000000..c5d7bd3037b --- /dev/null +++ b/keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h @@ -0,0 +1,6 @@ +// Copyright 2023 Isaac Rex (@Acliad) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define TAPPING_TERM 200 + diff --git a/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c b/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c index b2a22b0ee4f..35f21632c4f 100644 --- a/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c +++ b/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c @@ -13,8 +13,6 @@ enum LAYERS { // Layer Indicator LED index #define _NUM_LED_INDEX 8 -#define TAPPING_TERM 200 - // Tap Dance Declarations enum { TD_NUM_TOGGLE = 0, @@ -66,12 +64,12 @@ tap_dance_action_t tap_dance_actions[] = { // Setup keymap const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * SCN -> Screenshot + * BCK -> Backspace * WIN -> Task View * EXP -> Open Explorer - * BCK -> Backspace + * SCN -> Screenshot * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F13│F19│ │SCN│WIN│EXP│BCK│ + * │F13│F19│ │BCK│WIN│EXP│SCN│ * └───┴───┘ └───┴───┴───┴───┘ * ┌───┬───┐ ┌───┬───┬───┬───┐ * │F14│F20│ │Num│ / │ * │ - │ From 7c2c6971b7ba4bd18f9cbdc1bcbb113ac3409fc4 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Mon, 29 Jul 2024 18:39:12 -0500 Subject: [PATCH 10/15] renamed info.json, removed rules.mk --- keyboards/nifty_numpad/{info.json => keyboard.json} | 0 keyboards/nifty_numpad/rules.mk | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename keyboards/nifty_numpad/{info.json => keyboard.json} (100%) delete mode 100644 keyboards/nifty_numpad/rules.mk diff --git a/keyboards/nifty_numpad/info.json b/keyboards/nifty_numpad/keyboard.json similarity index 100% rename from keyboards/nifty_numpad/info.json rename to keyboards/nifty_numpad/keyboard.json diff --git a/keyboards/nifty_numpad/rules.mk b/keyboards/nifty_numpad/rules.mk deleted file mode 100644 index e69de29bb2d..00000000000 From 556775dc4e6f9f2f44248d7aced2aef744d6abe5 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sun, 16 Mar 2025 13:40:25 -0500 Subject: [PATCH 11/15] Updated to conform with most recent PR checklist - Removed VIA keymap - Formatted keyboard.json with qmk format-json - Updated custom keycodes in nifty_numpad.h to start at QK_USER --- keyboards/nifty_numpad/keyboard.json | 14 ++-- keyboards/nifty_numpad/keymaps/via/keymap.c | 81 --------------------- keyboards/nifty_numpad/keymaps/via/rules.mk | 1 - keyboards/nifty_numpad/nifty_numpad.h | 2 +- 4 files changed, 8 insertions(+), 90 deletions(-) delete mode 100644 keyboards/nifty_numpad/keymaps/via/keymap.c delete mode 100644 keyboards/nifty_numpad/keymaps/via/rules.mk diff --git a/keyboards/nifty_numpad/keyboard.json b/keyboards/nifty_numpad/keyboard.json index ae6f7bd07da..3dce0cca356 100644 --- a/keyboards/nifty_numpad/keyboard.json +++ b/keyboards/nifty_numpad/keyboard.json @@ -19,12 +19,6 @@ }, "processor": "RP2040", "rgb_matrix": { - "driver": "ws2812", - "default": { - "animation": "solid_color", - "hue": 127, - "speed": 100 - }, "animations": { "band_pinwheel_sat": true, "band_pinwheel_val": true, @@ -62,6 +56,12 @@ "splash": true, "typing_heatmap": false }, + "default": { + "animation": "solid_color", + "hue": 127, + "speed": 100 + }, + "driver": "ws2812", "layout": [ {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, {"matrix": [0, 1], "x": 43, "y": 0, "flags": 4}, @@ -147,4 +147,4 @@ ] } } -} \ No newline at end of file +} diff --git a/keyboards/nifty_numpad/keymaps/via/keymap.c b/keyboards/nifty_numpad/keymaps/via/keymap.c deleted file mode 100644 index 105e74d571f..00000000000 --- a/keyboards/nifty_numpad/keymaps/via/keymap.c +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2023 Isaac Rex (@Acliad) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include QMK_KEYBOARD_H - -// NOTE: LAYER_RGB is defined in nifty_numpad.h -enum LAYERS { - LAYER_BL = 0, -}; - -// Setup keymap -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - * BCK -> Backspace - * WIN -> Task View - * EXP -> Open Explorer - * SCN -> Screenshot - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F13│F19│ │BCK│WIN│EXP│SCN│ - * └───┴───┘ └───┴───┴───┴───┘ - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F14│F20│ │Num│ / │ * │ - │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │F15│F21│ │ 7 │ 8 │ 9 │ │ - * ├───┼───┤ ├───┼───┼───┤ + │ - * │F16│F22│ │ 4 │ 5 │ 6 │ │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │F17│F23│ │ 1 │ 2 │ 3 │ │ - * ├───┼───│ ├───┴───┼───┤Ent│ - * │F18│F24│ │ 0 │ . │ │ - * └───┴───┘ └───────┴───┴───┘ - */ - [LAYER_BL] = LAYOUT_numpad_6x6( - KC_F13, KC_F19, LT(LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)), - KC_F14, KC_F20, MT(MOD_RCTL, KC_NUM), KC_PSLS, KC_PAST, KC_PMNS, - KC_F15, KC_F21, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_F16, KC_F22, KC_P4, KC_P5, KC_P6, - KC_F17, KC_F23, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_F18, KC_F24, KC_P0, KC_PDOT - ), - - /* - * HUI -> Hue Increase - * HUD -> Hue Decrease - * - * SAI -> Saturation Increase - * SAD -> Saturation Decrease - * - * VAI -> Value Increase - * VAD -> Value Decrease - * - * SPI -> Speed Increase - * SPD -> Speed Decrease - * - * MOD -> RGB Mode (effect cycle) - * - * ___ -> Base Layer Function - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │___│___│ │___│HUI│SAI│VAI│ - * └───┴───┘ └───┴───┴───┴───┘ - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │___│___│ │Num│HUD│SAD│VAD│ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │___│___│ │___│MOD│___│ │ - * ├───┼───┤ ├───┼───┼───┤SPI│ - * │___│___│ │___│___│___│ │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │___│___│ │___│___│___│ │ - * ├───┼───│ ├───┴───┼───┤SPD│ - * │___│___│ │___ │___│ │ - * └───┴───┘ └───────┴───┴───┘ - */ - [LAYER_RGB] = LAYOUT_numpad_6x6( - _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, - _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, - _______, _______, _______, RGB_MOD, _______, RGB_SPI, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, RGB_SPD, - _______, _______, _______, _______ - ) -}; \ No newline at end of file diff --git a/keyboards/nifty_numpad/keymaps/via/rules.mk b/keyboards/nifty_numpad/keymaps/via/rules.mk deleted file mode 100644 index 036bd6d1c3e..00000000000 --- a/keyboards/nifty_numpad/keymaps/via/rules.mk +++ /dev/null @@ -1 +0,0 @@ -VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/nifty_numpad/nifty_numpad.h b/keyboards/nifty_numpad/nifty_numpad.h index f625e3ef5da..08d61609ebf 100644 --- a/keyboards/nifty_numpad/nifty_numpad.h +++ b/keyboards/nifty_numpad/nifty_numpad.h @@ -36,7 +36,7 @@ */ enum custom_keycodes { - RGB_DEF = QK_KB, + RGB_DEF = QK_USER, RGB_IEF }; #define LAYER_RGB (MAX_LAYER - 1) From 88a27e6b8f3a0cf79809b573280de9def1c09a8a Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sat, 3 May 2025 09:11:44 -0500 Subject: [PATCH 12/15] Address review feedback - Remove the config.h file from the idle_rgb_example keymap as the only settings was equal to the default - Added empty endline to the end of idle_rgb_example/rules.mk and post_rules.mk - Updated RGB_DEF custom keycode to QK_KB --- keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h | 6 ------ keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk | 2 +- keyboards/nifty_numpad/nifty_numpad.h | 2 +- keyboards/nifty_numpad/post_rules.mk | 2 +- 4 files changed, 3 insertions(+), 9 deletions(-) delete mode 100644 keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h diff --git a/keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h b/keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h deleted file mode 100644 index c5d7bd3037b..00000000000 --- a/keyboards/nifty_numpad/keymaps/idle_rgb_example/config.h +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2023 Isaac Rex (@Acliad) -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define TAPPING_TERM 200 - diff --git a/keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk b/keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk index 0cd2ffc18cb..ed2895bd20b 100644 --- a/keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk +++ b/keyboards/nifty_numpad/keymaps/idle_rgb_example/rules.mk @@ -1,2 +1,2 @@ TAP_DANCE_ENABLE=yes -RGB_IDLE_ENABLE=yes \ No newline at end of file +RGB_IDLE_ENABLE=yes diff --git a/keyboards/nifty_numpad/nifty_numpad.h b/keyboards/nifty_numpad/nifty_numpad.h index 08d61609ebf..f625e3ef5da 100644 --- a/keyboards/nifty_numpad/nifty_numpad.h +++ b/keyboards/nifty_numpad/nifty_numpad.h @@ -36,7 +36,7 @@ */ enum custom_keycodes { - RGB_DEF = QK_USER, + RGB_DEF = QK_KB, RGB_IEF }; #define LAYER_RGB (MAX_LAYER - 1) diff --git a/keyboards/nifty_numpad/post_rules.mk b/keyboards/nifty_numpad/post_rules.mk index 92adb5051a6..be715cd22f9 100644 --- a/keyboards/nifty_numpad/post_rules.mk +++ b/keyboards/nifty_numpad/post_rules.mk @@ -1,3 +1,3 @@ ifeq ($(strip $(RGB_IDLE_ENABLE)), yes) OPT_DEFS += -DRGB_IDLE_ENABLE -endif \ No newline at end of file +endif From c5aaf42db8e33b6e7655b1ac115567cf5134af62 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sat, 28 Jun 2025 09:22:18 -0500 Subject: [PATCH 13/15] Removed commented layout visuals --- .../nifty_numpad/keymaps/default/keymap.c | 54 +------------- .../keymaps/idle_rgb_example/keymap.c | 70 +------------------ keyboards/nifty_numpad/nifty_numpad.h | 18 ----- 3 files changed, 2 insertions(+), 140 deletions(-) diff --git a/keyboards/nifty_numpad/keymaps/default/keymap.c b/keyboards/nifty_numpad/keymaps/default/keymap.c index 402df36a13e..2818945ed3f 100644 --- a/keyboards/nifty_numpad/keymaps/default/keymap.c +++ b/keyboards/nifty_numpad/keymaps/default/keymap.c @@ -11,26 +11,6 @@ enum LAYERS { // Setup keymap const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - * SCN -> Screenshot - * WIN -> Task View - * EXP -> Open Explorer - * BCK -> Backspace - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F13│F19│ │BCK│WIN│EXP│SCN│ - * └───┴───┘ └───┴───┴───┴───┘ - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F14│F20│ │Num│ / │ * │ - │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │F15│F21│ │ 7 │ 8 │ 9 │ │ - * ├───┼───┤ ├───┼───┼───┤ + │ - * │F16│F22│ │ 4 │ 5 │ 6 │ │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │F17│F23│ │ 1 │ 2 │ 3 │ │ - * ├───┼───│ ├───┴───┼───┤Ent│ - * │F18│F24│ │ 0 │ . │ │ - * └───┴───┘ └───────┴───┴───┘ - */ [LAYER_BL] = LAYOUT_numpad_6x6( KC_F13, KC_F19, LT(LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)), KC_F14, KC_F20, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, @@ -39,39 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F17, KC_F23, KC_P1, KC_P2, KC_P3, KC_PENT, KC_F18, KC_F24, KC_P0, KC_PDOT ), - - /* - * HUI -> Hue Increase - * HUD -> Hue Decrease - * - * SAI -> Saturation Increase - * SAD -> Saturation Decrease - * - * VAI -> Value Increase - * VAD -> Value Decrease - * - * SPI -> Speed Increase - * SPD -> Speed Decrease - * - * DEF -> Set default effect mode - * IEF -> Set idle effect mode - * - * ___ -> Base Layer Function - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │___│___│ │___│HUI│SAI│VAI│ - * └───┴───┘ └───┴───┴───┴───┘ - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │___│___│ │Num│HUD│SAD│VAD│ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │___│___│ │___│DEF│IEF│ │ - * ├───┼───┤ ├───┼───┼───┤SPI│ - * │___│___│ │___│___│___│ │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │___│___│ │___│___│___│ │ - * ├───┼───│ ├───┴───┼───┤SPD│ - * │___│___│ │___ │___│ │ - * └───┴───┘ └───────┴───┴───┘ - */ + [LAYER_RGB] = LAYOUT_numpad_6x6( _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, diff --git a/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c b/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c index 35f21632c4f..b49a6f711ab 100644 --- a/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c +++ b/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c @@ -63,26 +63,6 @@ tap_dance_action_t tap_dance_actions[] = { // Setup keymap const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - * BCK -> Backspace - * WIN -> Task View - * EXP -> Open Explorer - * SCN -> Screenshot - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F13│F19│ │BCK│WIN│EXP│SCN│ - * └───┴───┘ └───┴───┴───┴───┘ - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F14│F20│ │Num│ / │ * │ - │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │F15│F21│ │ 7 │ 8 │ 9 │ │ - * ├───┼───┤ ├───┼───┼───┤ + │ - * │F16│F22│ │ 4 │ 5 │ 6 │ │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │F17│F23│ │ 1 │ 2 │ 3 │ │ - * ├───┼───│ ├───┴───┼───┤Ent│ - * │F18│F24│ │ 0 │ . │ │ - * └───┴───┘ └───────┴───┴───┘ - */ [LAYER_BL] = LAYOUT_numpad_6x6( TD(TD_M1), TD(TD_M7) , LT(LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)), TD(TD_M2), TD(TD_M8) , TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS, @@ -92,22 +72,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TD(TD_M6), TD(TD_M12), KC_P0, KC_PDOT ), - /* - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │F13│F19│ │F9 │F10│F11│F12│ - * └───┴───┘ └───┴───┴───┴───┘ - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │___│___│ │___│~/ │~* │___│ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │___│___│ │~7 │~8 │~9 │ │ - * ├───┼───┤ ├───┼───┼───┤___│ - * │___│___│ │~4 │~5 │~6 │ │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │___│___│ │~1 │~2 │~3 │ │ - * ├───┼───│ ├───┴───┼───┤___│ - * │___│___│ │~0 │~. │ │ - * └───┴───┘ └───────┴───┴───┘ - */ [LAYER_MOD] = LAYOUT_numpad_6x6( _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, TD(TD_NUM_TOGGLE), RCTL(KC_PSLS), RCTL(KC_PAST), _______, @@ -116,39 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, RCTL(KC_P1), RCTL(KC_P2), RCTL(KC_P3), _______, _______, _______, RCTL(KC_P0), RCTL(KC_PDOT) ), - - /* - * HUI -> Hue Increase - * HUD -> Hue Decrease - * - * SAI -> Saturation Increase - * SAD -> Saturation Decrease - * - * VAI -> Value Increase - * VAD -> Value Decrease - * - * SPI -> Speed Increase - * SPD -> Speed Decrease - * - * DEF -> Set default effect mode - * IEF -> Set idle effect mode - * - * ___ -> Base Layer Function - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │___│___│ │___│HUI│SAI│VAI│ - * └───┴───┘ └───┴───┴───┴───┘ - * ┌───┬───┐ ┌───┬───┬───┬───┐ - * │___│___│ │Num│HUD│SAD│VAD│ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │___│___│ │___│DEF│IEF│ │ - * ├───┼───┤ ├───┼───┼───┤SPI│ - * │___│___│ │___│___│___│ │ - * ├───┼───┤ ├───┼───┼───┼───┤ - * │___│___│ │___│___│___│ │ - * ├───┼───│ ├───┴───┼───┤SPD│ - * │___│___│ │___ │___│ │ - * └───┴───┘ └───────┴───┴───┘ - */ + [LAYER_RGB] = LAYOUT_numpad_6x6( _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, diff --git a/keyboards/nifty_numpad/nifty_numpad.h b/keyboards/nifty_numpad/nifty_numpad.h index f625e3ef5da..6f210bc7050 100644 --- a/keyboards/nifty_numpad/nifty_numpad.h +++ b/keyboards/nifty_numpad/nifty_numpad.h @@ -18,23 +18,6 @@ #include "quantum.h" -/* -* ┌───┬───┐ ┌───┬───┬───┬───┐ -* │F13│F19│ │F1 │F2 │F3 │F4 │ -* └───┴───┘ └───┴───┴───┴───┘ -* ┌───┬───┐ ┌───┬───┬───┬───┐ -* │F14│F20│ │Num│ / │ * │ - │ -* ├───┼───┤ ├───┼───┼───┼───┤ -* │F15│F21│ │ 7 │ 8 │ 9 │ │ -* ├───┼───┤ ├───┼───┼───┤ + │ -* │F16│F22│ │ 4 │ 5 │ 6 │ │ -* ├───┼───┤ ├───┼───┼───┼───┤ -* │F17│F23│ │ 1 │ 2 │ 3 │ │ -* ├───┼───│ ├───┴───┼───┤Ent│ -* │F18│F24│ │ 0 │ . │ │ -* └───┴───┘ └───────┴───┴───┘ -*/ - enum custom_keycodes { RGB_DEF = QK_KB, RGB_IEF @@ -42,7 +25,6 @@ enum custom_keycodes { #define LAYER_RGB (MAX_LAYER - 1) #ifdef RGB_IDLE_ENABLE -// Custom keycode declarations #define RGB_IDLE_TIMEOUT_MS (10*60*1000) From 810b1536c63365283ee1e2490ef7acffae411436 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sat, 28 Jun 2025 09:34:59 -0500 Subject: [PATCH 14/15] Updated RGB Matrix keycodes --- .../nifty_numpad/keymaps/default/keymap.c | 8 ++++---- .../keymaps/idle_rgb_example/keymap.c | 8 ++++---- keyboards/nifty_numpad/nifty_numpad.c | 20 +++++++++---------- keyboards/nifty_numpad/nifty_numpad.h | 4 ++-- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/keyboards/nifty_numpad/keymaps/default/keymap.c b/keyboards/nifty_numpad/keymaps/default/keymap.c index 2818945ed3f..89f3350bcad 100644 --- a/keyboards/nifty_numpad/keymaps/default/keymap.c +++ b/keyboards/nifty_numpad/keymaps/default/keymap.c @@ -21,11 +21,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [LAYER_RGB] = LAYOUT_numpad_6x6( - _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, - _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, - _______, _______, _______, RGB_MOD, _______, RGB_SPI, + _______, _______, _______, RM_HUEU, RM_SATU, RM_VALU, + _______, _______, _______, RM_HUED, RM_SATD, RM_VALD, + _______, _______, _______, RM_NEXT, _______, RM_SPDU, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, RGB_SPD, + _______, _______, _______, _______, _______, RM_SPDD, _______, _______, _______, _______ ) }; diff --git a/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c b/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c index b49a6f711ab..c3956848eb2 100644 --- a/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c +++ b/keyboards/nifty_numpad/keymaps/idle_rgb_example/keymap.c @@ -82,11 +82,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [LAYER_RGB] = LAYOUT_numpad_6x6( - _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, - _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, - _______, _______, _______, RGB_DEF, RGB_IEF, RGB_SPI, + _______, _______, _______, RM_HUEU, RM_SATU, RM_VALU, + _______, _______, _______, RM_HUED, RM_SATD, RM_VALD, + _______, _______, _______, RM_DMOD, RM_IMOD, RM_SPDU, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, RGB_SPD, + _______, _______, _______, _______, _______, RM_SPDD, _______, _______, _______, _______ ) }; diff --git a/keyboards/nifty_numpad/nifty_numpad.c b/keyboards/nifty_numpad/nifty_numpad.c index d59518bfcb2..72328f33c13 100644 --- a/keyboards/nifty_numpad/nifty_numpad.c +++ b/keyboards/nifty_numpad/nifty_numpad.c @@ -114,7 +114,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { switch (keycode) { #ifdef RGB_IDLE_ENABLE // Handle all the RGB settings - case RGB_DEF: + case RM_DMOD: if (record->event.pressed) { // Change the RGB matrix state to active if editing idle if (rgb_idle_edit_mode) { @@ -125,7 +125,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { rgb_matrix_state_save(&active_rgb_matrix); } return false; - case RGB_IEF: + case RM_IMOD: if (record->event.pressed) { // Change the RGB matrix state to idle if (!rgb_idle_edit_mode) { @@ -137,49 +137,49 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { } } return false; - case RGB_SAI: + case RM_SATU: if (record->event.pressed) { rgb_matrix_increase_sat_noeeprom(); rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); } return false; - case RGB_SAD: + case RM_SATD: if (record->event.pressed) { rgb_matrix_decrease_sat_noeeprom(); rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); } return false; - case RGB_VAI: + case RM_VALU: if (record->event.pressed) { rgb_matrix_increase_val_noeeprom(); rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); } return false; - case RGB_VAD: + case RM_VALD: if (record->event.pressed) { rgb_matrix_decrease_val_noeeprom(); rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); } return false; - case RGB_HUI: + case RM_HUEU: if (record->event.pressed) { rgb_matrix_increase_hue_noeeprom(); rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); } return false; - case RGB_HUD: + case RM_HUED: if (record->event.pressed) { rgb_matrix_decrease_hue_noeeprom(); rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); } return false; - case RGB_SPI: + case RM_SPDU: if (record->event.pressed) { rgb_matrix_increase_speed_noeeprom(); rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); } return false; - case RGB_SPD: + case RM_SPDD: if (record->event.pressed) { rgb_matrix_decrease_speed_noeeprom(); rgb_idle_edit_mode ? rgb_matrix_state_save(&idle_rgb_matrix) : rgb_matrix_state_save(&active_rgb_matrix); diff --git a/keyboards/nifty_numpad/nifty_numpad.h b/keyboards/nifty_numpad/nifty_numpad.h index 6f210bc7050..0e4bf8f7e30 100644 --- a/keyboards/nifty_numpad/nifty_numpad.h +++ b/keyboards/nifty_numpad/nifty_numpad.h @@ -19,8 +19,8 @@ #include "quantum.h" enum custom_keycodes { - RGB_DEF = QK_KB, - RGB_IEF + RM_DMOD = QK_KB, + RM_IMOD }; #define LAYER_RGB (MAX_LAYER - 1) From f256dfd5c705d761ecfc21f7783b98b7769e7541 Mon Sep 17 00:00:00 2001 From: Isaac Rex Date: Sat, 28 Jun 2025 10:04:03 -0500 Subject: [PATCH 15/15] Updated use of eeconfig_update_kb_datablock to new signature --- keyboards/nifty_numpad/nifty_numpad.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/nifty_numpad/nifty_numpad.c b/keyboards/nifty_numpad/nifty_numpad.c index 72328f33c13..5e487fed7f3 100644 --- a/keyboards/nifty_numpad/nifty_numpad.c +++ b/keyboards/nifty_numpad/nifty_numpad.c @@ -92,7 +92,7 @@ layer_state_t layer_state_set_kb(layer_state_t state) { // Done changing stuff, save settings in "EEPROM" config.active_rgb_matrix = active_rgb_matrix; config.idle_rgb_matrix = idle_rgb_matrix; - eeconfig_update_kb_datablock(&config); + eeconfig_update_kb_datablock(&config, 0, EECONFIG_KB_DATA_SIZE); } #endif @@ -193,7 +193,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { void keyboard_post_init_kb(void) { #ifdef RGB_IDLE_ENABLE // Read in the RGB Matrices from before - eeconfig_read_kb_datablock(&config); + eeconfig_read_kb_datablock(&config, 0, EECONFIG_KB_DATA_SIZE); active_rgb_matrix = config.active_rgb_matrix; idle_rgb_matrix = config.idle_rgb_matrix; // Restore the active matrix @@ -220,7 +220,7 @@ void eeconfig_init_kb_datablock(void) { config.active_rgb_matrix = default_active_rgb_matrix; config.idle_rgb_matrix = default_idle_rgb_matrix; - eeconfig_update_kb_datablock(&config); + eeconfig_update_kb_datablock(&config, 0, EECONFIG_KB_DATA_SIZE); # if (EECONFIG_USER_DATA_SIZE) > 0 eeconfig_init_user_datablock();