You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.2 KiB

  1. #include "feature_default_layers_selector.h"
  2. #ifdef AUDIO_ENABLE
  3. #include "audio.h"
  4. #ifdef DEFAULT_LAYER_SONGS
  5. extern float default_layer_songs[][16][2];
  6. #endif
  7. #endif
  8. bool process_record_save_default_layer(uint16_t keycode, keyrecord_t *record) {
  9. #if defined(AUDIO_ENABLE)
  10. float saved_song[][2] = SONG(COIN_SOUND);
  11. #endif
  12. if (!(keycode == KF_LAYO
  13. && record->event.pressed
  14. && get_mods() & (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)))) {
  15. return true;
  16. }
  17. eeconfig_update_default_layer(default_layer_state);
  18. #if defined(AUDIO_ENABLE)
  19. PLAY_SONG(saved_song);
  20. #endif
  21. return false;
  22. }
  23. bool process_record_select_default_layer(uint16_t keycode, keyrecord_t *record) {
  24. if (!(keycode == KF_LAYO
  25. && record->event.pressed)) {
  26. return true;
  27. }
  28. if (!default_layer_state) {
  29. default_layer_set(2);
  30. } else {
  31. default_layer_set(
  32. (((1U<<(highest_base_layer+1))-1) & (default_layer_state<<1))
  33. | (default_layer_state>>highest_base_layer));
  34. }
  35. led_set(host_keyboard_leds());
  36. #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS)
  37. PLAY_SONG(default_layer_songs[get_highest_layer(default_layer_state)]);
  38. #endif
  39. return false;
  40. }