47 lines
1.2 KiB
C
47 lines
1.2 KiB
C
|
#include "feature_default_layers_selector.h"
|
||
|
|
||
|
#ifdef AUDIO_ENABLE
|
||
|
#include "audio.h"
|
||
|
#ifdef DEFAULT_LAYER_SONGS
|
||
|
extern float default_layer_songs[][16][2];
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
bool process_record_save_default_layer(uint16_t keycode, keyrecord_t *record) {
|
||
|
|
||
|
#if defined(AUDIO_ENABLE)
|
||
|
float saved_song[][2] = SONG(COIN_SOUND);
|
||
|
#endif
|
||
|
|
||
|
if (!(keycode == KF_LAYO
|
||
|
&& record->event.pressed
|
||
|
&& get_mods() & (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)))) {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
eeconfig_update_default_layer(default_layer_state);
|
||
|
#if defined(AUDIO_ENABLE)
|
||
|
PLAY_SONG(saved_song);
|
||
|
#endif
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
bool process_record_select_default_layer(uint16_t keycode, keyrecord_t *record) {
|
||
|
if (!(keycode == KF_LAYO
|
||
|
&& record->event.pressed)) {
|
||
|
return true;
|
||
|
}
|
||
|
if (!default_layer_state) {
|
||
|
default_layer_set(2);
|
||
|
} else {
|
||
|
default_layer_set(
|
||
|
(((1U<<(highest_base_layer+1))-1) & (default_layer_state<<1))
|
||
|
| (default_layer_state>>highest_base_layer));
|
||
|
}
|
||
|
led_set(host_keyboard_leds());
|
||
|
#if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS)
|
||
|
PLAY_SONG(default_layer_songs[get_highest_layer(default_layer_state)]);
|
||
|
#endif
|
||
|
return false;
|
||
|
}
|