diff options
Diffstat (limited to 'users/drashna/drashna.c')
| -rw-r--r-- | users/drashna/drashna.c | 107 | 
1 files changed, 71 insertions, 36 deletions
| diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index a493737262..3423e379a1 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  }  __attribute__((weak)) void keyboard_pre_init_keymap(void) {} - -void keyboard_pre_init_user(void) { +void                       keyboard_pre_init_user(void) {      userspace_config.raw = eeconfig_read_user();      keyboard_pre_init_keymap();  } @@ -59,12 +58,11 @@ void keyboard_pre_init_user(void) {  // This allows for a global, userspace functions, and continued  // customization of the keymap.  Use _keymap instead of _user  // functions in the keymaps -__attribute__((weak)) void matrix_init_keymap(void) {} -__attribute__((weak)) void matrix_init_secret(void) {} -  // Call user matrix init, set default RGB colors and then  // call the keymap's init function -void matrix_init_user(void) { +__attribute__((weak)) void matrix_init_keymap(void) {} +__attribute__((weak)) void matrix_init_secret(void) {} +void                       matrix_init_user(void) {  #if defined(BOOTLOADER_CATERINA) && defined(__AVR__)      DDRD &= ~(1 << 5);      PORTD &= ~(1 << 5); @@ -75,27 +73,33 @@ void matrix_init_user(void) {      matrix_init_secret();      matrix_init_keymap(); +#if defined(AUDIO_ENABLE) && defined(SPLIT_KEYBOARD) +    if (!is_keyboard_master()) { +        stop_all_notes(); +    } +#endif  }  __attribute__((weak)) void keyboard_post_init_keymap(void) {} - -void keyboard_post_init_user(void) { +void                       keyboard_post_init_user(void) {  #if defined(RGBLIGHT_ENABLE)      keyboard_post_init_rgb_light();  #endif  #if defined(RGB_MATRIX_ENABLE)      keyboard_post_init_rgb_matrix();  #endif +#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER) +    keyboard_post_init_transport_sync(); +#endif      keyboard_post_init_keymap();  } -__attribute__((weak)) void shutdown_keymap(void) {} -  #ifdef RGB_MATRIX_ENABLE  void rgb_matrix_update_pwm_buffers(void);  #endif -void shutdown_user(void) { +__attribute__((weak)) void shutdown_keymap(void) {} +void                       shutdown_user(void) {  #ifdef RGBLIGHT_ENABLE      rgblight_enable_noeeprom();      rgblight_mode_noeeprom(1); @@ -112,23 +116,28 @@ void shutdown_user(void) {  __attribute__((weak)) void suspend_power_down_keymap(void) {}  void suspend_power_down_user(void) { -#ifdef OLED_DRIVER_ENABLE +#ifdef OLED_ENABLE      oled_off();  #endif      suspend_power_down_keymap();  }  __attribute__((weak)) void suspend_wakeup_init_keymap(void) {} - -void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); } - -__attribute__((weak)) void matrix_scan_keymap(void) {} - -__attribute__((weak)) void matrix_scan_secret(void) {} +void                       suspend_wakeup_init_user(void) { +    if (layer_state_is(_GAMEPAD)) { +        layer_off(_GAMEPAD); +    } +    if (layer_state_is(_DIABLO)) { +        layer_off(_DIABLO); +    } +    suspend_wakeup_init_keymap(); +}  // No global matrix scan code, so just run keymap's matrix  // scan function -void matrix_scan_user(void) { +__attribute__((weak)) void matrix_scan_keymap(void) {} +__attribute__((weak)) void matrix_scan_secret(void) {} +void                       matrix_scan_user(void) {      static bool has_ran_yet;      if (!has_ran_yet) {          has_ran_yet = true; @@ -155,16 +164,14 @@ void matrix_scan_user(void) {  float doom_song[][2] = SONG(E1M1_DOOM);  #endif -__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } -  // on layer change, no matter where the change was initiated  // Then runs keymap's layer change check -layer_state_t layer_state_set_user(layer_state_t state) { +__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } +layer_state_t                       layer_state_set_user(layer_state_t state) {      if (!is_keyboard_master()) {          return state;      } -    state = layer_state_set_keymap(state);      state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);  #if defined(RGBLIGHT_ENABLE)      state = layer_state_set_rgb_light(state); @@ -180,13 +187,13 @@ layer_state_t layer_state_set_user(layer_state_t state) {          }      }  #endif +    state = layer_state_set_keymap(state);      return state;  } -__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } -  // Runs state check and changes underglow color and animation -layer_state_t default_layer_state_set_user(layer_state_t state) { +__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } +layer_state_t                       default_layer_state_set_user(layer_state_t state) {      if (!is_keyboard_master()) {          return state;      } @@ -201,22 +208,14 @@ layer_state_t default_layer_state_set_user(layer_state_t state) {  }  __attribute__((weak)) void led_set_keymap(uint8_t usb_led) {} - -// Any custom LED code goes here. -// So far, I only have keyboard specific code, -// So nothing goes here. -void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); } +void                       led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }  __attribute__((weak)) void eeconfig_init_keymap(void) {} - -void eeconfig_init_user(void) { +void                       eeconfig_init_user(void) {      userspace_config.raw              = 0;      userspace_config.rgb_layer_change = true;      eeconfig_update_user(userspace_config.raw);      eeconfig_init_keymap(); -#ifdef VIA_ENABLE -    via_eeprom_reset(); -#endif      keyboard_init();  } @@ -226,3 +225,39 @@ bool hasAllBitsInMask(uint8_t value, uint8_t mask) {      return (value & mask) == mask;  } + +#ifdef SPLIT_KEYBOARD +#    if defined(AUDIO_ENABLE) +bool delayed_tasks_run = false; +#    endif +__attribute__((weak)) void matrix_slave_scan_keymap(void) {} +void                       matrix_slave_scan_user(void) { +#    if defined(AUDIO_ENABLE) +#        if !defined(NO_MUSIC_MODE) +    music_task(); +#        endif +    if (!is_keyboard_master()) { +        static uint16_t delayed_task_timer = 0; +        if (!delayed_tasks_run) { +            if (!delayed_task_timer) { +                delayed_task_timer = timer_read(); +            } else if (timer_elapsed(delayed_task_timer) > 300) { +                audio_startup(); +                delayed_tasks_run = true; +            } +        } +    } +#    endif +#    ifdef SEQUENCER_ENABLE +    sequencer_task(); +#    endif +#    ifdef LED_MATRIX_ENABLE +    led_matrix_task(); +#    endif +#    ifdef HAPTIC_ENABLE +    haptic_task(); +#    endif + +    matrix_slave_scan_keymap(); +} +#endif | 
