summaryrefslogtreecommitdiff
path: root/users/datagrok/feature_default_layers_selector.c
diff options
context:
space:
mode:
authorMichael F. Lamb <mike@datagrok.org>2020-01-26 20:26:40 -0800
committerridingqwerty <george.g.koenig@gmail.com>2020-01-26 23:26:40 -0500
commit5fb95c5f94d6c939dfea2fc716ef818d6242b918 (patch)
tree90aa18ca4d1036ceb7f1c4333c6767967b812806 /users/datagrok/feature_default_layers_selector.c
parent05d6e6ca78087969d7a47862341d10b6b555c37e (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.c46
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;
+}