| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // 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
- // 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] = {
- [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
- ),
- [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)
- ),
-
- [LAYER_RGB] = LAYOUT_numpad_6x6(
- _______, _______, _______, RM_HUEU, RM_SATU, RM_VALU,
- _______, _______, _______, RM_HUED, RM_SATD, RM_VALD,
- _______, _______, _______, RM_DMOD, RM_IMOD, RM_SPDU,
- _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, RM_SPDD,
- _______, _______, _______, _______
- )
- };
- // 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;
- }
|