X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tmk_core%2Fcommon%2Faction_layer.h;h=d89ed6e5ce8e1cb725f0262f7e7ac44b9b3ed1d4;hb=20e18d15e3173e342336d99ee0f7ed76392af190;hp=b6da353cfdbe851d6bfb5689b6173135b8697d84;hpb=d9fee5571d7de08e76dff5ce75816faf522240f6;p=qmk_firmware.git diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h index b6da353cf..d89ed6e5c 100644 --- a/tmk_core/common/action_layer.h +++ b/tmk_core/common/action_layer.h @@ -29,6 +29,9 @@ extern uint32_t default_layer_state; void default_layer_debug(void); void default_layer_set(uint32_t state); +__attribute__((weak)) +uint32_t default_layer_state_set_kb(uint32_t state); + #ifndef NO_ACTION_LAYER /* bitwise operation */ void default_layer_or(uint32_t state); @@ -68,8 +71,22 @@ void layer_xor(uint32_t state); #define layer_and(state) #define layer_xor(state) #define layer_debug() + +__attribute__((weak)) +uint32_t layer_state_set_kb(uint32_t state); +#endif + +/* pressed actions cache */ +#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) +/* The number of bits needed to represent the layer number: log2(32). */ +#define MAX_LAYER_BITS 5 +void update_source_layers_cache(keypos_t key, uint8_t layer); +uint8_t read_source_layers_cache(keypos_t key); #endif +action_t store_or_get_action(bool pressed, keypos_t key); +/* return the topmost non-transparent layer currently associated with key */ +int8_t layer_switch_get_layer(keypos_t key); /* return action depending on current layer status */ action_t layer_switch_get_action(keypos_t key);