]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - tmk_core/common/action_layer.c
Update pinout for Rev. 1.0 Iris without LED
[qmk_firmware.git] / tmk_core / common / action_layer.c
index 58d919a04d50c4095a800d6ec883e1b22dc32d54..22331376aab744d56a5556e5f276f37685e834f4 100644 (file)
@@ -64,11 +64,16 @@ void default_layer_xor(uint32_t state)
 uint32_t layer_state = 0;
 
 __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)
+__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: ");
@@ -83,6 +88,16 @@ void layer_clear(void)
     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);
@@ -188,10 +203,10 @@ action_t store_or_get_action(bool pressed, keypos_t key)
 
 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--) {