Ver código fonte

Fix use of default_layer

tags/v1.9
tmk 11 anos atrás
pai
commit
f7a445e537
1 arquivos alterados com 20 adições e 12 exclusões
  1. 20
    12
      common/keyboard.c

+ 20
- 12
common/keyboard.c Ver arquivo

typedef enum { IDLE, DELAYING, WAITING, PRESSING } kbdstate_t; typedef enum { IDLE, DELAYING, WAITING, PRESSING } kbdstate_t;




uint8_t current_layer = 0;
#ifdef KEYMAP_DEFAULT_LAYER
uint8_t default_layer = KEYMAP_DEFAULT_LAYER;
uint8_t current_layer = KEYMAP_DEFAULT_LAYER;
#else
uint8_t default_layer = 0; uint8_t default_layer = 0;
uint8_t current_layer = 0;
#endif


/* keyboard internal states */ /* keyboard internal states */
static kbdstate_t kbdstate = IDLE; static kbdstate_t kbdstate = IDLE;
{ {
if (!IS_FN(code)) return; if (!IS_FN(code)) return;
fn_state_bits |= FN_BIT(code); fn_state_bits |= FN_BIT(code);
if (current_layer != keymap_fn_layer(FN_INDEX(code))) {
clear_keyboard_but_mods();

uint8_t new_layer = (fn_state_bits ? keymap_fn_layer(biton(fn_state_bits)) : default_layer);
if (current_layer != new_layer) {
debug("Layer Switch(on): "); debug_hex(current_layer); debug("Layer Switch(on): "); debug_hex(current_layer);
current_layer = keymap_fn_layer(FN_INDEX(code));
debug(" -> "); debug_hex(current_layer); debug("\n");
debug(" -> "); debug_hex(new_layer); debug("\n");

clear_keyboard_but_mods();
current_layer = new_layer;
} }
} }


{ {
if (!IS_FN(code)) return false; if (!IS_FN(code)) return false;
fn_state_bits &= ~FN_BIT(code); fn_state_bits &= ~FN_BIT(code);
if (current_layer != keymap_fn_layer(biton(fn_state_bits))) {
clear_keyboard_but_mods();

uint8_t new_layer = (fn_state_bits ? keymap_fn_layer(biton(fn_state_bits)) : default_layer);
if (current_layer != new_layer) {
debug("Layer Switch(off): "); debug_hex(current_layer); debug("Layer Switch(off): "); debug_hex(current_layer);
current_layer = keymap_fn_layer(biton(fn_state_bits));
debug(" -> "); debug_hex(current_layer); debug("\n");
debug(" -> "); debug_hex(new_layer); debug("\n");

clear_keyboard_but_mods();
current_layer = new_layer;
return true; return true;
} }
return false; return false;
is_matrix_on |= matrix_get_row(r); is_matrix_on |= matrix_get_row(r);
} }
if (!is_matrix_on) { if (!is_matrix_on) {
debug("FAIL SAFE: clear all keys.\n");
debug("FAIL SAFE: clear all keys(default layer).\n");
clear_keyboard(); clear_keyboard();
current_layer = default_layer;
} }
} }

Carregando…
Cancelar
Salvar