aboutsummaryrefslogtreecommitdiff
path: root/tmk_core
diff options
context:
space:
mode:
authorColin T.A. Gray <colinta@gmail.com>2017-12-05 11:59:53 -0700
committerJack Humbert <jack.humb@gmail.com>2017-12-08 16:09:47 -0500
commit1620d78e73f8e01ed1d48255c655d9eb6cc1b135 (patch)
tree761d0d19cbcaff55b07970108e902e5101ff999a /tmk_core
parentfc54d62111204a01b75dc24a427c2f5aa2ea3c3c (diff)
downloadqmk_firmware-1620d78e73f8e01ed1d48255c655d9eb6cc1b135.tar.gz
qmk_firmware-1620d78e73f8e01ed1d48255c655d9eb6cc1b135.zip
helper to compare current layer_state to user layer
Performs the same bit comparison that the layer_move functions perform
Diffstat (limited to 'tmk_core')
-rw-r--r--tmk_core/common/action_layer.c10
-rw-r--r--tmk_core/common/action_layer.h2
2 files changed, 12 insertions, 0 deletions
diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c
index 277a8f5d9..46ea58727 100644
--- a/tmk_core/common/action_layer.c
+++ b/tmk_core/common/action_layer.c
@@ -88,6 +88,16 @@ void layer_clear(void)
88 layer_state_set(0); 88 layer_state_set(0);
89} 89}
90 90
91bool layer_state_is(uint8_t layer)
92{
93 return layer_state_cmp(layer_state, layer);
94}
95
96bool layer_state_cmp(uint32_t cmp_layer_state, uint8_t layer) {
97 if (layer == 0) { return cmp_layer_state == 0; }
98 return (cmp_layer_state & (1UL<<layer)) > 0;
99}
100
91void layer_move(uint8_t layer) 101void layer_move(uint8_t layer)
92{ 102{
93 layer_state_set(1UL<<layer); 103 layer_state_set(1UL<<layer);
diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h
index e71604d87..5fad18cbd 100644
--- a/tmk_core/common/action_layer.h
+++ b/tmk_core/common/action_layer.h
@@ -51,6 +51,8 @@ void default_layer_xor(uint32_t state);
51extern uint32_t layer_state; 51extern uint32_t layer_state;
52void layer_debug(void); 52void layer_debug(void);
53void layer_clear(void); 53void layer_clear(void);
54bool layer_state_is(uint8_t layer);
55bool layer_state_cmp(uint32_t layer1, uint8_t layer2);
54void layer_move(uint8_t layer); 56void layer_move(uint8_t layer);
55void layer_on(uint8_t layer); 57void layer_on(uint8_t layer);
56void layer_off(uint8_t layer); 58void layer_off(uint8_t layer);