X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tmk_core%2Fcommon%2Faction_layer.c;h=b8dcb34f3a04f65b8d0cd087e9f50ef931015726;hb=90f9fb4eee0da25e5408e54ed872c6da2a40c5f3;hp=58d919a04d50c4095a800d6ec883e1b22dc32d54;hpb=40a8a88e72c185eec629973580b72dfaaf71b116;p=qmk_firmware.git diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c index 58d919a04..b8dcb34f3 100644 --- a/tmk_core/common/action_layer.c +++ b/tmk_core/common/action_layer.c @@ -11,16 +11,32 @@ #endif -/* - * Default Layer State +/** \brief Default Layer State */ uint32_t default_layer_state = 0; +/** \brief Default Layer State Set At user Level + * + * FIXME: Needs docs + */ __attribute__((weak)) -uint32_t default_layer_state_set_kb(uint32_t state) { +uint32_t default_layer_state_set_user(uint32_t state) { return state; } +/** \brief Default Layer State Set At Keyboard Level + * + * FIXME: Needs docs + */ +__attribute__((weak)) +uint32_t default_layer_state_set_kb(uint32_t state) { + return default_layer_state_set_user(state); +} + +/** \brief Default Layer State Set + * + * FIXME: Needs docs + */ static void default_layer_state_set(uint32_t state) { state = default_layer_state_set_kb(state); @@ -31,25 +47,45 @@ static void default_layer_state_set(uint32_t state) clear_keyboard_but_mods(); // To avoid stuck keys } +/** \brief Default Layer Print + * + * FIXME: Needs docs + */ void default_layer_debug(void) { dprintf("%08lX(%u)", default_layer_state, biton32(default_layer_state)); } +/** \brief Default Layer Set + * + * FIXME: Needs docs + */ void default_layer_set(uint32_t state) { default_layer_state_set(state); } #ifndef NO_ACTION_LAYER +/** \brief Default Layer Or + * + * FIXME: Needs docs + */ void default_layer_or(uint32_t state) { default_layer_state_set(default_layer_state | state); } +/** \brief Default Layer And + * + * FIXME: Needs docs + */ void default_layer_and(uint32_t state) { default_layer_state_set(default_layer_state & state); } +/** \brief Default Layer Xor + * + * FIXME: Needs docs + */ void default_layer_xor(uint32_t state) { default_layer_state_set(default_layer_state ^ state); @@ -58,17 +94,33 @@ void default_layer_xor(uint32_t state) #ifndef NO_ACTION_LAYER -/* - * Keymap Layer State +/** \brief Keymap Layer State */ uint32_t layer_state = 0; +/** \brief Layer state set user + * + * FIXME: Needs docs + */ __attribute__((weak)) -uint32_t layer_state_set_kb(uint32_t state) { +uint32_t layer_state_set_user(uint32_t state) { return state; } -static void layer_state_set(uint32_t state) +/** \brief Layer state set keyboard + * + * FIXME: Needs docs + */ +__attribute__((weak)) +uint32_t layer_state_set_kb(uint32_t state) { + return layer_state_set_user(state); +} + +/** \brief Layer state set + * + * FIXME: Needs docs + */ +void layer_state_set(uint32_t state) { state = layer_state_set_kb(state); dprint("layer_state: "); @@ -78,51 +130,105 @@ static void layer_state_set(uint32_t state) clear_keyboard_but_mods(); // To avoid stuck keys } +/** \brief Layer clear + * + * FIXME: Needs docs + */ void layer_clear(void) { layer_state_set(0); } +/** \brief Layer state is + * + * FIXME: Needs docs + */ +bool layer_state_is(uint8_t layer) +{ + return layer_state_cmp(layer_state, layer); +} + +/** \brief Layer state compare + * + * FIXME: Needs docs + */ +bool layer_state_cmp(uint32_t cmp_layer_state, uint8_t layer) { + if (!cmp_layer_state) { return layer == 0; } + return (cmp_layer_state & (1UL<= 0; i--) { @@ -209,6 +320,10 @@ int8_t layer_switch_get_layer(keypos_t key) #endif } +/** \brief Layer switch get layer + * + * FIXME: Needs docs + */ action_t layer_switch_get_action(keypos_t key) { return action_for_key(layer_switch_get_layer(key), key);