keymap.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // Copyright 2023 Isaac Rex (@Acliad)
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include QMK_KEYBOARD_H
  4. // Layers
  5. // NOTE: LAYER_RGB is defined in nifty_numpad.h
  6. enum LAYERS {
  7. LAYER_BL = 0,
  8. LAYER_MOD,
  9. };
  10. // Layer Indicator LED index
  11. #define _NUM_LED_INDEX 8
  12. // Tap Dance Declarations
  13. enum {
  14. TD_NUM_TOGGLE = 0,
  15. TD_EDIT_GEN_TOGGLE,
  16. TD_M1,
  17. TD_M2,
  18. TD_M3,
  19. TD_M4,
  20. TD_M5,
  21. TD_M6,
  22. TD_M7,
  23. TD_M8,
  24. TD_M9,
  25. TD_M10,
  26. TD_M11,
  27. TD_M12,
  28. };
  29. // TD function for 1 tap, toggle layer; 2 taps, press numlock
  30. void tap_dance_num_toggle(tap_dance_state_t *state, void *user_data){
  31. switch(state->count){
  32. case 1:
  33. layer_invert(LAYER_MOD);
  34. break;
  35. case 2:
  36. tap_code16(KC_NUM);
  37. break;
  38. }
  39. }
  40. // Tap Dance Definitions
  41. tap_dance_action_t tap_dance_actions[] = {
  42. [TD_NUM_TOGGLE] = ACTION_TAP_DANCE_FN(tap_dance_num_toggle),
  43. [TD_M1] = ACTION_TAP_DANCE_DOUBLE(KC_F13, LCTL(KC_F13)),
  44. [TD_M2] = ACTION_TAP_DANCE_DOUBLE(KC_F14, LCTL(KC_F14)),
  45. [TD_M3] = ACTION_TAP_DANCE_DOUBLE(KC_F15, LCTL(KC_F15)),
  46. [TD_M4] = ACTION_TAP_DANCE_DOUBLE(KC_F16, LCTL(KC_F16)),
  47. [TD_M5] = ACTION_TAP_DANCE_DOUBLE(KC_F17, LCTL(KC_F17)),
  48. [TD_M6] = ACTION_TAP_DANCE_DOUBLE(KC_F18, LCTL(KC_F18)),
  49. [TD_M7] = ACTION_TAP_DANCE_DOUBLE(KC_F19, LCTL(KC_F19)),
  50. [TD_M8] = ACTION_TAP_DANCE_DOUBLE(KC_F20, LCTL(KC_F20)),
  51. [TD_M9] = ACTION_TAP_DANCE_DOUBLE(KC_F21, LCTL(KC_F21)),
  52. [TD_M10] = ACTION_TAP_DANCE_DOUBLE(KC_F22, LCTL(KC_F22)),
  53. [TD_M11] = ACTION_TAP_DANCE_DOUBLE(KC_F23, LCTL(KC_F23)),
  54. [TD_M12] = ACTION_TAP_DANCE_DOUBLE(KC_F24, LCTL(KC_F24))
  55. };
  56. // Setup keymap
  57. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  58. [LAYER_BL] = LAYOUT_numpad_6x6(
  59. TD(TD_M1), TD(TD_M7) , LT(LAYER_RGB, KC_BSPC), RGUI(KC_TAB), RGUI(KC_E), RGUI(RSFT(KC_S)),
  60. TD(TD_M2), TD(TD_M8) , TD(TD_NUM_TOGGLE), KC_PSLS, KC_PAST, KC_PMNS,
  61. TD(TD_M3), TD(TD_M9) , KC_P7, KC_P8, KC_P9, KC_PPLS,
  62. TD(TD_M4), TD(TD_M10), KC_P4, KC_P5, KC_P6,
  63. TD(TD_M5), TD(TD_M11), KC_P1, KC_P2, KC_P3, KC_PENT,
  64. TD(TD_M6), TD(TD_M12), KC_P0, KC_PDOT
  65. ),
  66. [LAYER_MOD] = LAYOUT_numpad_6x6(
  67. _______, _______, KC_F9, KC_F10, KC_F11, KC_F12,
  68. _______, _______, TD(TD_NUM_TOGGLE), RCTL(KC_PSLS), RCTL(KC_PAST), _______,
  69. _______, _______, RCTL(KC_P7), RCTL(KC_P8), RCTL(KC_P9), _______,
  70. _______, _______, RCTL(KC_P4), RCTL(KC_P5), RCTL(KC_P6),
  71. _______, _______, RCTL(KC_P1), RCTL(KC_P2), RCTL(KC_P3), _______,
  72. _______, _______, RCTL(KC_P0), RCTL(KC_PDOT)
  73. ),
  74. [LAYER_RGB] = LAYOUT_numpad_6x6(
  75. _______, _______, _______, RM_HUEU, RM_SATU, RM_VALU,
  76. _______, _______, _______, RM_HUED, RM_SATD, RM_VALD,
  77. _______, _______, _______, RM_DMOD, RM_IMOD, RM_SPDU,
  78. _______, _______, _______, _______, _______,
  79. _______, _______, _______, _______, _______, RM_SPDD,
  80. _______, _______, _______, _______
  81. )
  82. };
  83. // Set the layer toggle key to an indication of the active layer. This is a
  84. // bit janky and should be done better, but I'm trying to avoid scope creep.
  85. bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
  86. if (layer_state_is(LAYER_MOD) && !rgb_matrix_idle_mode()) {
  87. // Get a hue that contrasts with current hue
  88. uint8_t hue = rgb_matrix_get_hue() + 127;
  89. // Make sure saturation is high enough to distiguish between hues
  90. uint8_t sat = 255;
  91. uint8_t val = MIN((uint16_t) rgb_matrix_get_val() + 50, 255);
  92. RGB rgb = hsv_to_rgb((HSV) {hue, sat, val});
  93. rgb_matrix_set_color(_NUM_LED_INDEX, rgb.r, rgb.g, rgb.b);
  94. }
  95. return false;
  96. }