I’ve been using resolveSecondary on my home row for a while, and it’s been great. Rollover works fine. I use Colemak, so “A,R,S,T” on the left hand - especially “RST” is a common set of letters.
I saw that it is now deprecated, so I’ve tried replacing it with ifSecondary with advancedStrategy. But rollover doesn’t work as well. The “T” in “RST” goes to the secondary action too often. So perhaps someone can help me.
To test this, I created a macros for each. For resolveSecondary, I have this:
resolveSecondary 200 100 primary secondary
primary:
write primary,
clearStatus
statsRuntime
printStatus
break
secondary:
write secondary,
clearStatus
statsRuntime
printStatus
break
And then for the ifSecondary, I have this in the $onInit:
set secondaryRole.advanced.timeout 200
set secondaryRole.advanced.timeoutAction secondary
and this is the macro:
ifSecondary advancedStrategy goTo secondaryaction
primaryaction:
write primary,
clearStatus
statsRuntime
printStatus
break
secondaryaction:
write secondary,
clearStatus
statsRuntime
printStatus
break
And I get this for resolveSecondary:
primary,macro runtime is: 160 ms
primary,macro runtime is: 16 ms
primary,macro runtime is: 17 ms
But this for ifSecondary:
primary,macro runtime is: 176 ms
primary,macro runtime is: 17 ms
secondary,macro runtime is: 17 ms
I’m not actually sure if the timing is helpful (difficult to know when that starts), but it shows that I am pressing them the same, but getting secondary with ifSecondary, when I would expect the primary.
I’ve tried set secondaryRole.advanced.triggerByRelease 1
with various safetyMargin values but it doesn’t seem to help.
Am I doing something wrong?