I must admit that I fail to evaluate if any of the issues that popup during my search is related to this problem. If so I'm sorry for handing this one in. :pray:
Describe the Bug
I use a custom implementation of the MT() functionality with Tap Dance. Therefore I followed the documentation for Tap Dance examples. Here is my version of it. And here is the macro I use then in my keymap.
The idea is that I can now use MT() as regular with the PERMISSIVE_HOLD option enabled and the custom Tap Dance ACTION_TAP_DANCE_MT() without PERMISSIVE_HOLD enabled. The latter is used for modifiers I have placed on regular alpha chars on the home row (ctrl and alt). Having PERMISSIVE_HOLD enabled here is a night mare. But still I don't want to miss this feature for the symbol or number layer.
Anyways the problem is now that if I combine two of such keys it makes the modifier stuck. Let's elaborate that. I have ACTION_TAP_DANCE_MT(KC_F, KC_LCTL) in my keymap. This is like MT(KC_F, KC_LCTL) just with the custom Tap Dance and without permissive hold. Furthermore I mirrored that to the over hand with ACTION_TAP_DANCE_MT(KC_J, KC_RCTL). Same as before. Both on their own work perfect. E.g. holding the j key to get RCTRL modifier (wait for the hold time) and then type c while holding. No permissive holding works here. The regular MT()s in my layout still work with permissive hold. Perfect. As intended.
But if I want to type ctrl-j (as used in Vim for example), the LCTRL modifier does not get unset when releasing the f key from its hold. In fact the reset hook function of the first Tap Dance key doesn't get executed. Note here that this combo combines the Tap Dance hold-case of the f key with the Tap Dance tap-case of the j key. The reset hook of the j Tap Dance gets executed. From the QMK core code it looks to me like the state of the first Tap Dance key get lost, when another Tap Dance starts.
This problem only resolves when I hold the first Tap Dance key (f in the example) again to trigger the reset function at the end. This is heavily annoying. And even I have build up already some kind of muscle memory for this and added backlight for these modifiers (to recognize a stuck modifier), I would love to solve this problem. After all I would also appreciate to have an option to set permissive hold per key, as possible for the timeout.
Thanks for any kind of help! :smiley:
System Information
Keyboard: Ergodox EZ
Operating system: ArchLinux
AVR GCC version: avr-gcc (GCC) 10.1.0
ARM GCC version: arm-none-eabi-gcc (Arch Repository) 10.1.0
I must admit that I fail to evaluate if any of the issues that popup during my search is related to this problem. If so I'm sorry for handing this one in. :pray:
Describe the Bug
I use a custom implementation of the
MT()
functionality with Tap Dance. Therefore I followed the documentation for Tap Dance examples. Here is my version of it. And here is the macro I use then in my keymap. The idea is that I can now useMT()
as regular with thePERMISSIVE_HOLD
option enabled and the custom Tap DanceACTION_TAP_DANCE_MT()
withoutPERMISSIVE_HOLD
enabled. The latter is used for modifiers I have placed on regular alpha chars on the home row (ctrl
andalt
). HavingPERMISSIVE_HOLD
enabled here is a night mare. But still I don't want to miss this feature for the symbol or number layer.Anyways the problem is now that if I combine two of such keys it makes the modifier stuck. Let's elaborate that. I have
ACTION_TAP_DANCE_MT(KC_F, KC_LCTL)
in my keymap. This is likeMT(KC_F, KC_LCTL)
just with the custom Tap Dance and without permissive hold. Furthermore I mirrored that to the over hand withACTION_TAP_DANCE_MT(KC_J, KC_RCTL)
. Same as before. Both on their own work perfect. E.g. holding thej
key to getRCTRL
modifier (wait for the hold time) and then typec
while holding. No permissive holding works here. The regularMT()
s in my layout still work with permissive hold. Perfect. As intended. But if I want to typectrl-j
(as used in Vim for example), theLCTRL
modifier does not get unset when releasing thef
key from its hold. In fact the reset hook function of the first Tap Dance key doesn't get executed. Note here that this combo combines the Tap Dance hold-case of thef
key with the Tap Dance tap-case of thej
key. The reset hook of thej
Tap Dance gets executed. From the QMK core code it looks to me like the state of the first Tap Dance key get lost, when another Tap Dance starts. This problem only resolves when I hold the first Tap Dance key (f
in the example) again to trigger the reset function at the end. This is heavily annoying. And even I have build up already some kind of muscle memory for this and added backlight for these modifiers (to recognize a stuck modifier), I would love to solve this problem. After all I would also appreciate to have an option to set permissive hold per key, as possible for the timeout.Thanks for any kind of help! :smiley:
System Information
avr-gcc (GCC) 10.1.0
arm-none-eabi-gcc (Arch Repository) 10.1.0
0.9.46