diff options
| -rw-r--r-- | keyboards/tanuki/keymaps/default/keymap.c | 206 |
1 files changed, 93 insertions, 113 deletions
diff --git a/keyboards/tanuki/keymaps/default/keymap.c b/keyboards/tanuki/keymaps/default/keymap.c index 34ca6a639..7c3e11f27 100644 --- a/keyboards/tanuki/keymaps/default/keymap.c +++ b/keyboards/tanuki/keymaps/default/keymap.c | |||
| @@ -1,140 +1,120 @@ | |||
| 1 | #include QMK_KEYBOARD_H | 1 | #include QMK_KEYBOARD_H |
| 2 | 2 | ||
| 3 | //Layer definitions | 3 | // custom type to store stuff in EEPROM |
| 4 | typedef union { | ||
| 5 | uint32_t raw; | ||
| 6 | struct { | ||
| 7 | bool layer_rgb :1; | ||
| 8 | }; | ||
| 9 | } user_config_t; | ||
| 10 | |||
| 11 | user_config_t user_config; | ||
| 12 | |||
| 13 | // Layer definitions | ||
| 4 | #define _BL 0 | 14 | #define _BL 0 |
| 5 | #define _DL 1 | 15 | #define _DL 1 |
| 6 | #define _UL 2 | 16 | #define _UL 2 |
| 7 | #define _GL 3 | 17 | #define _GL 3 |
| 8 | #define _BK 4 | 18 | #define _BK 4 |
| 9 | 19 | ||
| 10 | 20 | // Custom keycode to toggle normal RGB or per-layer RGB | |
| 11 | //other variables | 21 | enum custom_keycodes { |
| 12 | int mCalled = 0; | 22 | CUSTRGB = SAFE_RANGE, |
| 13 | bool blockToggle = false; | 23 | }; |
| 14 | bool lRGB = true; | ||
| 15 | 24 | ||
| 16 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 25 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 17 | 26 | ||
| 18 | [_BL] = LAYOUT( | 27 | [_BL] = LAYOUT( |
| 19 | KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ | 28 | KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ |
| 20 | KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TG(_GL), \ | 29 | KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TG(_GL), \ |
| 21 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, KC_SLSH, KC_ENT, \ | 30 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, KC_SLSH, KC_ENT, \ |
| 22 | KC_LCTL, KC_LALT, KC_COMMA, LT(_DL,KC_SPC), LT(_UL,KC_SPC), KC_DOT, KC_LGUI), | 31 | KC_LCTL, KC_LALT, KC_COMMA, LT(_DL,KC_SPC), LT(_UL,KC_SPC), KC_DOT, KC_LGUI), |
| 23 | 32 | ||
| 24 | [_DL] = LAYOUT( | 33 | [_DL] = LAYOUT( |
| 25 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,\ | 34 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,\ |
| 26 | KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,\ | 35 | KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,\ |
| 27 | KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | 36 | KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ |
| 28 | KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), | 37 | KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), |
| 29 | 38 | ||
| 30 | [_UL] = LAYOUT( | 39 | [_UL] = LAYOUT( |
| 31 | KC_GRV, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_PIPE, KC_BSLS, KC_PLUS, KC_UNDS, KC_MINS, KC_EQL, KC_DEL,\ | 40 | KC_GRV, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_PIPE, KC_BSLS, KC_PLUS, KC_UNDS, KC_MINS, KC_EQL, KC_DEL,\ |
| 32 | KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, \ | 41 | KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, \ |
| 33 | KC_TRNS, KC_FN0, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, \ | 42 | KC_TRNS, CUSTRGB, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, \ |
| 34 | KC_TRNS, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, RGB_SAI, RGB_VAI), | 43 | KC_TRNS, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, RGB_SAI, RGB_VAI), |
| 35 | 44 | ||
| 36 | [_GL] = LAYOUT( | 45 | [_GL] = LAYOUT( |
| 37 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, \ | 46 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, \ |
| 38 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, \ | 47 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, \ |
| 39 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ | 48 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ |
| 40 | KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS), | 49 | KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS) |
| 41 | 50 | ||
| 42 | [_BK] = LAYOUT( | ||
| 43 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ | ||
| 44 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ | ||
| 45 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, \ | ||
| 46 | KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_FN1, KC_NO, KC_NO), | ||
| 47 | |||
| 48 | }; | 51 | }; |
| 49 | 52 | ||
| 50 | 53 | void keyboard_post_init_user(void) { | |
| 51 | //KC_MPLY, KC_VOLU, KC_VOLD, KC_TRNS, KC_TRNS, KC_MNXT, KC_MPRV | 54 | user_config.raw = eeconfig_read_user(); |
| 52 | //function to toggle the interactive rgb variable | 55 | if(user_config.layer_rgb) { |
| 53 | bool toggleLayerRGB(void){ | 56 | rgblight_enable_noeeprom(); |
| 54 | if(lRGB == true){ | 57 | rgblight_mode_noeeprom(1); |
| 55 | return false; | 58 | rgblight_sethsv_noeeprom(0,10,255); |
| 56 | } | 59 | } |
| 57 | else{ | ||
| 58 | return true; | ||
| 59 | } | ||
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | void matrix_init_user(void){ | 62 | uint32_t layer_state_set_user(uint32_t state) { |
| 63 | rgblight_enable(); | 63 | // This code switches underglow color by active layer, if the user has enabled the feature |
| 64 | rgblight_mode(1); | 64 | if(user_config.layer_rgb) { |
| 65 | rgblight_sethsv(0,10,255); | 65 | switch (biton32(state)) { |
| 66 | case _BL: | ||
| 67 | rgblight_sethsv_noeeprom(0,10,255); | ||
| 68 | rgblight_mode_noeeprom(1); | ||
| 69 | break; | ||
| 70 | case _DL: | ||
| 71 | rgblight_sethsv_noeeprom(130,200,255); | ||
| 72 | rgblight_mode_noeeprom(1); | ||
| 73 | break; | ||
| 74 | case _UL: | ||
| 75 | rgblight_sethsv_noeeprom(170,200,255); | ||
| 76 | rgblight_mode_noeeprom(1); | ||
| 77 | break; | ||
| 78 | case _GL: | ||
| 79 | rgblight_sethsv_noeeprom(0,180,255); | ||
| 80 | rgblight_mode_noeeprom(1); | ||
| 81 | break; | ||
| 82 | } | ||
| 83 | } | ||
| 84 | return state; | ||
| 66 | } | 85 | } |
| 67 | 86 | ||
| 68 | //check for layer and if there was a keypress change underglow lighting | ||
| 69 | void matrix_scan_kb(void){ | ||
| 70 | if(lRGB == true) | ||
| 71 | { | ||
| 72 | |||
| 73 | |||
| 74 | |||
| 75 | //base layer | ||
| 76 | if(layer_state == 0x00000000 && mCalled == 1 ){ | ||
| 77 | rgblight_sethsv(0,10,255); | ||
| 78 | mCalled = 0; | ||
| 79 | } | ||
| 80 | |||
| 81 | //down layer | ||
| 82 | else if(layer_state == 0x00000002 && mCalled == 1){ | ||
| 83 | rgblight_sethsv(160,255,255); | ||
| 84 | mCalled = 0; | ||
| 85 | } | ||
| 86 | |||
| 87 | |||
| 88 | //up layer with rgb access blocked | ||
| 89 | else if(layer_state == 0x00000004 && mCalled == 1 && lRGB == true){ | ||
| 90 | //blockToggle = true; | ||
| 91 | layer_state = 0x00000014; | ||
| 92 | rgblight_sethsv(180,255,255); | ||
| 93 | mCalled = 0; | ||
| 94 | } | ||
| 95 | |||
| 96 | //arrow cluster layer | ||
| 97 | else if(layer_state == 0x00000008 && mCalled == 1){ | ||
| 98 | rgblight_sethsv(0,180,255); | ||
| 99 | mCalled = 0; | ||
| 100 | } | ||
| 101 | |||
| 102 | //if on blocked layer and the spacebar has been released reset to baselayer and set colours to white | ||
| 103 | else if(layer_state == 0x00000014 && blockToggle == true ) | ||
| 104 | { | ||
| 105 | blockToggle = false; | ||
| 106 | layer_state = 0x00000000; | ||
| 107 | rgblight_sethsv(0,10,255); | ||
| 108 | } | ||
| 109 | |||
| 110 | } | ||
| 111 | } | ||
| 112 | |||
| 113 | //set mCalled to 1 when a button is pressed to make sure the leds aren't continuesly updated. | ||
| 114 | bool process_record_user (uint16_t keycode, keyrecord_t *record) { | 87 | bool process_record_user (uint16_t keycode, keyrecord_t *record) { |
| 115 | mCalled = 1; | 88 | switch (keycode) { |
| 116 | 89 | case CUSTRGB: // if the user toggled per-layer RGB, update the config and refresh the RGB color | |
| 117 | //uncommenting the line below causes the lights to flicker when typing on the keyboard. | 90 | if(record->event.pressed) { |
| 118 | //rgblight_sethsv(0,255,0); | 91 | user_config.layer_rgb ^= 1; |
| 119 | 92 | eeconfig_update_user(user_config.raw); | |
| 120 | if(keycode == KC_FN0 && record->event.pressed){ | 93 | if (user_config.layer_rgb) { |
| 121 | //set the toggle and make sure to set the colour back to white | 94 | layer_state_set(layer_state); |
| 122 | lRGB = toggleLayerRGB(); | 95 | } |
| 123 | rgblight_enable(); | 96 | } |
| 124 | rgblight_mode(1); | 97 | return false; |
| 125 | rgblight_sethsv(0,255,255); | 98 | break; |
| 126 | layer_state =0x00000000; | 99 | case RGB_MOD: |
| 127 | 100 | case RGB_SAD: | |
| 128 | return false; | 101 | case RGB_SAI: |
| 129 | } | 102 | case RGB_HUI: |
| 130 | 103 | case RGB_VAD: | |
| 131 | //check if spacebar is released when on a different layer | 104 | case RGB_VAI: |
| 132 | if(keycode == KC_FN1){ | 105 | if(user_config.layer_rgb && record->event.pressed) { |
| 133 | if(record ->event.pressed){ | 106 | return false; // if layer RGB is on, ignore attempts to change RGB settings |
| 134 | }else{ | 107 | } |
| 135 | blockToggle = true; | 108 | break; |
| 136 | } | 109 | } |
| 137 | } | 110 | return true; |
| 111 | } | ||
| 138 | 112 | ||
| 139 | return true; | 113 | void eeconfig_init_user(void) { // in case EEPROM is reset, set up our custom config |
| 114 | user_config.raw = 0; | ||
| 115 | user_config.layer_rgb = true; // enable per-layer RGB by default | ||
| 116 | eeconfig_update_user(user_config.raw); | ||
| 117 | rgblight_enable(); | ||
| 118 | rgblight_sethsv(0,10,255); | ||
| 119 | rgblight_mode(1); | ||
| 140 | } | 120 | } |
