*/
uint32_t default_layer_state = 0;
+__attribute__((weak))
+uint32_t default_layer_state_set_kb(uint32_t state) {
+ return state;
+}
+
static void default_layer_state_set(uint32_t state)
{
+ state = default_layer_state_set_kb(state);
debug("default_layer_state: ");
default_layer_debug(); debug(" to ");
default_layer_state = state;
*/
uint32_t layer_state = 0;
-static void layer_state_set(uint32_t state)
+__attribute__((weak))
+uint32_t layer_state_set_user(uint32_t state) {
+ return state;
+}
+
+__attribute__((weak))
+uint32_t layer_state_set_kb(uint32_t state) {
+ return layer_state_set_user(state);
+}
+
+void layer_state_set(uint32_t state)
{
+ state = layer_state_set_kb(state);
dprint("layer_state: ");
layer_debug(); dprint(" to ");
layer_state = state;
layer_state_set(0);
}
+bool layer_state_is(uint8_t layer)
+{
+ return layer_state_cmp(layer_state, layer);
+}
+
+bool layer_state_cmp(uint32_t cmp_layer_state, uint8_t layer) {
+ if (!cmp_layer_state) { return layer == 0; }
+ return (cmp_layer_state & (1UL<<layer)) != 0;
+}
+
void layer_move(uint8_t layer)
{
layer_state_set(1UL<<layer);
int8_t layer_switch_get_layer(keypos_t key)
{
+#ifndef NO_ACTION_LAYER
action_t action;
action.code = ACTION_TRANSPARENT;
-#ifndef NO_ACTION_LAYER
uint32_t layers = layer_state | default_layer_state;
/* check top layer first */
for (int8_t i = 31; i >= 0; i--) {