diff options
Diffstat (limited to 'quantum/quantum.c')
| -rw-r--r-- | quantum/quantum.c | 12 |
1 files changed, 7 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 | ||
| 783 | uint32_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 | |||
| 783 | void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { | 789 | void 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 | ||
| 791 | void tap_random_base64(void) { | 793 | void tap_random_base64(void) { |
