sticky cleanup
parent
270feb968a
commit
2498833488
13
src/main.c
13
src/main.c
|
@ -229,7 +229,7 @@ void layer_enable_upto(layer max_layer) {
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
void init_sticky() {
|
void init_sticky() {
|
||||||
for (layer l=0; l < KB_LAYERS; l++) {
|
for (layer l=1; l < KB_LAYERS; l++) {
|
||||||
layer_sticky[l] = false;
|
layer_sticky[l] = false;
|
||||||
}
|
}
|
||||||
for (keycode mod=0; mod < MODIFIERS; mod++) {
|
for (keycode mod=0; mod < MODIFIERS; mod++) {
|
||||||
|
@ -240,16 +240,14 @@ void init_sticky() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void sticky_disable() {
|
void sticky_disable() {
|
||||||
for (layer l = 1; l < KB_LAYERS; l++) {
|
for (layer l=1; l < KB_LAYERS; l++) {
|
||||||
if (layer_sticky[l]) {
|
if (layer_sticky[l]) {
|
||||||
layer_disable(l);
|
layer_disable(l);
|
||||||
layer_sticky[l] = false;
|
layer_sticky[l] = false;
|
||||||
debug_printf("sticky %d up\n", l);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (modifier_sticky) {
|
if (modifier_sticky) {
|
||||||
debug_printf("mod %d up\n", modifier_sticky);
|
|
||||||
keyboard_modifier_keys &= ~modifier_sticky;
|
keyboard_modifier_keys &= ~modifier_sticky;
|
||||||
modifier_sticky = 0;
|
modifier_sticky = 0;
|
||||||
}
|
}
|
||||||
|
@ -374,6 +372,7 @@ void kbfun_layer_disable() {
|
||||||
|
|
||||||
// letting go off a key releases *all* layers on that key
|
// letting go off a key releases *all* layers on that key
|
||||||
for (layer l=0; l <= KB_LAYERS; l++) {
|
for (layer l=0; l <= KB_LAYERS; l++) {
|
||||||
|
// FIXME this is broken with sticky
|
||||||
void (*key_function)(void) = kb_keyfunc_release(l, current_row, current_col);
|
void (*key_function)(void) = kb_keyfunc_release(l, current_row, current_col);
|
||||||
|
|
||||||
if (is_layer_disable(key_function)) {
|
if (is_layer_disable(key_function)) {
|
||||||
|
@ -390,16 +389,13 @@ void kbfun_layer_sticky() {
|
||||||
if (current_is_pressed) {
|
if (current_is_pressed) {
|
||||||
layer_enable(l);
|
layer_enable(l);
|
||||||
sticky_done = false;
|
sticky_done = false;
|
||||||
debug_printf("sticky %d down\n", l);
|
|
||||||
} else {
|
} else {
|
||||||
if (sticky_done) {
|
if (sticky_done) {
|
||||||
layer_disable(l);
|
layer_disable(l);
|
||||||
debug_printf("sticky %d up and done\n", l);
|
|
||||||
} else {
|
} else {
|
||||||
layer_sticky[l] = true;
|
layer_sticky[l] = true;
|
||||||
sticky_on = true;
|
sticky_on = true;
|
||||||
sticky_done = false;
|
sticky_done = false;
|
||||||
debug_printf("sticky %d up, but still on\n", l);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -413,16 +409,13 @@ void kbfun_modifier_sticky() {
|
||||||
if (current_is_pressed) {
|
if (current_is_pressed) {
|
||||||
kbfun_modifier_press_release();
|
kbfun_modifier_press_release();
|
||||||
sticky_done = false;
|
sticky_done = false;
|
||||||
debug_printf("mod %d down\n", mod);
|
|
||||||
} else {
|
} else {
|
||||||
if (sticky_done) {
|
if (sticky_done) {
|
||||||
kbfun_modifier_press_release();
|
kbfun_modifier_press_release();
|
||||||
debug_printf("mod %d up and done\n", mod);
|
|
||||||
} else {
|
} else {
|
||||||
modifier_sticky |= 1<<mod;
|
modifier_sticky |= 1<<mod;
|
||||||
sticky_on = true;
|
sticky_on = true;
|
||||||
sticky_done = false;
|
sticky_done = false;
|
||||||
debug_printf("mod %d up, but still on\n", mod);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue