diff options
Diffstat (limited to 'users/drashna/drashna.c')
| -rw-r--r-- | users/drashna/drashna.c | 95 |
1 files changed, 59 insertions, 36 deletions
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index 4cef5433d..27b9b5bc9 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c | |||
| @@ -50,8 +50,7 @@ bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this | |||
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | __attribute__((weak)) void keyboard_pre_init_keymap(void) {} | 52 | __attribute__((weak)) void keyboard_pre_init_keymap(void) {} |
| 53 | 53 | void keyboard_pre_init_user(void) { | |
| 54 | void keyboard_pre_init_user(void) { | ||
| 55 | userspace_config.raw = eeconfig_read_user(); | 54 | userspace_config.raw = eeconfig_read_user(); |
| 56 | keyboard_pre_init_keymap(); | 55 | keyboard_pre_init_keymap(); |
| 57 | } | 56 | } |
| @@ -59,12 +58,11 @@ void keyboard_pre_init_user(void) { | |||
| 59 | // This allows for a global, userspace functions, and continued | 58 | // This allows for a global, userspace functions, and continued |
| 60 | // customization of the keymap. Use _keymap instead of _user | 59 | // customization of the keymap. Use _keymap instead of _user |
| 61 | // functions in the keymaps | 60 | // functions in the keymaps |
| 62 | __attribute__((weak)) void matrix_init_keymap(void) {} | ||
| 63 | __attribute__((weak)) void matrix_init_secret(void) {} | ||
| 64 | |||
| 65 | // Call user matrix init, set default RGB colors and then | 61 | // Call user matrix init, set default RGB colors and then |
| 66 | // call the keymap's init function | 62 | // call the keymap's init function |
| 67 | void matrix_init_user(void) { | 63 | __attribute__((weak)) void matrix_init_keymap(void) {} |
| 64 | __attribute__((weak)) void matrix_init_secret(void) {} | ||
| 65 | void matrix_init_user(void) { | ||
| 68 | #if defined(BOOTLOADER_CATERINA) && defined(__AVR__) | 66 | #if defined(BOOTLOADER_CATERINA) && defined(__AVR__) |
| 69 | DDRD &= ~(1 << 5); | 67 | DDRD &= ~(1 << 5); |
| 70 | PORTD &= ~(1 << 5); | 68 | PORTD &= ~(1 << 5); |
| @@ -75,11 +73,15 @@ void matrix_init_user(void) { | |||
| 75 | 73 | ||
| 76 | matrix_init_secret(); | 74 | matrix_init_secret(); |
| 77 | matrix_init_keymap(); | 75 | matrix_init_keymap(); |
| 76 | #if defined(AUDIO_ENABLE) && defined(SPLIT_KEYBOARD) | ||
| 77 | if (!is_keyboard_master()) { | ||
| 78 | stop_all_notes(); | ||
| 79 | } | ||
| 80 | #endif | ||
| 78 | } | 81 | } |
| 79 | 82 | ||
| 80 | __attribute__((weak)) void keyboard_post_init_keymap(void) {} | 83 | __attribute__((weak)) void keyboard_post_init_keymap(void) {} |
| 81 | 84 | void keyboard_post_init_user(void) { | |
| 82 | void keyboard_post_init_user(void) { | ||
| 83 | #if defined(RGBLIGHT_ENABLE) | 85 | #if defined(RGBLIGHT_ENABLE) |
| 84 | keyboard_post_init_rgb_light(); | 86 | keyboard_post_init_rgb_light(); |
| 85 | #endif | 87 | #endif |
| @@ -92,13 +94,12 @@ void keyboard_post_init_user(void) { | |||
| 92 | keyboard_post_init_keymap(); | 94 | keyboard_post_init_keymap(); |
| 93 | } | 95 | } |
| 94 | 96 | ||
| 95 | __attribute__((weak)) void shutdown_keymap(void) {} | ||
| 96 | |||
| 97 | #ifdef RGB_MATRIX_ENABLE | 97 | #ifdef RGB_MATRIX_ENABLE |
| 98 | void rgb_matrix_update_pwm_buffers(void); | 98 | void rgb_matrix_update_pwm_buffers(void); |
| 99 | #endif | 99 | #endif |
| 100 | 100 | ||
| 101 | void shutdown_user(void) { | 101 | __attribute__((weak)) void shutdown_keymap(void) {} |
| 102 | void shutdown_user(void) { | ||
| 102 | #ifdef RGBLIGHT_ENABLE | 103 | #ifdef RGBLIGHT_ENABLE |
| 103 | rgblight_enable_noeeprom(); | 104 | rgblight_enable_noeeprom(); |
| 104 | rgblight_mode_noeeprom(1); | 105 | rgblight_mode_noeeprom(1); |
| @@ -113,8 +114,7 @@ void shutdown_user(void) { | |||
| 113 | } | 114 | } |
| 114 | 115 | ||
| 115 | __attribute__((weak)) void suspend_power_down_keymap(void) {} | 116 | __attribute__((weak)) void suspend_power_down_keymap(void) {} |
| 116 | 117 | void suspend_power_down_user(void) { | |
| 117 | void suspend_power_down_user(void) { | ||
| 118 | #ifdef OLED_DRIVER_ENABLE | 118 | #ifdef OLED_DRIVER_ENABLE |
| 119 | oled_off(); | 119 | oled_off(); |
| 120 | #endif | 120 | #endif |
| @@ -122,8 +122,7 @@ void suspend_power_down_user(void) { | |||
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | __attribute__((weak)) void suspend_wakeup_init_keymap(void) {} | 124 | __attribute__((weak)) void suspend_wakeup_init_keymap(void) {} |
| 125 | 125 | void suspend_wakeup_init_user(void) { | |
| 126 | void suspend_wakeup_init_user(void) { | ||
| 127 | if (layer_state_is(_GAMEPAD)) { | 126 | if (layer_state_is(_GAMEPAD)) { |
| 128 | layer_off(_GAMEPAD); | 127 | layer_off(_GAMEPAD); |
| 129 | } | 128 | } |
| @@ -133,13 +132,11 @@ void suspend_wakeup_init_user(void) { | |||
| 133 | suspend_wakeup_init_keymap(); | 132 | suspend_wakeup_init_keymap(); |
| 134 | } | 133 | } |
| 135 | 134 | ||
| 136 | __attribute__((weak)) void matrix_scan_keymap(void) {} | ||
| 137 | |||
| 138 | __attribute__((weak)) void matrix_scan_secret(void) {} | ||
| 139 | |||
| 140 | // No global matrix scan code, so just run keymap's matrix | 135 | // No global matrix scan code, so just run keymap's matrix |
| 141 | // scan function | 136 | // scan function |
| 142 | void matrix_scan_user(void) { | 137 | __attribute__((weak)) void matrix_scan_keymap(void) {} |
| 138 | __attribute__((weak)) void matrix_scan_secret(void) {} | ||
| 139 | void matrix_scan_user(void) { | ||
| 143 | static bool has_ran_yet; | 140 | static bool has_ran_yet; |
| 144 | if (!has_ran_yet) { | 141 | if (!has_ran_yet) { |
| 145 | has_ran_yet = true; | 142 | has_ran_yet = true; |
| @@ -166,11 +163,10 @@ void matrix_scan_user(void) { | |||
| 166 | float doom_song[][2] = SONG(E1M1_DOOM); | 163 | float doom_song[][2] = SONG(E1M1_DOOM); |
| 167 | #endif | 164 | #endif |
| 168 | 165 | ||
| 169 | __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } | ||
| 170 | |||
| 171 | // on layer change, no matter where the change was initiated | 166 | // on layer change, no matter where the change was initiated |
| 172 | // Then runs keymap's layer change check | 167 | // Then runs keymap's layer change check |
| 173 | layer_state_t layer_state_set_user(layer_state_t state) { | 168 | __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } |
| 169 | layer_state_t layer_state_set_user(layer_state_t state) { | ||
| 174 | if (!is_keyboard_master()) { | 170 | if (!is_keyboard_master()) { |
| 175 | return state; | 171 | return state; |
| 176 | } | 172 | } |
| @@ -194,10 +190,9 @@ layer_state_t layer_state_set_user(layer_state_t state) { | |||
| 194 | return state; | 190 | return state; |
| 195 | } | 191 | } |
| 196 | 192 | ||
| 197 | __attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } | ||
| 198 | |||
| 199 | // Runs state check and changes underglow color and animation | 193 | // Runs state check and changes underglow color and animation |
| 200 | layer_state_t default_layer_state_set_user(layer_state_t state) { | 194 | __attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } |
| 195 | layer_state_t default_layer_state_set_user(layer_state_t state) { | ||
| 201 | if (!is_keyboard_master()) { | 196 | if (!is_keyboard_master()) { |
| 202 | return state; | 197 | return state; |
| 203 | } | 198 | } |
| @@ -212,22 +207,14 @@ layer_state_t default_layer_state_set_user(layer_state_t state) { | |||
| 212 | } | 207 | } |
| 213 | 208 | ||
| 214 | __attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} | 209 | __attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} |
| 215 | 210 | void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } | |
| 216 | // Any custom LED code goes here. | ||
| 217 | // So far, I only have keyboard specific code, | ||
| 218 | // So nothing goes here. | ||
| 219 | void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } | ||
| 220 | 211 | ||
| 221 | __attribute__((weak)) void eeconfig_init_keymap(void) {} | 212 | __attribute__((weak)) void eeconfig_init_keymap(void) {} |
| 222 | 213 | void eeconfig_init_user(void) { | |
| 223 | void eeconfig_init_user(void) { | ||
| 224 | userspace_config.raw = 0; | 214 | userspace_config.raw = 0; |
| 225 | userspace_config.rgb_layer_change = true; | 215 | userspace_config.rgb_layer_change = true; |
| 226 | eeconfig_update_user(userspace_config.raw); | 216 | eeconfig_update_user(userspace_config.raw); |
| 227 | eeconfig_init_keymap(); | 217 | eeconfig_init_keymap(); |
| 228 | #ifdef VIA_ENABLE | ||
| 229 | via_eeprom_reset(); | ||
| 230 | #endif | ||
| 231 | keyboard_init(); | 218 | keyboard_init(); |
| 232 | } | 219 | } |
| 233 | 220 | ||
| @@ -237,3 +224,39 @@ bool hasAllBitsInMask(uint8_t value, uint8_t mask) { | |||
| 237 | 224 | ||
| 238 | return (value & mask) == mask; | 225 | return (value & mask) == mask; |
| 239 | } | 226 | } |
| 227 | |||
| 228 | #ifdef SPLIT_KEYBOARD | ||
| 229 | # if defined(AUDIO_ENABLE) | ||
| 230 | bool delayed_tasks_run = false; | ||
| 231 | # endif | ||
| 232 | __attribute__((weak)) void matrix_slave_scan_keymap(void) {} | ||
| 233 | void matrix_slave_scan_user(void) { | ||
| 234 | # if defined(AUDIO_ENABLE) | ||
| 235 | # if !defined(NO_MUSIC_MODE) | ||
| 236 | music_task(); | ||
| 237 | # endif | ||
| 238 | if (!is_keyboard_master()) { | ||
| 239 | static uint16_t delayed_task_timer = 0; | ||
| 240 | if (!delayed_tasks_run) { | ||
| 241 | if (!delayed_task_timer) { | ||
| 242 | delayed_task_timer = timer_read(); | ||
| 243 | } else if (timer_elapsed(delayed_task_timer) > 300) { | ||
| 244 | audio_startup(); | ||
| 245 | delayed_tasks_run = true; | ||
| 246 | } | ||
| 247 | } | ||
| 248 | } | ||
| 249 | # endif | ||
| 250 | # ifdef SEQUENCER_ENABLE | ||
| 251 | sequencer_task(); | ||
| 252 | # endif | ||
| 253 | # ifdef LED_MATRIX_ENABLE | ||
| 254 | led_matrix_task(); | ||
| 255 | # endif | ||
| 256 | # ifdef HAPTIC_ENABLE | ||
| 257 | haptic_task(); | ||
| 258 | # endif | ||
| 259 | |||
| 260 | matrix_slave_scan_keymap(); | ||
| 261 | } | ||
| 262 | #endif | ||
