diff options
author | tmk <nobody@nowhere> | 2013-02-15 15:34:46 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2013-02-15 15:34:46 +0900 |
commit | f8d289e66965f99469292370c3b9200a03254f8e (patch) | |
tree | 98b2502fd231d4916270b76632242a15bb27781d /common/command.c | |
parent | 7a31451a077a55e1ad97cf8b31a111c7cd311a4d (diff) | |
parent | 2b811352a1497e28b946a49f9f31dc15dbda420b (diff) |
Merge branch 'layer_stack'
Diffstat (limited to 'common/command.c')
-rw-r--r-- | common/command.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/common/command.c b/common/command.c index 7bb2a23f19..c5b9f0431c 100644 --- a/common/command.c +++ b/common/command.c @@ -27,6 +27,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "keyboard.h" #include "bootloader.h" #include "command.h" +#include "layer_stack.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; @@ -261,18 +263,16 @@ static bool command_common(uint8_t code) #endif break; #endif + case KC_ESC: + case KC_GRV: case KC_0: - case KC_F10: - clear_keyboard(); - switch_layer(0); + switch_default_layer(0); break; case KC_1 ... KC_9: - clear_keyboard(); - switch_layer((code - KC_1) + 1); + switch_default_layer((code - KC_1) + 1); break; - case KC_F1 ... KC_F9: - clear_keyboard(); - switch_layer((code - KC_F1) + 1); + case KC_F1 ... KC_F12: + switch_default_layer((code - KC_F1) + 1); break; default: print("?"); @@ -541,11 +541,14 @@ 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; - default_layer = layer; print("switch to "); print_val_hex8(layer); + + default_layer = layer; + current_layer = 0; /* 0 means default_layer */ + layer_stack_clear(); + clear_keyboard(); } |