aboutsummaryrefslogtreecommitdiff
path: root/common/keyboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/keyboard.c')
-rw-r--r--common/keyboard.c38
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
35typedef enum keykind { 39typedef 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)
151static void register_code(uint8_t code) 155static 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
339static inline void process_key(keyevent_t event) 343static 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 }