master
Stefan Dorn 2016-06-14 20:14:44 +01:00
parent a0289831c1
commit dbbd699115
4 changed files with 79 additions and 103 deletions

View File

@ -31,18 +31,18 @@ class Key
Functions = {
# down up
"basic" => [ "&kbfun_normal_press_release", ],
"media" => [ "&kbfun_mediakey_press_release", ],
"basic" => [ "&kbfun_normal_press_release", ],
"media" => [ "&kbfun_mediakey_press_release", ],
# down up
"mod" => [ "&kbfun_modifier_press_release", ],
"sticky_mod" => [ "&kbfun_modifier_sticky", ],
"mod" => [ "&kbfun_modifier_press_release", ],
"sticky_mod" => [ "&kbfun_modifier_sticky", ],
# down up
"layer" => [ "&kbfun_layer_enable", "&kbfun_layer_disable" ],
"sticky" => [ "&kbfun_layer_sticky", ],
"layer" => [ "&kbfun_layer_press_release", ],
"sticky" => [ "&kbfun_layer_sticky", ],
# down up
"shifted" => [ "&kbfun_shift_press_release", ],
"ctrled" => [ "&kbfun_control_press_release", ],
"capslock" => [ "&kbfun_capslock_press_release", ],
"shifted" => [ "&kbfun_shift_press_release", ],
"ctrled" => [ "&kbfun_control_press_release", ],
"capslock" => [ "&kbfun_capslock_press_release", ],
}
Keys = {

View File

@ -370,7 +370,7 @@ static const keyfunc PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS]
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_modifier_press_release,
@ -404,18 +404,18 @@ static const keyfunc PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS]
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_capslock_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_sticky,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_sticky),
KB_MATRIX_LAYER(
@ -453,7 +453,7 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_modifier_press_release,
@ -487,19 +487,19 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_shift_press_release,
(keyfunc) &kbfun_shift_press_release,
(keyfunc) &kbfun_capslock_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_enable),
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release),
KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
@ -536,7 +536,7 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_modifier_press_release,
@ -570,18 +570,18 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_capslock_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release),
KB_MATRIX_LAYER(
@ -619,7 +619,7 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_modifier_press_release,
@ -653,18 +653,18 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_capslock_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_enable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release),
};
static const keyfunc PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { KB_MATRIX_LAYER(
@ -702,7 +702,7 @@ static const keyfunc PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS]
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_modifier_press_release,
@ -736,18 +736,18 @@ static const keyfunc PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS]
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_capslock_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_sticky,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_sticky),
KB_MATRIX_LAYER(
@ -785,7 +785,7 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_modifier_press_release,
@ -819,19 +819,19 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_shift_press_release,
(keyfunc) &kbfun_shift_press_release,
(keyfunc) &kbfun_capslock_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_disable),
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release),
KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
@ -868,7 +868,7 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_modifier_press_release,
@ -902,18 +902,18 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_capslock_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release),
KB_MATRIX_LAYER(
@ -951,7 +951,7 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_modifier_press_release,
(keyfunc) &kbfun_modifier_press_release,
@ -985,17 +985,17 @@ KB_MATRIX_LAYER(
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_capslock_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_normal_press_release,
(keyfunc) &kbfun_layer_disable,
(keyfunc) &kbfun_layer_press_release,
(keyfunc) &kbfun_normal_press_release),
};

View File

@ -214,25 +214,8 @@ void layer_disable(layer l) {
}
}
// disable the highest active layer
void layer_disable_top() {
layer_disable(layers_top);
}
// return layer offset elements below the top
layer layer_peek(layer offset) {
return highest_active_layer(offset);
}
bool is_layer_enable(keyfunc f) {
if (f == &kbfun_layer_enable || f == &kbfun_layer_sticky) {
return true;
}
return false;
}
bool is_layer_disable(keyfunc f) {
if (f == &kbfun_layer_disable || f == &kbfun_layer_sticky) {
bool is_layer_keyfunc(keyfunc f) {
if (f == &kbfun_layer_press_release || f == &kbfun_layer_sticky) {
return true;
}
return false;
@ -245,7 +228,7 @@ void layer_enable_upto(layer max_layer) {
for (layer l=0; l <= KB_LAYERS; l++) {
void (*key_function)(void) = kb_keyfunc_press(l, current_row, current_col);
if (is_layer_enable(key_function)) {
if (is_layer_keyfunc(key_function)) {
layer enable_layer = (layer) kb_keycode(l, current_row, current_col);
if (enable_layer <= max_layer) {
layer_enable(enable_layer);
@ -361,25 +344,22 @@ void kbfun_modifier_press_release() {
_kbfun_modifier_press_release(current_is_pressed, current_keycode);
}
// enable layer
void kbfun_layer_enable() {
// layer key
void kbfun_layer_press_release() {
layer_sticky_done = true; // don't disable sticky mods!
layer l = (layer) current_keycode;
layer_enable_upto(l);
}
if (current_is_pressed) {
layer l = (layer) current_keycode;
layer_enable_upto(l);
} else {
// letting go off a key releases *all* layers on that key
for (layer l=0; l <= KB_LAYERS; l++) {
void (*key_function)(void) = kb_keyfunc_release(l, current_row, current_col);
// disable layer
void kbfun_layer_disable() {
layer_sticky_done = true; // don't disable sticky mods!
// letting go off a key releases *all* layers on that key
for (layer l=0; l <= KB_LAYERS; l++) {
void (*key_function)(void) = kb_keyfunc_release(l, current_row, current_col);
if (is_layer_disable(key_function)) {
layer disable_layer = (layer) kb_keycode(l, current_row, current_col);
layer_disable(disable_layer);
if (is_layer_keyfunc(key_function)) {
layer disable_layer = (layer) kb_keycode(l, current_row, current_col);
layer_disable(disable_layer);
}
}
}
}

View File

@ -19,13 +19,9 @@ void _kbfun_normal_press_release(bool press,keycode key);
keyfunc kb_keyfunc_release(layer l,u8 row,u8 col);
keyfunc kb_keyfunc_press(layer l,u8 row,u8 col);
void layer_enable_upto(layer max_layer);
void kbfun_layer_disable();
bool is_layer_disable(keyfunc f);
void kbfun_layer_sticky();
void kbfun_layer_enable();
bool is_layer_enable(keyfunc f);
layer layer_peek(layer offset);
void layer_disable_top();
void kbfun_layer_press_release();
bool is_layer_keyfunc(keyfunc f);
void layer_enable(layer l);
layer highest_active_layer(layer offset);
void layer_disable(layer l);