refactor
parent
afc7d9f87c
commit
a57fdf7efd
27
src/main.c
27
src/main.c
|
@ -25,10 +25,6 @@ typedef enum StickyState {
|
|||
} StickyState;
|
||||
|
||||
// layer data
|
||||
struct layer {
|
||||
bool active;
|
||||
StickyState sticky;
|
||||
};
|
||||
#include "./main.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -57,8 +53,9 @@ static bool main_arg_was_pressed;
|
|||
static bool main_arg_any_non_trans_key_pressed;
|
||||
static bool main_arg_trans_key_pressed;
|
||||
|
||||
static struct layer layers[KB_LAYERS];
|
||||
static uint8_t layers_top = 0;
|
||||
static bool layers_active[KB_LAYERS];
|
||||
static StickyState layers_sticky[KB_LAYERS];
|
||||
static uint8_t layers_top = 0;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
@ -86,10 +83,10 @@ int main(void) {
|
|||
|
||||
void main_init_layers() {
|
||||
for (uint8_t layer=0; layer < KB_LAYERS; layer++) {
|
||||
layers[layer].active = false;
|
||||
layers[layer].sticky = eStickyNone;
|
||||
layers_active[layer] = false;
|
||||
layers_sticky[layer] = eStickyNone;
|
||||
}
|
||||
layers[0].active = true;
|
||||
layers_active[0] = true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -97,7 +94,7 @@ void main_init_layers() {
|
|||
uint8_t _highest_active_layer(uint8_t offset) {
|
||||
if (offset < layers_top) {
|
||||
for (uint8_t l = layers_top - offset; l > 0 && l < KB_LAYERS; l--) {
|
||||
if (layers[l].active) { return l; }
|
||||
if (layers_active[l]) { return l; }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -118,7 +115,7 @@ StickyState main_layers_top_sticky() {
|
|||
// return if layer is sticky
|
||||
StickyState main_layers_sticky(uint8_t layer) {
|
||||
if (layer < KB_LAYERS) {
|
||||
return layers[layer].sticky;
|
||||
return layers_sticky[layer];
|
||||
}
|
||||
return eStickyNone;
|
||||
}
|
||||
|
@ -127,8 +124,8 @@ StickyState main_layers_sticky(uint8_t layer) {
|
|||
void main_layers_enable(uint8_t layer, StickyState sticky) {
|
||||
if (layer >= KB_LAYERS) { return; }
|
||||
|
||||
layers[layer].active = true;
|
||||
layers[layer].sticky = sticky;
|
||||
layers_active[layer] = true;
|
||||
layers_sticky[layer] = sticky;
|
||||
|
||||
if (layer > layers_top) {
|
||||
layers_top = layer;
|
||||
|
@ -140,8 +137,8 @@ void main_layers_disable(uint8_t layer) {
|
|||
// base layer stays always on
|
||||
if (layer >= KB_LAYERS || layer == 0) { return; }
|
||||
|
||||
layers[layer].active = false;
|
||||
layers[layer].sticky = eStickyNone;
|
||||
layers_active[layer] = false;
|
||||
layers_sticky[layer] = eStickyNone;
|
||||
|
||||
if (layer == layers_top) {
|
||||
layers_top = _highest_active_layer(1);
|
||||
|
|
Loading…
Reference in New Issue