Tap/hold keys - some questions/problems

User avatar
philpirj

21 Nov 2013, 21:55

Guys with 100+ keys on their boards may just stop reading this right now.

The idea of using tap/hold keys is here for a while already.
Short introduction: tapping on a key results in a Tab keycode being sent, while holding is acting like Ctrl.
This allows two logical keys on a single physical button.

What I'm aware of it's used in suka's BlueCube et al (http://deskthority.net/workshop-f7/my-d ... t2534.html) and it's supported by hasu's tmk_keyboard firmware.

BlueCube layout:

Code: Select all

----- Thumbkey modifiers & secondary usage ----
LShft LAlt LCtrl Space  LWin     Mod3 Mod1 Mod2 AltGr Fx
 -     Esc  Tab  Space  -        Esc  BkSp Ret  -     - 
My kbd layout (don't use it at all since it's not tough enough):

Code: Select all

Tap/Hold
Spc Spc Esc Tab Del   Tab AGr Bsp Ent Ent
Lr1 Sft Ctl Alt Met   Met AGr Ctl Sft Lr1
What I'm aware of it's used in suka's BlueCube et al (http://deskthority.net/workshop-f7/my-d ... t2534.html) and it's supported by hasu's tmk_keyboard firmware.

Some comments from Oobly ergoboard (http://geekhack.org/index.php?topic=49721.0)

Problems:

1. Complicated combinations
Alt+Ctl+Space/Tab/Esc, Ctrl+Shift+Backspace. It's not easy to avoid clashes. Specifically with suka's layout it's not quite clear how to press Ctrl+Tab, which is very common.

1.1 Thumb key cluster
I've duplicated modifiers on the left and on the right, so all the combinations are possible, but in case of Ctrl+Shift+Backspace you need to hold two buttons while tapping on a third one while I still only have two thumbs.

2. Too many keys
Modifiers: Alt, Shift, Ctrl, Win/Meta/Cmd, AltGr (i got used to switch language layout tapping on it), 5 total.
Special keys: Space, Esc, Tab, Del, Backspace, Enter, 6 total.
And there should be at least one layer switching key.
Along with problem 1 this may end up with 10

2.1 Thumb key cluster 2
It's not easy to move thumb key too far away, so 3 keys for each one is a sane limit, that's what we see in Maltron, Kinesis Advantage, Ergodox et al, but we want more.

3. Delay (from http://geekhack.org/index.php?topic=497 ... msg1078758)
Tap and hold firmware can be tricky to get the timing right and it's sometimes too easy to press another key before releasing the previous, especially for space bar. It also introduces a delay in response for those keys which can be very bad when gaming, particularly games which require perfect timing. Jumping with space bar in a platform game, for example.
Interesting ideas:
Special placement of thumb cluster which allows for two keys in a single column, and allows for two keys to be pressed simultaneously or separately (as seen on Oobly's board).

Please let me know what you think.

User avatar
suka
frobiac

21 Nov 2013, 23:23

There are a lot of complications to be consideres as you have noticed, but overall the advantages of having most if not all modifiers under the thumbs far outweigh the additional code and relearning of some combinations in my opinion. To be fair, being a linux user I do not depend on too many modifiers, mainly Ctrl and Win (which is my i3 window manager hotkey):

The 3 layer ones (which includes Shift) on the right hand are necessary to be able to type all characters. Only issue here are movements with navigational keys on Layer 2 plus Shift or control to select text or move around, but since Shift is in the middle I can press both with the thumb together should I need it.

This arrangement also enables me to press any additional others with the left hand, and I chose Ctrl and Win as the main ones, and a dedicated Space key without secondary use due to the potential timing issues you mentioned: But since my firmware now uses a quite nifty state machine that another user of it improved greatly, timing should no longer pose a big problem. Also, auto-repeat and combinations of several thumb-keys where the last pressed one is interpreted as the regular key do work well now.
Of course, this will never work for the combination like Ctrl-Tab where both are on the same key, but you could specifically code a solution for that single key easily I guess...

But as a last resort, I have the otherwise pretty much unused outer columns still configured with some duplicated modfiers and backspace, tab and return, but hardly find myself using them.

All in all, I'd say it heavily depends on your usage patterns, and you will probably go through several iterations until you find something that works for you - and sometimes it is easier to adjust common shortcut keys in the problematic applications. However, for whatever problem that I encontered there has usually been an approriate fix, as you can see from the many "but"-clauses I used above :-)

It helped me a lot to continuously monitor what was hard in daily use and write that down immediately (I still keep that paper on my desk) and revisit the layout from time to time, trying to find alternatives.
I definitely see great potential in the idea of having another row of modifiers above or below, especially when it comes to modifier combinations, but personally prefer the minimalistic layout I now have.

User avatar
Muirium
µ

21 Nov 2013, 23:25

Ah, I see Suka was writing at the same time as me! Consider my post in the light of someone who hasn't his talent or perseverance!

Tap & hold raises two issues. One human and one in the implementation.

First, it takes layers to a whole other level than the traditional chording of keys. You may find your keyboard becoming a little "multidimensional", when trying to press combinations on the fly.

And secondly, the implementation requires heuristics. The challenge of identifying tap and holds, again on the fly, is pretty fiendish in practice. No one likes to slow down to suit their computer, nor does anyone like it when they trigger a false negative, let alone a false positive! Both can be extremely disrupting.

As a 60% fan, I've been drawn to these kind of shortcuts too. I'd love to have the best of both worlds with unmodified arrow keys on my 60, which still work as a full set of right hand modifiers when used in the usual sense. But I'm put off exploring it for the reasons above, and the fact that I'd have to be more comfortable with code than I am to really tackle them myself.

So, for now, it's just layers for me.

Post Reply

Return to “Workshop”