diff options
author | Michael F. Lamb <mike@datagrok.org> | 2020-01-26 20:26:40 -0800 |
---|---|---|
committer | ridingqwerty <george.g.koenig@gmail.com> | 2020-01-26 23:26:40 -0500 |
commit | 5fb95c5f94d6c939dfea2fc716ef818d6242b918 (patch) | |
tree | 90aa18ca4d1036ceb7f1c4333c6767967b812806 /users/datagrok/feature_default_layers_selector.c | |
parent | 05d6e6ca78087969d7a47862341d10b6b555c37e (diff) |
create users/datagrok (#7653)
* users/datagrok: add shared functions
* users/datagrok: improve base-layer selection feature
* users/datagrok: add README.md
Diffstat (limited to 'users/datagrok/feature_default_layers_selector.c')
-rw-r--r-- | users/datagrok/feature_default_layers_selector.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/users/datagrok/feature_default_layers_selector.c b/users/datagrok/feature_default_layers_selector.c new file mode 100644 index 0000000000..c83c773f83 --- /dev/null +++ b/users/datagrok/feature_default_layers_selector.c @@ -0,0 +1,46 @@ +#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; +} |