aboutsummaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
Diffstat (limited to 'quantum')
-rw-r--r--quantum/quantum.c12
-rw-r--r--quantum/quantum.h1
2 files changed, 8 insertions, 5 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 5a2a73d4a..2662e5ef1 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -780,12 +780,14 @@ void set_single_persistent_default_layer(uint8_t default_layer) {
780 default_layer_set(1U<<default_layer); 780 default_layer_set(1U<<default_layer);
781} 781}
782 782
783uint32_t update_tri_layer_state(uint32_t state, uint8_t layer1, uint8_t layer2, uint8_t layer3) {
784 uint32_t mask12 = (1UL << layer1) | (1UL << layer2);
785 uint32_t mask3 = 1UL << layer3;
786 return (state & mask12) == mask12 ? (state | mask3) : (state & ~mask3);
787}
788
783void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { 789void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
784 if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { 790 layer_state_set(update_tri_layer_state(layer_state, layer1, layer2, layer3));
785 layer_on(layer3);
786 } else {
787 layer_off(layer3);
788 }
789} 791}
790 792
791void tap_random_base64(void) { 793void tap_random_base64(void) {
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 80a606f09..195f578de 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -142,6 +142,7 @@ void send_char(char ascii_code);
142 142
143// For tri-layer 143// For tri-layer
144void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3); 144void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3);
145uint32_t update_tri_layer_state(uint32_t state, uint8_t layer1, uint8_t layer2, uint8_t layer3);
145 146
146void set_single_persistent_default_layer(uint8_t default_layer); 147void set_single_persistent_default_layer(uint8_t default_layer);
147 148