diff options
| author | Colin T.A. Gray <colinta@gmail.com> | 2017-12-05 11:59:53 -0700 |
|---|---|---|
| committer | Jack Humbert <jack.humb@gmail.com> | 2017-12-08 16:09:47 -0500 |
| commit | 1620d78e73f8e01ed1d48255c655d9eb6cc1b135 (patch) | |
| tree | 761d0d19cbcaff55b07970108e902e5101ff999a /tmk_core | |
| parent | fc54d62111204a01b75dc24a427c2f5aa2ea3c3c (diff) | |
| download | qmk_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.c | 10 | ||||
| -rw-r--r-- | tmk_core/common/action_layer.h | 2 |
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 | ||
| 91 | bool layer_state_is(uint8_t layer) | ||
| 92 | { | ||
| 93 | return layer_state_cmp(layer_state, layer); | ||
| 94 | } | ||
| 95 | |||
| 96 | bool 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 | |||
| 91 | void layer_move(uint8_t layer) | 101 | void 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); | |||
| 51 | extern uint32_t layer_state; | 51 | extern uint32_t layer_state; |
| 52 | void layer_debug(void); | 52 | void layer_debug(void); |
| 53 | void layer_clear(void); | 53 | void layer_clear(void); |
| 54 | bool layer_state_is(uint8_t layer); | ||
| 55 | bool layer_state_cmp(uint32_t layer1, uint8_t layer2); | ||
| 54 | void layer_move(uint8_t layer); | 56 | void layer_move(uint8_t layer); |
| 55 | void layer_on(uint8_t layer); | 57 | void layer_on(uint8_t layer); |
| 56 | void layer_off(uint8_t layer); | 58 | void layer_off(uint8_t layer); |
