It is very clear from the documentation what set secondaryRole.advanced.triggerByRelease 1 does but I am not sure I completely understand the difference when triggerByRelease is disabled. I tried both and couldn’t tell the difference. Should there be any noticeable difference in behavior?
After several hours of playing with the following test, I found that triggerByRelease 0 is a bit more reliable for me but I still have no idea what exactly changes. =)
Also, how does secondaryRole.advanced.safetyMargin affects the resolution behavior when triggerByRelease is disabled? In the docs, it is explained how it affects the triggerByRelease 1 case but I couldn’t understand its effect on the other option. It definitely works but in what way?
Another question is about the way to assign Secondary Role. Is the GUI way much different from the Smart macro one? Which one should I prefer performance-wise?
Additionally I have noticed doubletapTime 100 does not do anything no matter how quickly I double-tap. It starts to work only when I set it to 200 and above. Is it normal or a bug?
1 Like
Also, how does secondaryRole.advanced.safetyMargin affects the resolution behavior when triggerByRelease is disabled? In the docs, it is explained how it affects the triggerByRelease 1 case but I couldn’t understand its effect on the other option. It definitely works but in what way?
There is little or no effect. It may just extend the timeout.
Another question is about the way to assign Secondary Role. Is the GUI way much different from the Smart macro one? Which one should I prefer performance-wise?
Performace-wise you should prefer GUI.
Except for that, the only difference is that macro command is more versatile.
Additionally I have noticed doubletapTime 100 does not do anything no matter how quickly I double-tap. It starts to work only when I set it to 200 and above. Is it normal or a bug?
Can you really doubletap in less than 100ms?
Registering a doubletap within less than 100ms is indeed not possible, because UHK’s debouncing period is set to 50ms. It means that after a key state changes, it is prevented from further changes for 50ms.
I.e., 50ms on press + another 50ms on release = 100ms.
1 Like
It is very clear from the documentation what set secondaryRole.advanced.triggerByRelease 1 does but I am not sure I completely understand the difference when triggerByRelease is disabled. I tried both and couldn’t tell the difference. Should there be any noticeable difference in behavior?
When triggerByRelease is disabled, the only way to trigger the secondary role is by timeout.
Whether there should be a noticeable difference depends on your setup. With a long timeout there definitely should be a noticeable difference.
1 Like
I really thought I could because I set QUICK_TAP_TERM to 100ms for a QMK keyboard I’ve been playing with and it worked on the verge of my ability to double-tap quickly. But I guess they just count somewhat differently.
Thank you for the explanation. Indeed, setting advanced.timeout 2000 really showed the difference clearly.