diff options
Diffstat (limited to 'common/layer_switch.c')
-rw-r--r-- | common/layer_switch.c | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/common/layer_switch.c b/common/layer_switch.c deleted file mode 100644 index a5d426a899..0000000000 --- a/common/layer_switch.c +++ /dev/null @@ -1,209 +0,0 @@ -#include <stdint.h> -#include "keyboard.h" -#include "action.h" -#include "debug.h" -#include "util.h" -#include "layer_switch.h" - - -/* - * Default Layer (0-15) - */ -uint8_t default_layer = 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 -} - - -#ifndef NO_ACTION_KEYMAP -/* - * 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<<layer); -} - -void keymap_on(uint8_t layer) -{ - keymap_stat_set(keymap_stat | (1<<layer)); -} - -void keymap_off(uint8_t layer) -{ - keymap_stat_set(keymap_stat & ~(1<<layer)); -} - -void keymap_invert(uint8_t layer) -{ - keymap_stat_set(keymap_stat ^ (1<<layer)); -} - -void keymap_or(uint16_t stat) -{ - keymap_stat_set(keymap_stat | stat); -} -void keymap_and(uint16_t stat) -{ - keymap_stat_set(keymap_stat & stat); -} -void keymap_xor(uint16_t stat) -{ - keymap_stat_set(keymap_stat ^ stat); -} - -void keymap_debug(void) -{ - debug_hex16(keymap_stat); debug("("); debug_dec(keymap_get_layer()); debug(")"); -} -#endif - - - -#ifndef NO_ACTION_OVERLAY -/* - * Overlay Layer (16-31 = 0-15|0x10) - */ -uint16_t overlay_stat = 0; - -/* return highest layer whose state is on */ -uint8_t overlay_get_layer(void) -{ - return biton16(overlay_stat); -} - -static void overlay_stat_set(uint16_t stat) -{ - debug("overlay: "); - overlay_debug(); debug(" to "); - - overlay_stat = stat; - - overlay_debug(); debug("\n"); - - clear_keyboard_but_mods(); // To avoid stuck keys -} - -void overlay_clear(void) -{ - overlay_stat_set(0); -} - - -void overlay_set(uint16_t stat) -{ - overlay_stat_set(stat); -} - -void overlay_move(uint8_t layer) -{ - overlay_stat_set(1<<layer); -} - -void overlay_on(uint8_t layer) -{ - overlay_stat_set(overlay_stat | (1<<layer)); -} - -void overlay_off(uint8_t layer) -{ - overlay_stat_set(overlay_stat & ~(1<<layer)); -} - -void overlay_invert(uint8_t layer) -{ - overlay_stat_set(overlay_stat ^ (1<<layer)); -} - -void overlay_or(uint16_t stat) -{ - overlay_stat_set(overlay_stat | stat); -} -void overlay_and(uint16_t stat) -{ - overlay_stat_set(overlay_stat & stat); -} -void overlay_xor(uint16_t stat) -{ - overlay_stat_set(overlay_stat ^ stat); -} - -void overlay_debug(void) -{ - debug_hex16(overlay_stat); debug("("); debug_dec(overlay_get_layer()); debug(")"); -} -#endif - -action_t layer_switch_get_action(key_t key) -{ - action_t action; - action.code = ACTION_TRANSPARENT; - -#ifndef NO_ACTION_OVERLAY - /* overlay: top layer first */ - for (int8_t i = 15; i >= 0; i--) { - if (overlay_stat & (1<<i)) { - action = action_for_key(i | OVERLAY_BIT, key); - if (action.code != ACTION_TRANSPARENT) { - return action; - } - } - } -#endif - -#ifndef NO_ACTION_KEYMAP - /* keymap: top layer first */ - for (int8_t i = 15; i >= 0; i--) { - if (keymap_stat & (1<<i)) { - action = action_for_key(i, key); - if (action.code != ACTION_TRANSPARENT) { - return action; - } - } - } -#endif - - /* default layer */ - action = action_for_key(default_layer, key); - return action; -} |