I think I am on the right track regarding home-row mods. One can make home-row mods work – also for fast typing when taking some things into account. Shift is the critical key – pun intended.
I think it is super important and helpful to differentiate between two different tasks.
- The first is fast typing (text, symbols, numbers).
- The second is triggering some actions, like copy / paste.
For fast typing you want to have a flow and be able to smash out keystrokes very fast, with as little delay between those keystrokes as possible.
When triggering hotkeys like copy / paste, or using shortcuts for text formatting, compiling or whatever function you use in a specific application, you are mental in a different mode. Here you are not hammering out commands (hotkey combos) in rapid succession, but likely these hotkey combos are surrounded by navigation in the text or other actions which are not happening with 50 to 100 wpm speed or more (~ 6 to 12 key presses per second). Thus speed is much less of importance when triggering hotkeys! You will likely have time to output only 1 or 2 hotkeys in a second and it will still be plenty fast for that purpose.
So the solution for home-row mods to work is to be aware of that and take the two different modes into account.
Shift as a layer key
Now we have to take a side step and discuss the Shift key. IMO it makes much sense to separate the main Shift-function from the second task. Shift is not only used as a hotkey, but mostly it is used to get to a second layer (accessing capital letters and some symbols). Holding down the Shift key is bad IMO, because it goes against smashing out keystrokes with as little delay as possible. Therefore Shift benefits highly from being used as a OneShot key. That directly implies that Shift must not be used in home-row mods. Shift needs to have a dedicated key to be able to be used fast without any constraints! In the best case you assign Shift to be a OneShot key. Note that the Shift function will also work when the key is kept held down!
The solution for working home-row mods is to not use Shift in home-row mods at all or only for the second use case, that means when Shift it is used in combination with other keys to trigger functions. When you use Shift for layer switching in the home-row, that is the Achilles heel in home-row mods. Depending on the trigger time for the second (hold) function that will either slow down your typing and / or result in false triggers, when rolling over keys. A bad example would be to have Shift on the A-key and then typing the word ‘as’.
The keys Ctrl, Alt and the OS-key (Win) which are typically assigned to home-row mods serve only the second function. So they can be set up with a relatively slow timeout. What slow means is depending on the typing behavior of a specific person. For many the Agent default of 330 ms will work fine.
Shift for home-row mods – for keyboard shortcuts?
When you can press the dedicated Shift key comfortably together with the home-row mods, you do not need Shift on the home-row. For anyone not being able to press the dedicated Shift key easily together with the three home-row mod keys, you could decide to add Shift also to the home-row, but use it only for combos and not for text input. Therefore when you gets false triggers with rolls you can increase the trigger time, till no false triggers occur. Because the home-row mods are then only used for the second task, even a slow trigger time of 500 ms or higher, will not have a significant impact on the practical speed. Remember that likely you will press only or or maximum two hotkey combos per second!
I personally do not want or need Shift as a home-rows mod, because I can comfortably hold the Shift-key with my pinky, when I need combos with Ctrl, Alt or Win as a home-row mod. That also works nicely in my case on the right hand, because I configured the right Shift key to be symmetrical to the left side. I use a custom character layout, which I designed in such a way to have all layer keys symmetrical on the left and right hand. I have Shift and another layer for characters, which I have put on the Fn2 layer – see screenshot below.
In Agent I think it is good to disable ‘Trigger by release’ and ‘Double tap primary’, when using home-row mods. If that is not wanted in general that can be done on a key-basis and not in the general config. For me I currently do not have a need or benefit I see to use those functions, so I have disabled them globally. It seems I can get away with a bit shorter time-out, because I do not have Shift as a home-row mod. Therefore the following settings seem to work fine for me:
I will see how that concept turns out, but I do not see any reason, why it should not work. So far I get no false triggers or lagging with that setup. Typing speed being between 50 wpm to 100 wpm (seldom bursts which are above 100).