Ad hoc fix of command API

This commit is contained in:
tmk 2014-07-01 04:02:10 +09:00
parent 4069776c02
commit 47bc3016d3
2 changed files with 27 additions and 11 deletions

View file

@ -63,19 +63,22 @@ static uint8_t numkey2num(uint8_t code);
static void switch_default_layer(uint8_t layer); static void switch_default_layer(uint8_t layer);
typedef enum { ONESHOT, CONSOLE, MOUSEKEY } cmdstate_t; command_state_t command_state = ONESHOT;
static cmdstate_t state = ONESHOT;
bool command_proc(uint8_t code) bool command_proc(uint8_t code)
{ {
switch (state) { switch (command_state) {
case ONESHOT: case ONESHOT:
if (!IS_COMMAND()) if (!IS_COMMAND())
return false; return false;
return (command_extra(code) || command_common(code)); return (command_extra(code) || command_common(code));
break;
case CONSOLE: 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; break;
#ifdef MOUSEKEY_ENABLE #ifdef MOUSEKEY_ENABLE
case MOUSEKEY: case MOUSEKEY:
@ -83,12 +86,13 @@ bool command_proc(uint8_t code)
break; break;
#endif #endif
default: default:
state = ONESHOT; command_state = ONESHOT;
return false; return false;
} }
return true; return true;
} }
/* TODO: Refactoring is needed. */
/* This allows to define extra commands. return false when not processed. */ /* 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) __attribute__ ((weak));
bool command_extra(uint8_t code) bool command_extra(uint8_t code)
@ -96,6 +100,12 @@ bool command_extra(uint8_t code)
return false; return false;
} }
bool command_console_extra(uint8_t code) __attribute__ ((weak));
bool command_console_extra(uint8_t code)
{
return false;
}
/*********************************************************** /***********************************************************
* Command common * Command common
@ -203,7 +213,7 @@ static bool command_common(uint8_t code)
command_console_help(); command_console_help();
print("\nEnter Console Mode\n"); print("\nEnter Console Mode\n");
print("C> "); print("C> ");
state = CONSOLE; command_state = CONSOLE;
break; break;
case KC_PAUSE: case KC_PAUSE:
clear_keyboard(); clear_keyboard();
@ -388,14 +398,14 @@ static bool command_console(uint8_t code)
case KC_Q: case KC_Q:
case KC_ESC: case KC_ESC:
print("\nQuit Console Mode\n"); print("\nQuit Console Mode\n");
state = ONESHOT; command_state = ONESHOT;
return false; return false;
#ifdef MOUSEKEY_ENABLE #ifdef MOUSEKEY_ENABLE
case KC_M: case KC_M:
mousekey_console_help(); mousekey_console_help();
print("\nEnter Mousekey Console\n"); print("\nEnter Mousekey Console\n");
print("M0>"); print("M0>");
state = MOUSEKEY; command_state = MOUSEKEY;
return true; return true;
#endif #endif
default: default:
@ -555,7 +565,7 @@ static bool mousekey_console(uint8_t code)
mousekey_param = 0; mousekey_param = 0;
print("\nQuit Mousekey Console\n"); print("\nQuit Mousekey Console\n");
print("C> "); print("C> ");
state = CONSOLE; command_state = CONSOLE;
return false; return false;
case KC_P: case KC_P:
mousekey_param_print(); mousekey_param_print();

View file

@ -18,10 +18,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef COMMAND_H #ifndef COMMAND_H
#define COMMAND #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 #ifdef COMMAND_ENABLE
bool command_proc(uint8_t code); 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 #else
#define command_proc(code) false #define command_proc(code) false
#endif #endif