getreuer / qmk-keymap

My keymap & reusable QMK gems
Apache License 2.0
301 stars 45 forks source link

[Bug] Issues with newest version of QMK, Achordion and combos #38

Closed jweickm closed 1 month ago

jweickm commented 1 year ago

Background

The newest versions of QMK introduced a number of breaking changes. Most notably:

I have been happily using Achordion with homerow mods on my Planck/Rev6 for a long time now. After updating to the newest version of QMK, I was prompted to remove the line #define IGNORE_MOD_TAP_INTERRUPT from my config.h, since it was deprecated.

Bug description

I expect pressing and holding LCTL_T(KC_T) and then tapping KC_H + KC_COMM to trigger KC_LCTL + KC_ENT.

However, after flashing, I observe the following issue: Instead of outputting KC_LCTL + KC_ENT, it outputs KC_T followed by KC_ENT.

This issue happens with all combinations of homerow mods on the left hand side and combos on the right hand side of the keyboard. Oddly enough, the same is not true for the opposite. I suspect that it has something to do with the newest changes to IGNORE_MOD_TAP_INTERRUPT, but of course it could also be something completely different.

Information

Do the keys involved use any of the following features?

getreuer commented 1 month ago

@jweickm, apologies for the long delay!

This bug appears to be the same as bug #50. This should be fixed by 15146c388afd6980d752c2fa8409a19bb46383cc. Please git pull or grab the latest copy of features/achordion.c and see whether that fixes it.

In 2022, QMK changed how combo events are represented and added an IS_KEYEVENT API. Achordion added a backwards compatibility check for the existence of this API, but this was improperly implemented and was unconditionally using the pre-2022 logic. Now that it's 2024, the fix is to dump this busted backwards compatibility check and simply use IS_KEYEVENT directly.