Open jackbrad1ey opened 1 day ago
Yes, you're right. There are some issues on current implementation of tap_hold. But processing keypress only might not be enough(see #118).
RMK implements key scanning and processing quite different from qmk/zmk. I want to find a better default config that is good for home row mods. If you have any idea, please share to me! 😄
I've noticed there's a slight issue in the logic for the tap hold implementation. Specifically, relating to this section of code in the
process_key_action_tap_hold
function:Correct me if I'm wrong, but the
else
here can also be triggered by a key release event? What I've noticed is that if I'm typing fast, the tap of a tap hold key fails to trigger, this is because I press the tap hold key before releasing another key, so when I then release the other key it causes the code to go into thiselse
condition, and then when I release the tap hold key (expecting the tap action to occur) it doesn't do anything since the else triggered thehold
action.I'm not quite familiar enough with Rust to make a PR with a fix, but in my head it sounds like what we'd want to do is loop until we timeout or get a keypress event. If we get a key release event we should just process that action normally and then go back to waiting for a timeout or keypress.