Fix Tapping: release of a key pressed before tap
- immediately process release event of a key pressed before tapping
This commit is contained in:
		@@ -27,9 +27,7 @@ static uint8_t waiting_buffer_tail = 0;
 | 
			
		||||
static bool process_tapping(keyrecord_t *record);
 | 
			
		||||
static bool waiting_buffer_enq(keyrecord_t record);
 | 
			
		||||
static void waiting_buffer_clear(void);
 | 
			
		||||
#if TAPPING_TERM >= 500
 | 
			
		||||
static bool waiting_buffer_typed(keyevent_t event);
 | 
			
		||||
#endif
 | 
			
		||||
static bool waiting_buffer_has_anykey_pressed(void);
 | 
			
		||||
static void waiting_buffer_scan_tap(void);
 | 
			
		||||
static void debug_tapping_key(void);
 | 
			
		||||
@@ -109,6 +107,13 @@ bool process_tapping(keyrecord_t *keyp)
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
#endif
 | 
			
		||||
                /* release a key pressed before tapping */
 | 
			
		||||
                else if (!event.pressed && !waiting_buffer_typed(event)) {
 | 
			
		||||
                    /* Unexpected repeating occurs unless this event is processed immedately. */
 | 
			
		||||
                    debug("Tapping: release a key pressed before tapping\n");
 | 
			
		||||
                    process_action(keyp);
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    // set interrupted flag when other key preesed during tapping
 | 
			
		||||
                    if (event.pressed) {
 | 
			
		||||
@@ -289,7 +294,6 @@ void waiting_buffer_clear(void)
 | 
			
		||||
    waiting_buffer_tail = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if TAPPING_TERM >= 500
 | 
			
		||||
bool waiting_buffer_typed(keyevent_t event)
 | 
			
		||||
{
 | 
			
		||||
    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)
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
bool waiting_buffer_has_anykey_pressed(void)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user