]> git.donarmstrong.com Git - tmk_firmware.git/blobdiff - common/command.c
Merge remote-tracking branch 'tmk/master' into cub_layout
[tmk_firmware.git] / common / command.c
index 2c65f0da78ca7117a442ad86a215858500255c4d..971ef7f0af4ba9f4ba1cbd5a80c4327818b424f9 100644 (file)
@@ -63,19 +63,22 @@ static uint8_t numkey2num(uint8_t code);
 static void switch_default_layer(uint8_t layer);
 
 
-typedef enum { ONESHOT, CONSOLE, MOUSEKEY } cmdstate_t;
-static cmdstate_t state = ONESHOT;
+command_state_t command_state = ONESHOT;
 
 
 bool command_proc(uint8_t code)
 {
-    switch (state) {
+    switch (command_state) {
         case ONESHOT:
             if (!IS_COMMAND())
                 return false;
             return (command_extra(code) || command_common(code));
+            break;
         case CONSOLE:
-            command_console(code);
+            if (IS_COMMAND())
+                return (command_extra(code) || command_common(code));
+            else
+                return (command_console_extra(code) || command_console(code));
             break;
 #ifdef MOUSEKEY_ENABLE
         case MOUSEKEY:
@@ -83,12 +86,13 @@ bool command_proc(uint8_t code)
             break;
 #endif
         default:
-            state = ONESHOT;
+            command_state = ONESHOT;
             return false;
     }
     return true;
 }
 
+/* TODO: Refactoring is needed. */
 /* This allows to define extra commands. return false when not processed. */
 bool command_extra(uint8_t code) __attribute__ ((weak));
 bool command_extra(uint8_t code)
@@ -96,6 +100,12 @@ bool command_extra(uint8_t code)
     return false;
 }
 
+bool command_console_extra(uint8_t code) __attribute__ ((weak));
+bool command_console_extra(uint8_t code)
+{
+    return false;
+}
+
 
 /***********************************************************
  * Command common
@@ -203,7 +213,7 @@ static bool command_common(uint8_t code)
             command_console_help();
             print("\nEnter Console Mode\n");
             print("C> ");
-            state = CONSOLE;
+            command_state = CONSOLE;
             break;
         case KC_PAUSE:
             clear_keyboard();
@@ -388,14 +398,14 @@ static bool command_console(uint8_t code)
         case KC_Q:
         case KC_ESC:
             print("\nQuit Console Mode\n");
-            state = ONESHOT;
+            command_state = ONESHOT;
             return false;
 #ifdef MOUSEKEY_ENABLE
         case KC_M:
             mousekey_console_help();
             print("\nEnter Mousekey Console\n");
             print("M0>");
-            state = MOUSEKEY;
+            command_state = MOUSEKEY;
             return true;
 #endif
         default:
@@ -555,7 +565,7 @@ static bool mousekey_console(uint8_t code)
             mousekey_param = 0;
             print("\nQuit Mousekey Console\n");
             print("C> ");
-            state = CONSOLE;
+            command_state = CONSOLE;
             return false;
         case KC_P:
             mousekey_param_print();