]> git.donarmstrong.com Git - tmk_firmware.git/commitdiff
Fix commands
authortmk <nobody@nowhere>
Tue, 16 Oct 2012 02:20:49 +0000 (11:20 +0900)
committertmk <nobody@nowhere>
Wed, 17 Oct 2012 06:55:37 +0000 (15:55 +0900)
common/command.c
common/command.h
common/debug.h
common/keyboard.c
common/matrix.h
common/mousekey.c

index 16c6cfb8896528009a26f9ec538323ea30ca5797..0ad06e65b846586c5a9b4ee0348e922309e6ec1b 100644 (file)
@@ -24,9 +24,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "util.h"
 #include "timer.h"
 #include "keyboard.h"
-#include "matrix.h"
 #include "bootloader.h"
 #include "command.h"
+#ifdef MOUSEKEY_ENABLE
+#include "mousekey.h"
+#endif
 
 #ifdef HOST_PJRC
 #   include "usb_keyboard.h"
@@ -40,44 +42,45 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #endif
 
 
-static uint8_t command_common(void);
+static bool command_common(uint8_t code);
 static void help(void);
 static void switch_layer(uint8_t layer);
+static void clear_keyboard(void);
 
 static bool last_print_enable;
 
-uint8_t command_proc(void)
-{
-    uint8_t processed = 0;
-    last_print_enable = print_enable;
 
+bool command_proc(uint8_t code)
+{
     if (!IS_COMMAND())
-        return 0;
+        return false;
 
+    last_print_enable = print_enable;
     print_enable = true;
-    if (command_extra() || command_common()) {
-        processed = 1;
+    if (command_extra(code) || command_common(code)) {
         _delay_ms(500);
+        return true;
     }
     print_enable = last_print_enable;
-    return processed;
+    return false;
 }
 
 /* This allows to define extra commands. return 0 when not processed. */
-uint8_t command_extra(void) __attribute__ ((weak));
-uint8_t command_extra(void)
+bool command_extra(uint8_t code) __attribute__ ((weak));
+bool command_extra(uint8_t code)
 {
-    return 0;
+    return false;
 }
 
 
-static uint8_t command_common(void)
+static bool command_common(uint8_t code)
 {
-    switch (host_get_first_key()) {
+    switch (code) {
         case KC_H:
             help();
             break;
-        case KC_B:
+        case KC_DEL:
+            clear_keyboard();
             print("jump to bootloader... ");
             _delay_ms(1000);
             bootloader_jump(); // not return
@@ -179,34 +182,34 @@ static uint8_t command_common(void)
 #endif
             break;
 #endif
-        case KC_BSPC:
-            matrix_init();
-            print("clear matrix\n");
-            break;
         case KC_0:
+        case KC_F10:
             switch_layer(0);
             break;
         case KC_1:
+        case KC_F1:
             switch_layer(1);
             break;
         case KC_2:
+        case KC_F2:
             switch_layer(2);
             break;
         case KC_3:
+        case KC_F3:
             switch_layer(3);
             break;
         case KC_4:
+        case KC_F4:
             switch_layer(4);
             break;
         default:
-            return 0;
+            return false;
     }
-    return 1;
+    return true;
 }
 
 static void help(void)
 {
-    print("b: jump to bootloader\n");
     print("d: toggle debug enable\n");
     print("x: toggle matrix debug\n");
     print("k: toggle keyboard debug\n");
@@ -215,16 +218,16 @@ static void help(void)
     print("v: print version\n");
     print("t: print timer count\n");
     print("s: print status\n");
+    print("ESC: power down/wake up\n");
+    print("0/F10: switch to Layer0 \n");
+    print("1/F1: switch to Layer1 \n");
+    print("2/F2: switch to Layer2 \n");
+    print("3/F3: switch to Layer3 \n");
+    print("4/F4: switch to Layer4 \n");
 #ifdef NKRO_ENABLE
     print("n: toggle NKRO\n");
 #endif
-    print("Backspace: clear matrix\n");
-    print("ESC: power down/wake up\n");
-    print("0: switch to Layer0 \n");
-    print("1: switch to Layer1 \n");
-    print("2: switch to Layer2 \n");
-    print("3: switch to Layer3 \n");
-    print("4: switch to Layer4 \n");
+    print("DEL: jump to bootloader\n");
 }
 
 static void switch_layer(uint8_t layer)
@@ -235,3 +238,17 @@ static void switch_layer(uint8_t layer)
     default_layer = layer;
     print("switch to Layer: "); phex(layer); print("\n");
 }
+
+static void clear_keyboard(void)
+{
+    host_clear_keys();
+    host_send_keyboard_report();
+
+    host_system_send(0);
+    host_consumer_send(0);
+
+#ifdef MOUSEKEY_ENABLE
+    mousekey_clear();
+    mousekey_send();
+#endif
+}
index 4888f5ee0bbcf5e4de53127e715cc57fc66ce665..dafd4d0f38c0e68de555b08e90fc60d8e7af5ae3 100644 (file)
@@ -18,8 +18,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef COMMAND_H
 #define COMMAND
 
-uint8_t command_proc(void);
+bool command_proc(uint8_t code);
 /* This allows to extend commands. Return 0 when command is not processed. */
-uint8_t command_extra(void);
+bool command_extra(uint8_t code);
 
 #endif
index 9cc8d882f376d8b954ce041ff715d65b09db2093..1d56e21f77e6a69011dccb57d45769a93b093631 100644 (file)
@@ -23,6 +23,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 #define debug(s)             if(debug_enable) print_P(PSTR(s))
+#define debug_P(s)           if(debug_enable) print_P(s)
+#define debug_S(s)           if(debug_enable) print_S(s)
 #define debug_hex(c)         if(debug_enable) phex(c)
 #define debug_hex16(i)       if(debug_enable) phex16(i)
 #define debug_bin(c)         if(debug_enable) pbin(c)
index be01e5540cd39001c3d87928b41f38ebd92b340b..c7ea2b840c4124ce437b027adf84c2f9ad9d7686 100644 (file)
@@ -28,9 +28,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifdef MOUSEKEY_ENABLE
 #include "mousekey.h"
 #endif
-#ifdef EXTRAKEY_ENABLE
-#include <util/delay.h>
-#endif
 
 
 #define LAYER_DELAY     250
@@ -154,8 +151,12 @@ static bool layer_switch_off(uint8_t code)
 static void register_code(uint8_t code)
 {
     if IS_KEY(code) {
-        host_add_key(code);
-        host_send_keyboard_report();
+        if (command_proc(code)) {
+            //clear_keyboard();
+        } else {
+            host_add_key(code);
+            host_send_keyboard_report();
+        }
     }
     else if IS_MOD(code) {
         host_add_mod_bit(MOD_BIT(code));
@@ -330,9 +331,9 @@ static void unregister_code(uint8_t code)
  *      Ld: Switch back to default layer(*unregister* all keys but modifiers)
  */
 #define NEXT(state)     do { \
-    debug("NEXT: "); print_P(state_str(kbdstate)); \
+    debug("NEXT: "); debug_P(state_str(kbdstate)); \
     kbdstate = state; \
-    debug(" -> "); print_P(state_str(kbdstate)); debug("\n"); \
+    debug(" -> "); debug_P(state_str(kbdstate)); debug("\n"); \
 } while (0)
 
 static inline void process_key(keyevent_t event)
@@ -342,7 +343,7 @@ static inline void process_key(keyevent_t event)
 
     uint8_t tmp_mods;
 
-    debug("state: "); print_P(state_str(kbdstate));
+    debug("state: "); debug_P(state_str(kbdstate));
     debug(" kind: "); debug_hex(kind);
     debug(" code: "); debug_hex(code);
     if (event.pressed) { debug("d"); } else { debug("u"); }
@@ -554,18 +555,11 @@ void keyboard_task(void)
     matrix_row_t matrix_change = 0;
 
     matrix_scan();
-    if (command_proc()) {
-        debug("COMMAND\n");
-        // TODO: COMMAND state?
-        clear_keyboard();
-        return;
-    }
-
     for (int r = 0; r < MATRIX_ROWS; r++) {
         matrix_row = matrix_get_row(r);
         matrix_change = matrix_row ^ matrix_prev[r];
         if (matrix_change) {
-            if (debug_matrix) matrix_print();
+            matrix_debug();
 
             for (int c = 0; c < MATRIX_COLS; c++) {
                 if (matrix_change & (1<<c)) {
@@ -618,7 +612,7 @@ void keyboard_task(void)
             current_layer = default_layer;
         }
     }
-    
+
     return;
 }
 
index b3332d5ff91ca3132cc5524a4b6485df568d5b0c..91231e765eba67b1c85bcae8ec8df25b65d90d02 100644 (file)
@@ -54,7 +54,7 @@ matrix_row_t  matrix_get_row(uint8_t row);
 /* count keys pressed */
 uint8_t matrix_key_count(void);
 /* print matrix for debug */
-void matrix_print(void);
+void matrix_debug(void);
 
 
 #endif
index 353890a16817fc50d93af8b0ddcdf3b1ed76c147..99e6d34ffe7f9768b93db5ad5cb92d3ad1efd57a 100644 (file)
@@ -103,7 +103,7 @@ static uint8_t wheel_unit(void)
     if (mousekey_repeat > mk_time_to_max) {
         unit = MOUSEKEY_WHEEL_DELTA * mk_wheel_max_speed;
     } else {
-        unit = (MOUSEKEY_WHEEL_DELTA * mk_wheel_max_speed * mousekey_repeat) / mk_time_to_max;
+        unit = (MOUSEKEY_WHEEL_DELTA * mk_wheel_max_speed * mousekey_repeat) / mk_wheel_time_to_max;
     }
     if (unit == 0) return 1;
     return (unit > MOUSEKEY_WHEEL_MAX ? MOUSEKEY_WHEEL_MAX : unit);