X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=common%2Fcommand.c;h=2d01c95e6a9bca5a1cf683f77873a77efc47083a;hb=e324fa29187dff7868d9d7fd378e0e46d77107a5;hp=8ca16b91029adddf9df3ba6bc63d98f8febef321;hpb=1e3e41a2c9ed8b2f7d44be0aed5d96ed557fa13d;p=max%2Ftmk_keyboard.git diff --git a/common/command.c b/common/command.c index 8ca16b91..2d01c95e 100644 --- a/common/command.c +++ b/common/command.c @@ -26,7 +26,9 @@ along with this program. If not, see . #include "timer.h" #include "keyboard.h" #include "bootloader.h" +#include "layer_switch.h" #include "command.h" + #ifdef MOUSEKEY_ENABLE #include "mousekey.h" #endif @@ -53,7 +55,7 @@ static void mousekey_console_help(void); #endif static uint8_t numkey2num(uint8_t code); -static void switch_layer(uint8_t layer); +static void switch_default_layer(uint8_t layer); typedef enum { ONESHOT, CONSOLE, MOUSEKEY } cmdstate_t; @@ -234,6 +236,7 @@ static bool command_common(uint8_t code) break; #ifdef NKRO_ENABLE case KC_N: + clear_keyboard(); //Prevents stuck keys. keyboard_nkro = !keyboard_nkro; if (keyboard_nkro) print("NKRO: enabled\n"); @@ -260,25 +263,16 @@ static bool command_common(uint8_t code) #endif break; #endif + case KC_ESC: + case KC_GRV: case KC_0: - case KC_F10: - switch_layer(0); - break; - case KC_1: - case KC_F1: - switch_layer(1); + switch_default_layer(0); break; - case KC_2: - case KC_F2: - switch_layer(2); - break; - case KC_3: - case KC_F3: - switch_layer(3); + case KC_1 ... KC_9: + switch_default_layer((code - KC_1) + 1); break; - case KC_4: - case KC_F4: - switch_layer(4); + case KC_F1 ... KC_F12: + switch_default_layer((code - KC_F1) + 1); break; default: print("?"); @@ -547,11 +541,11 @@ static uint8_t numkey2num(uint8_t code) return 0; } -static void switch_layer(uint8_t layer) +static void switch_default_layer(uint8_t layer) { - print_val_hex8(current_layer); - print_val_hex8(default_layer); - current_layer = layer; + // TODO check existence of layer or whether it can be used as default layer + print("switch_default_layer: "); print_dec(default_layer); print(" to "); print_dec(layer); default_layer = layer; - print("switch to "); print_val_hex8(layer); + layer_switch_clear(); + clear_keyboard(); }