]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
helper to compare current layer_state to user layer
authorColin T.A. Gray <colinta@gmail.com>
Tue, 5 Dec 2017 18:59:53 +0000 (11:59 -0700)
committerJack Humbert <jack.humb@gmail.com>
Fri, 8 Dec 2017 21:09:47 +0000 (16:09 -0500)
Performs the same bit comparison that the layer_move
functions perform

tmk_core/common/action_layer.c
tmk_core/common/action_layer.h

index 277a8f5d95cbd2a0fd046a5953a80e4ae8b1638e..46ea58727c06e4ae4641650d43e9485d9848a65b 100644 (file)
@@ -88,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 (layer == 0) { return cmp_layer_state == 0; }
+    return (cmp_layer_state & (1UL<<layer)) > 0;
+}
+
 void layer_move(uint8_t layer)
 {
     layer_state_set(1UL<<layer);
index e71604d87209eb8e4617e55d30bc065aa3399023..5fad18cbd6e34b16d0e13342c4dbbf571f8ad26e 100644 (file)
@@ -51,6 +51,8 @@ void default_layer_xor(uint32_t state);
 extern uint32_t layer_state;
 void layer_debug(void);
 void layer_clear(void);
+bool layer_state_is(uint8_t layer);
+bool layer_state_cmp(uint32_t layer1, uint8_t layer2);
 void layer_move(uint8_t layer);
 void layer_on(uint8_t layer);
 void layer_off(uint8_t layer);