diff options
Diffstat (limited to 'common/keyboard.c')
| -rw-r--r-- | common/keyboard.c | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/common/keyboard.c b/common/keyboard.c index c7ea2b840..d7ced430e 100644 --- a/common/keyboard.c +++ b/common/keyboard.c | |||
| @@ -30,6 +30,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 30 | #endif | 30 | #endif |
| 31 | 31 | ||
| 32 | 32 | ||
| 33 | #define Kdebug(s) do { if (debug_keyboard) debug(s); } while(0) | ||
| 34 | #define Kdebug_P(s) do { if (debug_keyboard) debug_P(s); } while(0) | ||
| 35 | #define Kdebug_hex(s) do { if (debug_keyboard) debug_hex(s); } while(0) | ||
| 36 | |||
| 33 | #define LAYER_DELAY 250 | 37 | #define LAYER_DELAY 250 |
| 34 | 38 | ||
| 35 | typedef enum keykind { | 39 | typedef enum keykind { |
| @@ -124,8 +128,8 @@ static void layer_switch_on(uint8_t code) | |||
| 124 | fn_state_bits |= FN_BIT(code); | 128 | fn_state_bits |= FN_BIT(code); |
| 125 | uint8_t new_layer = (fn_state_bits ? keymap_fn_layer(biton(fn_state_bits)) : default_layer); | 129 | uint8_t new_layer = (fn_state_bits ? keymap_fn_layer(biton(fn_state_bits)) : default_layer); |
| 126 | if (current_layer != new_layer) { | 130 | if (current_layer != new_layer) { |
| 127 | debug("Layer Switch(on): "); debug_hex(current_layer); | 131 | Kdebug("Layer Switch(on): "); Kdebug_hex(current_layer); |
| 128 | debug(" -> "); debug_hex(new_layer); debug("\n"); | 132 | Kdebug(" -> "); Kdebug_hex(new_layer); Kdebug("\n"); |
| 129 | 133 | ||
| 130 | clear_keyboard_but_mods(); | 134 | clear_keyboard_but_mods(); |
| 131 | current_layer = new_layer; | 135 | current_layer = new_layer; |
| @@ -138,8 +142,8 @@ static bool layer_switch_off(uint8_t code) | |||
| 138 | fn_state_bits &= ~FN_BIT(code); | 142 | fn_state_bits &= ~FN_BIT(code); |
| 139 | uint8_t new_layer = (fn_state_bits ? keymap_fn_layer(biton(fn_state_bits)) : default_layer); | 143 | uint8_t new_layer = (fn_state_bits ? keymap_fn_layer(biton(fn_state_bits)) : default_layer); |
| 140 | if (current_layer != new_layer) { | 144 | if (current_layer != new_layer) { |
| 141 | debug("Layer Switch(off): "); debug_hex(current_layer); | 145 | Kdebug("Layer Switch(off): "); Kdebug_hex(current_layer); |
| 142 | debug(" -> "); debug_hex(new_layer); debug("\n"); | 146 | Kdebug(" -> "); Kdebug_hex(new_layer); Kdebug("\n"); |
| 143 | 147 | ||
| 144 | clear_keyboard_but_mods(); | 148 | clear_keyboard_but_mods(); |
| 145 | current_layer = new_layer; | 149 | current_layer = new_layer; |
| @@ -151,9 +155,7 @@ static bool layer_switch_off(uint8_t code) | |||
| 151 | static void register_code(uint8_t code) | 155 | static void register_code(uint8_t code) |
| 152 | { | 156 | { |
| 153 | if IS_KEY(code) { | 157 | if IS_KEY(code) { |
| 154 | if (command_proc(code)) { | 158 | if (!command_proc(code)) { |
| 155 | //clear_keyboard(); | ||
| 156 | } else { | ||
| 157 | host_add_key(code); | 159 | host_add_key(code); |
| 158 | host_send_keyboard_report(); | 160 | host_send_keyboard_report(); |
| 159 | } | 161 | } |
| @@ -163,8 +165,10 @@ static void register_code(uint8_t code) | |||
| 163 | host_send_keyboard_report(); | 165 | host_send_keyboard_report(); |
| 164 | } | 166 | } |
| 165 | else if IS_FN(code) { | 167 | else if IS_FN(code) { |
| 166 | host_add_key(keymap_fn_keycode(FN_INDEX(code))); | 168 | if (!command_proc(keymap_fn_keycode(FN_INDEX(code)))) { |
| 167 | host_send_keyboard_report(); | 169 | host_add_key(keymap_fn_keycode(FN_INDEX(code))); |
| 170 | host_send_keyboard_report(); | ||
| 171 | } | ||
| 168 | } | 172 | } |
| 169 | else if IS_MOUSEKEY(code) { | 173 | else if IS_MOUSEKEY(code) { |
| 170 | #ifdef MOUSEKEY_ENABLE | 174 | #ifdef MOUSEKEY_ENABLE |
| @@ -331,9 +335,9 @@ static void unregister_code(uint8_t code) | |||
| 331 | * Ld: Switch back to default layer(*unregister* all keys but modifiers) | 335 | * Ld: Switch back to default layer(*unregister* all keys but modifiers) |
| 332 | */ | 336 | */ |
| 333 | #define NEXT(state) do { \ | 337 | #define NEXT(state) do { \ |
| 334 | debug("NEXT: "); debug_P(state_str(kbdstate)); \ | 338 | Kdebug("NEXT: "); Kdebug_P(state_str(kbdstate)); \ |
| 335 | kbdstate = state; \ | 339 | kbdstate = state; \ |
| 336 | debug(" -> "); debug_P(state_str(kbdstate)); debug("\n"); \ | 340 | Kdebug(" -> "); Kdebug_P(state_str(kbdstate)); Kdebug("\n"); \ |
| 337 | } while (0) | 341 | } while (0) |
| 338 | 342 | ||
| 339 | static inline void process_key(keyevent_t event) | 343 | static inline void process_key(keyevent_t event) |
| @@ -343,11 +347,11 @@ static inline void process_key(keyevent_t event) | |||
| 343 | 347 | ||
| 344 | uint8_t tmp_mods; | 348 | uint8_t tmp_mods; |
| 345 | 349 | ||
| 346 | debug("state: "); debug_P(state_str(kbdstate)); | 350 | Kdebug("state: "); Kdebug_P(state_str(kbdstate)); |
| 347 | debug(" kind: "); debug_hex(kind); | 351 | Kdebug(" kind: "); Kdebug_hex(kind); |
| 348 | debug(" code: "); debug_hex(code); | 352 | Kdebug(" code: "); Kdebug_hex(code); |
| 349 | if (event.pressed) { debug("d"); } else { debug("u"); } | 353 | if (event.pressed) { Kdebug("d"); } else { Kdebug("u"); } |
| 350 | debug("\n"); | 354 | Kdebug("\n"); |
| 351 | 355 | ||
| 352 | switch (kbdstate) { | 356 | switch (kbdstate) { |
| 353 | case IDLE: | 357 | case IDLE: |
| @@ -607,7 +611,7 @@ void keyboard_task(void) | |||
| 607 | is_matrix_on |= matrix_get_row(r); | 611 | is_matrix_on |= matrix_get_row(r); |
| 608 | } | 612 | } |
| 609 | if (!is_matrix_on) { | 613 | if (!is_matrix_on) { |
| 610 | debug("FAIL SAFE: clear all keys(default layer).\n"); | 614 | Kdebug("FAIL SAFE: clear all keys(default layer).\n"); |
| 611 | clear_keyboard(); | 615 | clear_keyboard(); |
| 612 | current_layer = default_layer; | 616 | current_layer = default_layer; |
| 613 | } | 617 | } |
