I don’t feel strongly either way.
It makes sense for that particular case, but you won’t be able to get any kind of autorepeat for that key then, will you?
I think this should be user-controllable with ifDoubletap or in a similar way. I may want it only on some keys but not on others, etc.
Yes, in the absence of additional keys it behaves in the same way as before, only with a delay. It just does not start the primary hold before the timeout.
I don’t think there’s a reason to have it configurable so long as we agree that the reason to have double-tap to primary is to allow a primary key hold for the purpose of auto-repeat when the timeout action is secondary.
That is generally not going to be a time-sensitive affair. Double-tap without hold is still just a double-tap primary except the second tap triggers on release rather than on press. Doubletap-to-hold just triggers primary on the hold Timeout later, and allows a secondary role key to still be used as the secondary role immediately after a primary activation.
I also think that behavior would make any Space-Shifters out there happy.
Another novel solution to the problem of holding primary would be to have a macro oneshot command to trigger the next key, if secondary role, as primary (or secondary for that matter). That feature, along with an $onKeyPress trigger macro to run on any key press before processing the key could also solve the “Resolution override” request. I need to think on this a bit.
Ah, I didn’t realise that was the behaviour you were going for. That makes sense.
In the examples below, “tap” means press/release the key in less than secondary timeout.
“hold” means press and hold key for longer than secondary timeout. Key A is configured to type a as primary, and hold mod on secondary. Key B is configured to type b when typed without modifier, and B when typed with modifier mod held.
Let me check if I understand you correctly:
- tap A => output a
- tap B => output b
- tap A, tap A => output aa
- hold A, wait, release A => output mod, wait, release mod
- hold A, wait, tap B, release A => output mod, wait, B, release mod
- press A, tap B, release A => output mod, B, release mod
- tap A, hold A, wait => output a, wait, output aaaaaaa… (autorepeat until A is released)
- tap A, press A, tap B, release A => output a, output mod, B, release mod
- tap A, press A, tap B, wait, tap B, wait, hold B, release B, release A => output a, output mod, B, wait, B, wait, BBBBBBBB… (autorepeat until release B), release mod
This would be an improvement from current behaviour for cases 8 and 9.
That is correct. 7 has a longer delay until autorepeat, and 8 and 9 become possible compared to current behavior.
Nice. I’m in! ![]()
I know I’ve gone pretty quiet on this pretty suddenly. I do have a bunch of small features I want to commit, but as a surprise to noone, I work as a software developer, and I want to make sure that my employer will not take offense from me contributing to another company’s codebase. I do not believe that they will, but this is one case where I wold rather ask permission than beg for forgiveness. The company is large enough to have Procedures™ though, and right now it’s stuck on someone who has been out of office for a while. I hope it will get sorted out next week.
@Firngrod any updates?
I don’t want to press you; just don’t want it to get forgotten, as I am excited about bringing that code into upstream for everyone’s benefit
.
It’s chugging through the system. I’ve talked to my manager about it, and his opinion is the same as mine, that there will be no issue whatsoever, but now that I’ve raised the issue, I kinda have to see it through.
It’s currently in 2nd review, however far that is from done.
Thanks for the update @Firngrod. I’m looking forward to seeing it and I really appreciate your comments.
It has finally gone through. I’ve signed a thing (Well, I clicked the “Okay” or “Accept” button or whatever it was called. Pretty anticlimactic.) and promised to not tell anyone what I’m doing at work. Also, if UGL moves into software services as a primary product, especially in the manufacturing or building industry, I may have to renegotiate my allowance to contribute to your codebases. Please notify me if you go that route as I may then be in breach of my Terms of Employment.
I’ll be starting the process of rebasing, getting write access to the repo and all of that soon.
I’ve made a PR with the CLA signature, and I’ve rebased my changes onto the main branch. I will be running the changes from my main branch for a few days at least to make sure there are no issues, but there have been no issues that I have noticed running the changes for these two months from the older master.
That’s really cool @Firngrod . You have given us a good surprise. I’m looking forward to seeing it working!
@firngrod I look forward to giving your code a try once it’s on the main branch and included in a build.
I look forward to being very confused
.
@kareltucek Do you have preferences on whether you want distinct features in single branches or just a big branch with the lot?
Also, do I push branches to the main repo or do I make PRs from my fork?
Distinct PRs would be nice, but I guess also laborous. That said, one big PR is fine.
Please open the PR/s from your fork.
Finally got around to doing them. I’ve opened two. I have a third, but it mixes with one of the others in a way that it’ll be easier to do after the others have been merged.