Miryoku And homerow mods

Wanting to try out homerow mods / the miryoku setup and was wondering if anyone has succeeded in doing it.

Would love to see their configuration as when I tried the homerow mods specifically I’d get laggy input

I have not found a way to make home-row-mods work for me. I know some people are happy with using them. My guess is that those are not fast typists. When you type above 60 or 70 wpm, or much faster in bursts, I think it will not be possible to get home-row-mods not interfering with quick rolls or fast sequences. I might be wrong, but I decided for me that they are not worth the hassle.

So want do you use? Layers, one shot mods, ifFestures for tap dances or other things too?

I played a bit with them, and kind of find myself in a similar spot as you. I type around 80-90 wpm, and I get occasional false activation of either primary or secondary functions. Haven’t found the best settings yet. I have not fully given up though; still experimenting.

It is possible, at least for 60-80 wpm. I yse them. Almost never…or actually never have this issue.

The key point is “advanced” mode.

I am using homerow mods after getting an RSI injury from poor form (in addition to learning to properly touch type with both hands to reduce excess finger movement). Using the left modifiers like ctrl caused so many constant finger contortions along with wrong finger assignment to keys.

It’s a bit weird at first, but very ergonomic. In fact, both thumb keys activate a second layer in addition to being space and backspace. Alas, I type slow now (60 wpm with punctuations) and very rarely get false activations.

Mostly default settings but you just need to enabled “Advanced” for Typing Behaviour. I think advanced should be the default mode. I am not sure who would simple?

1 Like

Do you type qwerty or another layout? With qwerty it might work easier than with an optimized layout where you have the most common letters in the home-row!?

I will try it again, thanks for posting your settings. Will start with Ctrl only – which is the most important one IMO.

Not exactly Miryoku, but I’ve been experimenting with Home Row mods.

As for secondary role timings, I use these (in my $oninit macro):

set secondaryRole.defaultStrategy advanced
set secondaryRole.advanced.timeout 250
set secondaryRole.advanced.timeoutAction secondary
set secondaryRole.advanced.triggerByRelease 1
// positive values for savetyMargin favour primary role, negative favour secondary role
set secondaryRole.advanced.safetyMargin +5

The reason why I have the mods on those keys (and not where Miryoku has them) is because my “maxtend” layer has Alt/Shift/Control already on those positions:

Also I use a Colemak keymap (on the host) and thus they are on the keys labeled A (for Alt), S (for Shift), and T (for conTrol) :wink:

1 Like

Does mean you are not sure if you want to use them because of what you are used too or other reasons? Or are you having problems (false triggers) you need to get rid off, that the experiments are a success and you will continue to use the home row mods?

Yeah, I am not 100% sure yet. You know, muscle memory is a b*tch. My fingers just keep going back to the original mods. Also, I am experimenting with different timings to avoid spurious wrong activations (or missing activations). Also, there are time when I am working on my Laptop keyboard, and I don’t want to start relying on ONLY home row mods. So I am going back and forth between my regular keymap (without home row mods) and the one with home row mods.

So, overall I am not yet sure if I really need home row mods. :wink:

Haha, I understand [1]. I tried homerow-mods a while ago and they did not work at all. Way too many false triggers. I now used the settings from jsyntax and have not had major problems in one week. So that seems to work mostly – still fine-tuning a bit. But at the moment my speed is slower than it used to be, still getting my final layout (called ENDe) under my fingers. My speed is now typically between 60 and 80 wpm, with seldom bursts above 100, btw. Ah, one important (possibly) point is that I do not have shift as a home-row mod. I just type it in the standard position, together with Ctrl or Alt or Win in the home-row. That is possible, because I use an ANSI keyboard and remapped the right shift to be symmetrical to the left one, so now using the /-key.

Can we see your current layout somewhere? I wanted to make a post and or video about mine, for a long time already, but was super busy, then travelling a lot and two times sick in between… :frowning:
But I hope I get around to do that relatively soon.


„Gewohnheiten sind die Fesseln des freien Menschen.“ (Ambrose Gwinnett Bierce)

I was touch-typing for 40 years and now I am learning a new, custom layout. It is possible, but it is a serious effort. It was an experiment I am doing, not something I would recommend… :rofl:

The best I have for you is my Github repository “maxtend”. Read the Background section. The screenshots in the UHK chapter are from an older version of Agent; they don’t show where I now have layer switches and macros, but it should give you a general idea how I’ve configured things. One of these days I need to redo that whole section with updated explanations and refreshed screenshots.

I switched to Colemak a few years ago. Took me several months, lots of practice, and switch-over in Tarmak stages. Now I type 80-90 wpm with peaks at 100+ (on lucky days :slight_smile: ), and it’s so much more comfortable than QWERTY.

OT here, but maybe still interesting for some:

How do you type umlauts? Do you think it was worth the time? I find my new layout (based on the AdnW variation Xoy) also much more comfortable, but if it is worth switching I am not sure. Depends on how much pain you feel and if you do not bother to invest a serious amount of time relearning.

Two ways: AltGr+d (Deadkey for Diaeresis/Trema ¨) followed by a, o, or u produces the Umlaut.
There are also shortcuts for common keys: AltGr+; => ö, AltGr+y => ü, AltGr+q => ä, AltGr+s => ß (of course all of these also work with shift for uppercase versions).
Beware, I am referring to Colemak positions, not Qwerty.

I type about 75% English, 25% German. I got used to the AltGr combinations.

The nice thing about Colemak is that it offers Colemak Multilingual Support out of the box with its AltGr layer.

Yes. Together with layers for navigation, my hands stay in place and my fingers barely leave the home row. It feels great.

For me it was a combination of learning Colemak, and re-learning everything around how I use my keyboard: layout, layers, and hardware. It was a whole journey (and I think the journey is still continuing, although at a slower pace now).

I had fun tweaking the layers, perfecting the keyboard hardware, and to make my layout run across Windows, Linux, and the UHK. (I wanted the same functionality and muscle memory to work with and without an external keyboard, and across both Windows and Linux setups.)

Plus, the added benefit that nobody can use my keyboard :smiley:

I’m a nerd, and I love it.

Thanks Max, interesting. I for myself used arrow keys and the like since 2008, using an AHK script. That was surely a game changer and everybody touch typing would benefit from that very much IMO. Regarding the umlauts. I always hated to use the AltGr-key, because you can not touch type that quick and reliable on most keyboards, it is not available on both sides (standard) and it is even not at the same position on different keyboards, namely laptop keyboards. Therefore I created a mapping which got rid of using the AltGr key on a German layout. If you have not read my article about that, it might be interesting to read.

Now I use a custom layout which uses symmetrical keys left and right for different layers (CapsLock and '-key position on a US keyboard) and type Shift also symmetrically - left side normal Shift (ANSI keyboard) and right side using the /-key. All symbol and char layers use OneShot. I do not use any hold-down modifiers for characters. That should result in faster and more fluid typing in the long run I think. My only modifier hold down is the space key, which then gives access to arrows, Enter and so on. Thus for functions where the fast typing flow is stopped anyways.

Back to the topic. I am experimenting with home-row mods now, but am not sure yet due potential conflicts. At the moment I just have the Ctrl-key mapped to the index fingers.

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.

  1. The first is fast typing (text, symbols, numbers).
  2. 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).

1 Like

A quick update. I sometimes did get unwanted hotkey triggers when typing fast and / or a bit sloppy (being tired). I played around with the timeout, but still occasionally got false triggers. Possibly that can be solved with an even longer timeout (than 400ms), but for me home-row mods are not essential and I now try to move them to the bottom row and will see how they work there.

Reason for the false triggers can also be that I use a custom layout, where most used keys are in the home- and top row. So much higher chances typing those keys quickly in a successive order. On qwerty that is potentially a bit less likely.

To be continued…

That’s exactly why I am still experimenting with home-row mods. Spurious false triggers.

Which config do you have? I don’t have any ever accidental mod key presses no matter how fast am I typing (that was deal breaker for me). But for that I have to pay latency 500ms probably to switch to mod (hold key). But If I both press mod key and other key is works simultaneously.

So there’s quite rare cases I feel that delay.

At the moment this is what I use:

set secondaryRole.defaultStrategy advanced
set secondaryRole.advanced.timeout 350
set secondaryRole.advanced.timeoutAction secondary
set secondaryRole.advanced.triggerByRelease 1
// positive values for safetyMargin favour primary role, negative favour secondary role
set secondaryRole.advanced.safetyMargin +10

I’ve also tried:

set secondaryRole.defaultStrategy advanced
set secondaryRole.advanced.timeout 450
set secondaryRole.advanced.timeoutAction secondary
set secondaryRole.advanced.triggerByRelease 1
// positive values for safetyMargin favour primary role, negative favour secondary role
set secondaryRole.advanced.safetyMargin +30

But neither seem to be perfect. I am currently experimenting. Haven’t found the best yet.