Fix tap-hold processing for multiple hold actions #24002 #24021
+198
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR purpose is to fix the problem with processing multiple hold actions and one tap action when PERMISSIVE_HOLD is defined and TAPPING_TERM hasn't elapsed. When such conditions are met, keys not fired, contrary to the PERMISSIVE_HOLD decision mode and the firmware continues to wait for new actions in reset state of process_tapping SM. To trigger hold actions selection user have to tap amount of keys equal to holded keys. This PR fix this by adding deferring tap key entity that indicate that processing of hold actions must be continued till tap key. As side effect of this fix, bigger number of simultaneous hold actions now can be fired in PERMISSIVE_HOLD style decision: (WAITING_BUFFER_SIZE - 1) vs old ceiling(WAITING_BUFFER_SIZE/3).
This is just a draft and I totally not qualified enough for this so I will be happy if someone with experience take a look at the issue and make more consistent alternation in process_tapping if appropriate.
Types of Changes
Issues Fixed or Closed by This PR
Checklist