Just using one key, how many assignments are currently possible with the UHK? I’m not talking about modifier keys or chords. Based on the documentation and through browsing the forums, I have gathered that there are only the following 3:
single tap
double tap
hold
From another post, I read that ‘double tap and hold’ is not possible. Are there any other single key combinations that I am missing?
I am triet utilizing the ifShift and ifNotShift and can’t get it working. Here is the script I am using
ifShift final tapKeySeq ( )
ifNotShift ifSecondary final tapKeySeq S-9 S-0 leftArrow
ifNotShift ifGesture timeoutIn 300 $thisKeyId final tapKey S-0
ifNotShift final tapKey S-9
Well, you understand that secondary role is not originally intended to facilitate hold behavior, and that you need to configure it in order to use it that way in the Typing behavior tab, right?
Take a look at this macro, which puts different messages on the display depending on how you activate the key that it’s bound to:
setLedTxt 0 'KEY'
ifGesture timeoutIn 200 $thisKeyId final setLedTxt 999 'GST'
ifDoubletap final setLedTxt 999 'DBL'
delayUntilReleaseMax 500
ifInterrupted final setLedTxt 999 '2ND'
ifPlaytime 450 final setLedTxt 999 'HLD'
setLedTxt 999 'TAP'
Fast double-tapping (within 200 ms) = GST (gesture)
Slower double-tapping (depends on the doubletap time configured) = DBL (double)
Holding it and pressing a second key while the key is held down = 2ND (secondary function)
Holding (for more than 450 ms) = HLD (hold)
Single tap = TAP (tap)
Note that the slow double-tap results in a TAP on the first tap followed by DBL on the second tap.
That should give you enough ideas how to program your behaviour. Just replace the setLedTxt commands by whatever you want to do in each case.
Ah, okay. That makes sense, then. I’m currently using this script for triple function keys
ifSecondary final tapKeySeq ( ) leftArrow
ifGesture timeoutIn 300 $thisKeyId final tapKey )
final tapKey (
because the script I tried to create myself but whatever I had tried didn’t work for some reason. It would trigger multiple keys, and I never figured out how to resolve it. I found this script from an old post and it has been working flawlessly, except for the issue we’re discussing.
Should I use the ifHold condition? I see that it was implemented 3 months ago if the reference manual, but when I try to use it in Agent, I get an unrecognized error.
Great! Thanks. This is great. It gives me a much clearer understanding of how these functions. I had avoided chording for some reason, but now after trying the 2ND mod, I might use that.