summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2014-06-30 21:02:10 +0200
committertmk <nobody@nowhere>2014-07-30 07:38:25 +0200
commit47bc3016d36cbfd83904fff5947acb6436dd37c3 (patch)
tree11aca2e377b5c6acb70508b471f9c3e0f90c0052 /common
parent4069776c022502f117b83b66c5a71700135acfbc (diff)
downloadqmk_firmware-47bc3016d36cbfd83904fff5947acb6436dd37c3.tar.gz
qmk_firmware-47bc3016d36cbfd83904fff5947acb6436dd37c3.tar.xz
Ad hoc fix of command API
Diffstat (limited to 'common')
-rw-r--r--common/command.c28
-rw-r--r--common/command.h10
2 files changed, 27 insertions, 11 deletions
diff --git a/common/command.c b/common/command.c
index 2c65f0da7..971ef7f0a 100644
--- a/common/command.c
+++ b/common/command.c
@@ -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();
diff --git a/common/command.h b/common/command.h
index be739fafe..b57a6c1ce 100644
--- a/common/command.h
+++ b/common/command.h
@@ -18,10 +18,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef COMMAND_H
#define COMMAND
+/* TODO: Refactoring */
+typedef enum { ONESHOT, CONSOLE, MOUSEKEY } command_state_t;
+extern command_state_t command_state;
+
+/* This allows to extend commands. Return false when command is not processed. */
+bool command_extra(uint8_t code);
+bool command_console_extra(uint8_t code);
+
#ifdef COMMAND_ENABLE
bool command_proc(uint8_t code);
-/* This allows to extend commands. Return 0 when command is not processed. */
-bool command_extra(uint8_t code);
#else
#define command_proc(code) false
#endif