X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=common%2Flayer_switch.c;h=19e286f8853fa47908d387631cfd79ee4f1ce6d1;hb=0142e20bf0012eada5ba40caaa63466bfbb095a2;hp=22bfb34f656bc49c866499b35d01de4d099d08c2;hpb=e324fa29187dff7868d9d7fd378e0e46d77107a5;p=max%2Ftmk_keyboard.git diff --git a/common/layer_switch.c b/common/layer_switch.c index 22bfb34f..19e286f8 100644 --- a/common/layer_switch.c +++ b/common/layer_switch.c @@ -6,84 +6,168 @@ #include "layer_switch.h" +/* + * Default Layer (0-15) + */ uint8_t default_layer = 0; -uint16_t layer_switch_stat = 0; +void default_layer_set(uint8_t layer) +{ + debug("default_layer_set: "); + debug_dec(default_layer); debug(" to "); + + default_layer = layer; + + debug_dec(default_layer); debug("\n"); + + clear_keyboard_but_mods(); // To avoid stuck keys +} + + +/* + * Keymap Layer (0-15) + */ +uint16_t keymap_stat = 0; + +/* return highest layer whose state is on */ +uint8_t keymap_get_layer(void) +{ + return biton16(keymap_stat); +} + +static void keymap_stat_set(uint16_t stat) +{ + debug("keymap: "); + keymap_debug(); debug(" to "); + keymap_stat = stat; + + keymap_debug(); debug("\n"); + + clear_keyboard_but_mods(); // To avoid stuck keys +} + +void keymap_clear(void) +{ + keymap_stat_set(0); +} + + +void keymap_set(uint16_t stat) +{ + keymap_stat_set(stat); +} + +void keymap_move(uint8_t layer) +{ + keymap_stat_set(1<= 0; i--) { - if (layer_switch_stat & (1<= 0; i--) { + if (keymap_stat & (1<