aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2013-09-19 22:16:55 +0900
committertmk <nobody@nowhere>2013-09-19 22:16:55 +0900
commit58ca7b904b4410416f6b7edf1051ec58f6cdb6c4 (patch)
treea3a89fe51e3b8a8c897060e97b6c56bcd67b1e0e
parent9f29fa6bf39ff9b703de132b7f8b8a794b078471 (diff)
parent4d0b3aace09e26b92ae207f94cf889878e709b35 (diff)
downloadqmk_firmware-58ca7b904b4410416f6b7edf1051ec58f6cdb6c4.tar.gz
qmk_firmware-58ca7b904b4410416f6b7edf1051ec58f6cdb6c4.zip
Merge branch 'tapping_fix60'
-rw-r--r--common/action_tapping.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/common/action_tapping.c b/common/action_tapping.c
index a6292535e..542949ddd 100644
--- a/common/action_tapping.c
+++ b/common/action_tapping.c
@@ -27,9 +27,7 @@ static uint8_t waiting_buffer_tail = 0;
27static bool process_tapping(keyrecord_t *record); 27static bool process_tapping(keyrecord_t *record);
28static bool waiting_buffer_enq(keyrecord_t record); 28static bool waiting_buffer_enq(keyrecord_t record);
29static void waiting_buffer_clear(void); 29static void waiting_buffer_clear(void);
30#if TAPPING_TERM >= 500
31static bool waiting_buffer_typed(keyevent_t event); 30static bool waiting_buffer_typed(keyevent_t event);
32#endif
33static bool waiting_buffer_has_anykey_pressed(void); 31static bool waiting_buffer_has_anykey_pressed(void);
34static void waiting_buffer_scan_tap(void); 32static void waiting_buffer_scan_tap(void);
35static void debug_tapping_key(void); 33static void debug_tapping_key(void);
@@ -109,6 +107,13 @@ bool process_tapping(keyrecord_t *keyp)
109 return false; 107 return false;
110 } 108 }
111#endif 109#endif
110 /* release a key pressed before tapping */
111 else if (!event.pressed && !waiting_buffer_typed(event)) {
112 /* Unexpected repeating occurs unless this event is processed immedately. */
113 debug("Tapping: release a key pressed before tapping\n");
114 process_action(keyp);
115 return true;
116 }
112 else { 117 else {
113 // set interrupted flag when other key preesed during tapping 118 // set interrupted flag when other key preesed during tapping
114 if (event.pressed) { 119 if (event.pressed) {
@@ -289,7 +294,6 @@ void waiting_buffer_clear(void)
289 waiting_buffer_tail = 0; 294 waiting_buffer_tail = 0;
290} 295}
291 296
292#if TAPPING_TERM >= 500
293bool waiting_buffer_typed(keyevent_t event) 297bool waiting_buffer_typed(keyevent_t event)
294{ 298{
295 for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) { 299 for (uint8_t i = waiting_buffer_tail; i != waiting_buffer_head; i = (i + 1) % WAITING_BUFFER_SIZE) {
@@ -299,7 +303,6 @@ bool waiting_buffer_typed(keyevent_t event)
299 } 303 }
300 return false; 304 return false;
301} 305}
302#endif
303 306
304bool waiting_buffer_has_anykey_pressed(void) 307bool waiting_buffer_has_anykey_pressed(void)
305{ 308{