To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/DreamsofCode/ . You’ll also get 20% off an annual premium subscription.
My biggest issue with home row mods is the lag of these keys when used while typing text. even though the lag was negligible it short circuited something in my brain :) A few friends suggested different lag settings but none made it smooth enough... I found a work flow that buts both shift keys when I hold on of my thumb cluster keys, ctrl at my left pinky and right thumb and the rest in their usual location. I've gotten used to a setting where all my keys send their "shifted" signal when held but this isn't ideal either... This video made me want to give this another go !
My biggest problem with this setup is the accidental typos. I'm a German native speaker and we use many capitalized words, which means i need to press shift fairly often. Thus i need the delay time to be as short as possible (because waiting for shift to activate would just kill the typing flow). But then this would mean that i can no longer roll keys. Rolling keys is one of the most important techniques when it comes to typing fast. So either i have to pause for shift to activate every few words or I can just not type fast anymore. But not all hope is lost! To circumvent this, i would advice to use not a single home row modifier but to use combos instead! Instead of holding d, the combo of d + f is shift for me. no more accidental typos! I thus can get rid of the holding delay. d+f is shift, s+f is ctrl, a+f is alt and s+d is super. This has honestly transformed my typing experience!
@@anonymouscommentator oh, thank you! This ideia is brilliant! I've been struggling with this delay on my home-row-mods. I have slightly modified your idea, though. Instead of using my index finger (on J or F) to be the second key in the combo, I set this second key to be the key where I rest my thumb of the same hand, e.g. I use J for CTRL, so for me the key combo will be J-BKSPC since backspace is where my right thumb rests. One way I think makes reasoning about this more straight-forward is looking at it like: all the modifiers are in the same key under the thumb, you just have to pre-choose which one to activate in the home-row 🤩
To explain a but further: I chose the second key in the combo to be where my thumb is because if I need to keep this modifier pressed and type more stuff, all the other fingers will still be free to continue typing.
How do you handle commands like ctrl+shift+s, ctrl+shift+n in chrome for example? Also how would you do this in the program showed in the video, I really want to try it out
@@fluffow2675 the modifier keys stay active for a short period after being pressed. that means i press the combo for shift, shortly after the combo for ctrl and then s. unfortunately i dont have experience with the programs used in this video. i use a custom built keyboard using the qmk firmware. there are some amazing articles on homerow mods that explain everything in high detail!
So you are telling me that I can have QMK like capabilities without needing specialized hardware AND I get to write in a lisp syntax? I absolutely love this! So glad I watched this video today!
@@6pakAL thumb keys are must for me. They definitely speed things with layers a lot. Also you could use xmodmap to do this under X11 for years but kanata is better.
Personally I do all my remapping with keyd,witch is Linux kernel module ,how has the advantage of virtually having no latency and working on any environment
First thing that came to mind is the delay that would be inevitable introduced when pressing those keys since it has to figure out whether you're gonna hold or if it was just a tap
I am looking for a workaround to this. A passthrough during the timeout. The issue seems to be when you press another key while the modded one has not released yet. I'm trying to figure out if it's possible to have the pause be overridden if another key is typed before the special key kicks in. So if type 'a' and within 200 ms i press 't' it would write 'at'. This could become finnicky when the second key is a modded key aswell, but I believe a solution would be possible. If anybody knows a way to acomplish this I'd be grateful.
@@Koroistro If you're on Linux, I'd recommend checking out keyd. I don't think you can get the exact functionality you're describing but I prefer it to kanata. There's a function specifically for homerow mods called 'overloadi' which helps to avoid accidentally using the mod keys while typing.
Using this right now, it's bearable, because even if the key input is delayed, letters still appear in the right order. I am sure it is possible to find such timings for yourself and not notice it at all.
This is brilliant. A couple of ideas for potential enhancements: 1. I would use SDFG on one side and HJKL on the other, with mirror symmetry about the split in a split keyboard. 2. The other key in the home row (A on one side, ; on the other) could be assigned as a 'null modifier'. If held down it would restore the normal dynamics of the opposite side keystrokes i.e. they would auto-repeat if held down and they would trigger on the down-stroke. 3. Holding down off-home row keys could be assigned as layer shifts working the same way. This would be good on minimalist layouts for special characters and the likes of function keys (and numbers in three-row layouts) when you do not want to assign a permanent key.
The placement on ASDF and JKL; is the standard neutral position for touch-typing, that's why it's so comfortable. If you put your fingers in SDFG and HJKL, then the outermost columns are too far for your pinkies
Thank you so much for this information. Typing this now with Kanata enabled. A few typos here and there, but still in the process of getting used to it.
I am in the process of building my own 42 key Corne keyboard and trying to find homerow mod resources and there you are like a clockwork! It was same with nix but I ended up creating my own shell script based on what you showed. It was a great resource nevertheless! Thank you!
I tried it on my Corne when I got it but I disabled it quickly as it lead to typing mistake. For example, when typing "dock" quickly, I noticed I type the "o" before I fully released the "d", which leads to mistake. I hope for you won't suffer from the same.
@@dhavalsavalia any way you could share that shell file with me? I would need to recreate the same, as my work computer doesn’t allow for any downloads or drivers, so I’d need to recreate it locally. Thanks:)
@@SFDestinyI don't see it... It seems like it just masks something else that's being done wrong. My job is 100% terminal and you don't strain to reach the F row. You just move your arm. The mod keys should be the same, especially when most of the things you use them for are intentionally close keys. Bad typing habits aren't solved because you switched to dvorak or anything like that. It's the best analogy i could come up with...
@@antepetrovic4054 it might sound more dramatic than it actually is. basically your wrist should be hovering, the wrist rest isn't a chair just like the headrest. you only put your wrist or head down when you're not active. so you can always shift a few millimetres to reach keys without actually stretching any part of your hand. because there are no key combos that go that far unless they directly intended for you to use both hands (like ctrl + alt + del) I know that it's not universal to follow these guidelines. people build their own habits and everything. but technically that's how typing is supposed to be done and how was taught to people to do as a job for almost 100 years now. nobody teaches the basics in schools anymore, that's all.
I love home row mods, but I do something different from most people I've seen. My shift keys are Caps Lock and ", not in the home row itself but adjacent. This is because I find Shfit to be the most used modifier and the most sensitive to timing, and I was triggering the wrong behaviour very often. By placing it this way, I can have very low timings without unintended activations.
I bought the moonlander beccause I was getting back pain from hours of programming all day. Having your hand spaced out in a split keyboard helps your back not curve and its much better. I have never looked back since. The thumb buttons are also a positive. I can never do a normal keyboard now.
I got myself a Voyager but haven't had much time to use it due to university. I want to use it, but it takes up too much time when I am doing assessments. I am very much looking forward to having the time and no time sensitive tasks
I'm using the same Voyager keyboard and initially used some of those bindings when modifiers are bound to other keys on long press. But it turned out to be not handy - there is a little lag until the modifier will be recorded. It is noticeable and annoying when typing fast. Now I remapped my layout so there are no number keys on the main layout and instead the first row consists only of modifiers, space and selectors of other layers, so I can use my thumb as if space on a regular keyboard was divided into several keys.
Same here. I tried using taps and holds but it just doesn't work when typing fast. Now I'm back to every key doing a single thing. The voyager would be perfect with 6 thumb keys, but fortunately I don't need the number row so I was able to move everything up one row.
I have a lispy tip (although probably useless): With multi-line parentheses in lisp, keep the closing paren on the same line as the last "item" of the expression. Same thing applies when we have multiple closing parens: all on the same line. That way the closing parens get out of your way and the code reads better. This is a clojure convention, but doesn't seem like it in kanata
I do not like the convention of putting a closing bracket at the end of a line: it makes it more difficult to add things inside the bracket! I also don't like putting the bracket on the next line: that looks ugly! The only solution I can think of is to use Pythonic whitespace, which works fine ... until you have to use a bracket of some sort! Sigh. This is one of those cases where you can't win, no matter how hard you try ....
This literally blew my mind! Normally I would have just kept this in the back of my mind and eventually forget about this. But your idea made me change my config 4:03 minutes into the video! This is huge.
TL;DR: Buy a split keyboard with a proper thumb cluster. For historic purposes: I'm off this again... Delved into this rabbit hole and came to this conclusion: Unreliable, too many typos, too much hassle to have this work accurately. Not worth it when you have a proper split keyboard with a thumb cluster. If I'm forced to work exclusively on a laptop I might revisit this, but I will avoid this if I can.
I have been using home row mod with my chocofi for a few years and couldn't recommend it enough. Thank you so much for bringing this rather niche idea to a more general audience!
This is a good idea in theory. But I noticed, at least with Kanata, I am making more mistakes. I have to slow down my typing. It seems like keys are sometimes delayed as a result. I have to go back and fix mistakes. I will levae a mistake or two here just to show you what is happening. I am frequently having to go back and correct what I type. Adjusting tap and hold times does hepl but os far I have not completely eilminated the problem.
Big tap-hold timeout: very hard to use as modifier keys, because you have to wait for hold activation Small tap-hold timeout: very hard for medium-speed typing, because home row keys will not be treated as tap if you don't release it ASAP. No timeout, immediately convert to "hold" when another key pressed: very hard for fast typing where two keys are very likely to overlap with each other No timeout, decide wether to convert to "hold" or not according to the order of key releases: very hard to use as modifier keys, because the release order is strict, and very hard for fast typing because those keys are printed with a perceptible delay
@@blue_name_warrior Fortunately I've gotten it down pretty well now. For me, I find a tap-time of 300 and a hold-time of 275 to be good. It's not perfect, but it gives me the best results for me. I still have to slow down my typing a bit or I get typos.
Got myself a Corne 4 last month and have been in love with home row mods, ColemakDH and a dedicated vim/tmux layer ever since. I can not overstate how much of an improvement this combo is over QWERTY staggered. Before I cheated a lot in hyprland with my mouse exactly for the reasons you outline in the first half, but now I hardly ever touch the mouse. Already most of my pain in fingers and wrists after a long session are gone and that's such a big win. Highly recommend exploring all your options when it comes to ergonomics. There's no one size fits all but you can most definitely make a lot of improvements that pay off in the long run.
@@QuentinLeonetti Not on my PC right now so I can’t screenshot it but you basically start with a miryoku layout. That one already has a a nav layer when holding one of the thumb buttons down. The right side than switches to hjkl on the home row, and arrow keys on the row below. The left side has the modifier keys on home row, with numbers on top and below (for relative line jumping although I don’t use that motion a lot). Every other key is then filled with useful shortcuts, copy/paste, undo/redo, jump to first/last line/char in line, move up/down half a page, goto local/global definition, next/last paragraph (%) and so one. I’m still getting used to Colemak and that layer really helps a ton and is quick and easy to access. I can probably replace most of the shortcuts with commands or plugin keybindings once I’m more comfortable typing with the new layout. Having some of the symbols used to navigate in vim are a must tho.
i've been using split spacebar keyboards just for a mod key on my right thumb, i use that one mod key for almost everything: arrow keys, copy-pasting, navigating and such. it's a blast. but these keyboards are so hard to come by without making one yourself tho.
I love the idea of it but the issue with these mods is that the key will go from action on down to action on up, because otherwise it can't tell whether you tapped or are holding. And even that tiny lag I can feel and notice.
You probably would not notice this, actually, unless your typing speed is really slow. The potential pitfall is accidentally registering command keypresses when you mean to press the alpha character due to rolling. Rolling being where you have two keys both in the keydown state. There's actually pretty clever mitigations for this on ZMK and QMK and I personally don't have issues with typing at around ~110wpm.
On the voyager you can make a timing when the hold activates. It's based as well on the typing speed. Mine is pretty low in the home row, while thumb clusters a bit higher for the layers
I recently tried home row mods, and I agree, even the slight delay makes typing worse for me. Even tried configuring the timing. Still just felt bad. It's not for me. Swapping alt and super along with capslock as ESC/Ctrl is enough for me. I almost never use alt for any binds and I'm already comfortable with how shift works for me.
Thank you for the video so much. I knew kanata existed but was overwhelmed to learn new config syntax. Now that I have set this up on a Windows machine I absolutely love it. Moreover, what I did is created a layer for arrows and other cursor motions on jkl; and row above them when lshift is held. I loved the fn layer on anne pro 2 and this is so much better. You can create so many layers now with these unused modifier keys. Unfortunately I was not able to reproduce this setup on macos 15 because the required driver didn't work.
Thank you for this video, it changed my keyboard experience to much better for the good! One thing in the macOS instructions that could be mentioned is that you should add the Kanata executable to Settings > Privacy and Security > Input Monitoring, otherwise it doesn't work as Kanata doesn't have access to keyboard inputs.
I might start using those too, they seem like a very sensible alternative to whatever yoga movements I force my thumb into when I need to press the super key. 😂
To be honestly, why not use the thumb for Ctrl? The thumb is way stronger than the index and is also much better on holding. Furthermore, your fingers are free to use x, c, v. Ah, and shift is under my right thumb key, which is doubling as space. So I can type any capital letter while holding my thumb down.
I have this exact issue with my thumbs! Literally switched to neovim to get away from command/option/control. It’s definitely helping, but I think I need this mod to fully relieve the pain.
great video!! you inspired me to try it on my mac setup and i got a karibiner config that deletes the extra letter u type before turning into the homerow mod that also servers as a little indicator for when the hotkey is live! had to play around with the held_down threshold timing but 150 ms seems to do the trick
In general I am a fan of a HRM setup but I never got it to not interfere and produce false hold signals when typing fairly fast. I'm now back to having all my mods on my tumb keys
I ordered that exact keyboard last week, I was wondering how I would feel not having modifier keys and using layers instead. Going to give a try to this. Thanks for the video. 👍
@dreamsofcode Have you ever done a 'tour' video of your desktop setup? I took a quick gander and didn't one, but would love to know how you've set up that floaty-looking window and the windows that animate in. Thanks!
I do something similar, except I hold alt to activate the home row mods plus some additional features (like ijkl arrows). Alt is really close to my thumb's resting position, so I have no issues using it frequently. I tried out the tap-hod behavior after watching this video, but I found the delays inconvenient, so I'll stick with alt :)
Started using home row mods on my glove80, but found that after learing everything properly the speed of the home row mods is a bit slow. You can make the delay shorter, which is usually fine, until you do not want to type at full speed. So i moved Super,Alt,Ctrl,Shift to the lowest row (two below home row) which allows you to type at full speed and still be kinda-ergonomic. It was probably more an issue with the double duty layer keys, but without vim-esque key bindings Crtl,Shift become needed in editors. Did you ever have have problems like that?
This is something I have always wanted to try out, but I have always thought I would need to either write an app like Kanata, or make my own keyboard. I'm going to have to try this out!
I was actually researching this last week and that research is the exact reason why my hdd partition got corrupted and I now have to rewrite all of my configs from scratch 😢
Similar to using different keyboard layouts, this will all be fun and games until when you have to type on someone else's computer. Or on your work computer. It's the same reason why people don't recommend beginner vim users to switch to "jkl;" instead of "hjkl". It's obvious that "jkl;" is better, because you don't have to move your index finger from the j to the h. However it's not recommended because once you use unconfigured vim, or vim on another computer, you WILL not be able to use it and will keep pressing the "hjkl" as per your muscle memory. And it's not easy to change your muscle memory on the fly.
Solution: Take your keyboard with you. tbh though, I really don't write code on other peoples computers that often, and using the existing mods isn't that much of challenge
My first thought before and after using this setup, i'm using modified miryoku layout, is the delay whenever i need to press multiple keys for 1 key using the normal layout. Also, accidental typo. After weeks and months of using it, its hard to work efficiently if i'm not using my split keyboard anymore. i'm more efficient because of it and my hands are more relaxed.
I have shift on the index finger and ctrl on the middle finger. switching to a programmable split keyboard was such a big game changer for me. I won't ever go back to a traditional keyboard. Are the homerow mods your only change? I created an extra layer for parenthesis (opening on the left home row, closing on the right), quotation marks (t g b = " ' `) and slashes (y h n = / | \). Additionally I also created an "Umlaut" layer to have ä und a, ö under o, ü under u, ß under s, and different symbols on mnemonic positions (e.g. # (hash) under h, & (and) under n, § (paragraph) under p, ^ (caret) under c, etc..
Just tried it for a few days, hated it. The input is taken only on release, this creates a awful latency. Also, if I do the "ctrl + a" too fast, it's not considered correctly even with the option that force the second input to force the hold mod before the end of the delay. This also causes a lot more issues when typing fast because touch press overlaps.. It's a shame because on the paper this is great.
Youve convinced me ive moved super and ctrl to homerow. and escape onto capslock i left the other keys alone as i frequently press and hold d and u, also j and k for navigation
Thankfully, my mechanical keyboard's left bottom row only has three keys, ctrl super and alt. And I'm one of those people who use my palm to press control. And the meta key is positioned just enough for my palm to press it. However, switching over to my laptop's keyboard, I feel your pain
Oh wow, I had a System 76 Launch keyboard and am now awaiting delivery on my ZSA Voyager, and plan on trying home row mods for the first time as soon as it arrives. Sound familiar?
Found your Voyager configuration in the github link. Thanks a ton, I'll use this as a starting point for my own layout. Cheers, keep up the amazing work on your channel!
I use the Voyager with colemak-dh layout and for months I was trying to get used to the home row mods. They were very comfy, but always I was triggering them when I didn't want to, or they were too slow, and they make the home row feel laggy (as there is a delay before registering the key press or key hold action). I never managed to fine tune it to where it felt natural. Now for months I'm using my pinky and thumbs for modifiers. Home row is responsive again, but it's not as comfy at all to use. It's a tricky one... I saw your Voyager layout and see you left the timings as default.
@dreamsofcode This actually sounds like a good idea in public environments installed and configured kanata a few hours ago btw, thank you for the guide
How well does your setup handle keybindings that uses multiple modifiers at the same time, e.g., CtrI-Shift-Alt + Y? I use Karabiner but that's only for MacOS. I am still working on getting home row mod with multiple simultaneous modifiers to work. I was looking for something else that was cross-platform. Thanks for the intro to Kanata!
@@MichaelWilliams-lr4mb When you just start using it you won't notice, you think it's just about getting used to but the reality is you will hit a lower WPM ceiling with homerow mods. I can type 160WPM with the regular layout, fastest i can do with homerow mods is around 105WPM.
2:06 Any chance anyone got a link or a name of that specific cable that connects two keyboard halves? Been looking for such spring-like cable with 90degree endings for a while now
Do you know if for Kanata, is it possible to set a key to enable/disable the home row mods config? It would be somewhat annoying to have to mess with a config file every time you want to play a game using the normal behavior of the keyboard.
Awesome video! i have that same keyboard too :D Any chance you'd be willing to share where you got your cables? I'm really curious about the purple one that connects the keyboard to your pc. Thanks in advance!
Could you do a comparison between the moonlander and the voyager? Im currently using the moonlander but im realising I could maybe do with much fewer keys
I called this technique "input on released not pressed" and actually designed a keyboard with like 16 keys around it when i was in highschool. But it turns out i was too dumb to make it. Maybe worth another try now
I have also used home row mods but I have usually done that in qmk / zmk, so basically in hardware level. Quick question, why did you choose to do it in kanata and not in firmware?
I would think having the meta key at and j would be better than the ctrl. At least when using a tiling window manager like i3 I think you use meta much more than ctrl? Any thoughts on this?
How about the annoying delay (lag) of tap-hold activation when used with trackpad or mouse on Mac, such as command+LeftClick incorrectly interpreted as only LeftClick? How about fast typing between home row keys, such as "f" overlapped with "k" which is very likely to happen inter-hands? How about single-hand operation easily done before but had to do right now, such as ctrl+c and ctrl+v, with another hand clicking mouse at the same time? ... Prefer QMK/ZMK whenever possible
I think most people with a custom layout omit the caps lock all together. It's definitely in the top 5 of most useless keyboard keys. Mapping caps lock to ESC is a very popular mod.
A lot of people use a combo so if they ever do need it then they have to hold both left and right shift to toggle it on or off. This way it doesn’t take up any extra space and it’s almost impossible to accidentally trigger.
Interesting tip presented exemplarily well. Kudos! "...incredibly simple..." Yes, I'm Gen-X. Call me Boomer if you must. "What does 'simple' mean if 'incredibly simple' means 'simple' in your argot?" Maybe it means 'surprisingly simple', I'm not sure; but, it surely doesn't mean 'unbelievably simple' in this instance. In truth, I doubt I've ever heard anyone younger than Gen-X use 'incredible' to mean 'not credible, not believable'. Yeah, the claim is it's an intensifier, but I think this is usually not the case. 'Incredibly' is most often used as a performative, it signals affect, often enthusiasm. And yet it doesn't signal affect because it is seemingly ubiquitous. "This is what we do, " is its function: "I am one of you (and so trust me)." I do believe that not using 'incredibly' will signal, "I am not one of you," to most people now; so, I'm not suggesting anyone change. Leave King Cnut to the fables, and just get along to get along... (But... This is tech we're discussing. Tech and math and banking, maybe these do warrant precision. And maybe in these particular domains performatives actually diminish credibility and persuasion?... Nah, this is TH-cam where lucre is coin of the realm.) 😁
i'm guessing the reason for the video is to mention kanata and if that's not the reason I would like to mention that the voyager supports a macro system. basically, you don't need to move any config (or install any software) around the different environments you use as your keyboard modifications stays in your keyboard when you user voyager oryx to modify your keyboard behavior.
To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/DreamsofCode/ . You’ll also get 20% off an annual premium subscription.
try to move super in the middle (G H) no reason to overload pinkie. I've been using colemak+36key+ortho split, never going back.
My biggest issue with home row mods is the lag of these keys when used while typing text. even though the lag was negligible it short circuited something in my brain :)
A few friends suggested different lag settings but none made it smooth enough...
I found a work flow that buts both shift keys when I hold on of my thumb cluster keys, ctrl at my left pinky and right thumb and the rest in their usual location.
I've gotten used to a setting where all my keys send their "shifted" signal when held but this isn't ideal either...
This video made me want to give this another go !
My biggest problem with this setup is the accidental typos. I'm a German native speaker and we use many capitalized words, which means i need to press shift fairly often. Thus i need the delay time to be as short as possible (because waiting for shift to activate would just kill the typing flow). But then this would mean that i can no longer roll keys. Rolling keys is one of the most important techniques when it comes to typing fast. So either i have to pause for shift to activate every few words or I can just not type fast anymore. But not all hope is lost! To circumvent this, i would advice to use not a single home row modifier but to use combos instead! Instead of holding d, the combo of d + f is shift for me. no more accidental typos! I thus can get rid of the holding delay. d+f is shift, s+f is ctrl, a+f is alt and s+d is super. This has honestly transformed my typing experience!
@@anonymouscommentator oh, thank you! This ideia is brilliant! I've been struggling with this delay on my home-row-mods. I have slightly modified your idea, though.
Instead of using my index finger (on J or F) to be the second key in the combo, I set this second key to be the key where I rest my thumb of the same hand, e.g. I use J for CTRL, so for me the key combo will be J-BKSPC since backspace is where my right thumb rests.
One way I think makes reasoning about this more straight-forward is looking at it like: all the modifiers are in the same key under the thumb, you just have to pre-choose which one to activate in the home-row 🤩
To explain a but further: I chose the second key in the combo to be where my thumb is because if I need to keep this modifier pressed and type more stuff, all the other fingers will still be free to continue typing.
@luizrogeriocn this is a great idea, i should try that out!
How do you handle commands like ctrl+shift+s, ctrl+shift+n in chrome for example?
Also how would you do this in the program showed in the video, I really want to try it out
@@fluffow2675 the modifier keys stay active for a short period after being pressed. that means i press the combo for shift, shortly after the combo for ctrl and then s. unfortunately i dont have experience with the programs used in this video. i use a custom built keyboard using the qmk firmware. there are some amazing articles on homerow mods that explain everything in high detail!
So you are telling me that I can have QMK like capabilities without needing specialized hardware AND I get to write in a lisp syntax?
I absolutely love this! So glad I watched this video today!
@@6pakAL thumb keys are must for me. They definitely speed things with layers a lot. Also you could use xmodmap to do this under X11 for years but kanata is better.
Personally I do all my remapping with keyd,witch is Linux kernel module ,how has the advantage of virtually having no latency and working on any environment
here i thought i needed a special keyboard for that functionality
thank you so much for another great video🤩
First thing that came to mind is the delay that would be inevitable introduced when pressing those keys since it has to figure out whether you're gonna hold or if it was just a tap
Yes, I am noticing that with Kanata and it is causing typos.
I am looking for a workaround to this. A passthrough during the timeout.
The issue seems to be when you press another key while the modded one has not released yet. I'm trying to figure out if it's possible to have the pause be overridden if another key is typed before the special key kicks in.
So if type 'a' and within 200 ms i press 't' it would write 'at'.
This could become finnicky when the second key is a modded key aswell, but I believe a solution would be possible.
If anybody knows a way to acomplish this I'd be grateful.
@@Koroistro If you're on Linux, I'd recommend checking out keyd. I don't think you can get the exact functionality you're describing but I prefer it to kanata. There's a function specifically for homerow mods called 'overloadi' which helps to avoid accidentally using the mod keys while typing.
Using this right now, it's bearable, because even if the key input is delayed, letters still appear in the right order. I am sure it is possible to find such timings for yourself and not notice it at all.
@@MichaelWilliams-lr4mb yes , agree with you
This is brilliant. A couple of ideas for potential enhancements:
1. I would use SDFG on one side and HJKL on the other, with mirror symmetry about the split in a split keyboard.
2. The other key in the home row (A on one side, ; on the other) could be assigned as a 'null modifier'. If held down it would restore the normal dynamics of the opposite side keystrokes i.e. they would auto-repeat if held down and they would trigger on the down-stroke.
3. Holding down off-home row keys could be assigned as layer shifts working the same way. This would be good on minimalist layouts for special characters and the likes of function keys (and numbers in three-row layouts) when you do not want to assign a permanent key.
The placement on ASDF and JKL; is the standard neutral position for touch-typing, that's why it's so comfortable. If you put your fingers in SDFG and HJKL, then the outermost columns are too far for your pinkies
Home row mods are awesome! I use them so much now, that I removed the dedicated ctrl and shift keys from my keyboard about a year ago.
Thank you so much for this information. Typing this now with Kanata enabled. A few typos here and there, but still in the process of getting used to it.
This video is a game changer for me !
tyvm!
I only use the super and ctrl so nothing effected my vim workflow!
I am in the process of building my own 42 key Corne keyboard and trying to find homerow mod resources and there you are like a clockwork! It was same with nix but I ended up creating my own shell script based on what you showed. It was a great resource nevertheless! Thank you!
I tried it on my Corne when I got it but I disabled it quickly as it lead to typing mistake. For example, when typing "dock" quickly, I noticed I type the "o" before I fully released the "d", which leads to mistake. I hope for you won't suffer from the same.
@@dhavalsavalia any way you could share that shell file with me? I would need to recreate the same, as my work computer doesn’t allow for any downloads or drivers, so I’d need to recreate it locally. Thanks:)
I'm a massive fan of home row mods. It makes keyboard-centric workflows significantly easier.
and less costly. it greatly reduces RSI/repetitive stress injury
@@SFDestinyI don't see it... It seems like it just masks something else that's being done wrong. My job is 100% terminal and you don't strain to reach the F row. You just move your arm. The mod keys should be the same, especially when most of the things you use them for are intentionally close keys.
Bad typing habits aren't solved because you switched to dvorak or anything like that. It's the best analogy i could come up with...
@@SquintyGears But why would you want to move your whole arm if you don't have to?
@@antepetrovic4054 it might sound more dramatic than it actually is. basically your wrist should be hovering, the wrist rest isn't a chair just like the headrest. you only put your wrist or head down when you're not active.
so you can always shift a few millimetres to reach keys without actually stretching any part of your hand. because there are no key combos that go that far unless they directly intended for you to use both hands (like ctrl + alt + del)
I know that it's not universal to follow these guidelines. people build their own habits and everything. but technically that's how typing is supposed to be done and how was taught to people to do as a job for almost 100 years now.
nobody teaches the basics in schools anymore, that's all.
I love home row mods, but I do something different from most people I've seen. My shift keys are Caps Lock and ", not in the home row itself but adjacent. This is because I find Shfit to be the most used modifier and the most sensitive to timing, and I was triggering the wrong behaviour very often. By placing it this way, I can have very low timings without unintended activations.
I bought the moonlander beccause I was getting back pain from hours of programming all day. Having your hand spaced out in a split keyboard helps your back not curve and its much better. I have never looked back since. The thumb buttons are also a positive. I can never do a normal keyboard now.
I got myself a Voyager but haven't had much time to use it due to university. I want to use it, but it takes up too much time when I am doing assessments. I am very much looking forward to having the time and no time sensitive tasks
I'm using the same Voyager keyboard and initially used some of those bindings when modifiers are bound to other keys on long press. But it turned out to be not handy - there is a little lag until the modifier will be recorded. It is noticeable and annoying when typing fast. Now I remapped my layout so there are no number keys on the main layout and instead the first row consists only of modifiers, space and selectors of other layers, so I can use my thumb as if space on a regular keyboard was divided into several keys.
Same here. I tried using taps and holds but it just doesn't work when typing fast. Now I'm back to every key doing a single thing. The voyager would be perfect with 6 thumb keys, but fortunately I don't need the number row so I was able to move everything up one row.
You don't understand how much I needed this
These videos are super high quality, love the shorter form as well!
I have a lispy tip (although probably useless): With multi-line parentheses in lisp, keep the closing paren on the same line as the last "item" of the expression. Same thing applies when we have multiple closing parens: all on the same line. That way the closing parens get out of your way and the code reads better. This is a clojure convention, but doesn't seem like it in kanata
I do not like the convention of putting a closing bracket at the end of a line: it makes it more difficult to add things inside the bracket!
I also don't like putting the bracket on the next line: that looks ugly!
The only solution I can think of is to use Pythonic whitespace, which works fine ... until you have to use a bracket of some sort!
Sigh. This is one of those cases where you can't win, no matter how hard you try ....
Even if you use pythonic whitespace, you still gotta put the closing paren somewhere, either the same line or the next. Im not sure i understood you
This literally blew my mind! Normally I would have just kept this in the back of my mind and eventually forget about this. But your idea made me change my config 4:03 minutes into the video! This is huge.
TL;DR: Buy a split keyboard with a proper thumb cluster.
For historic purposes: I'm off this again... Delved into this rabbit hole and came to this conclusion: Unreliable, too many typos, too much hassle to have this work accurately. Not worth it when you have a proper split keyboard with a thumb cluster. If I'm forced to work exclusively on a laptop I might revisit this, but I will avoid this if I can.
I have been using home row mod with my chocofi for a few years and couldn't recommend it enough. Thank you so much for bringing this rather niche idea to a more general audience!
This is a good idea in theory. But I noticed, at least with Kanata, I am making more mistakes. I have to slow down my typing. It seems like keys are sometimes delayed as a result. I have to go back and fix mistakes. I will levae a mistake or two here just to show you what is happening. I am frequently having to go back and correct what I type. Adjusting tap and hold times does hepl but os far I have not completely eilminated the problem.
Big tap-hold timeout: very hard to use as modifier keys, because you have to wait for hold activation
Small tap-hold timeout: very hard for medium-speed typing, because home row keys will not be treated as tap if you don't release it ASAP.
No timeout, immediately convert to "hold" when another key pressed: very hard for fast typing where two keys are very likely to overlap with each other
No timeout, decide wether to convert to "hold" or not according to the order of key releases: very hard to use as modifier keys, because the release order is strict, and very hard for fast typing because those keys are printed with a perceptible delay
@@blue_name_warrior Fortunately I've gotten it down pretty well now. For me, I find a tap-time of 300 and a hold-time of 275 to be good. It's not perfect, but it gives me the best results for me. I still have to slow down my typing a bit or I get typos.
Got myself a Corne 4 last month and have been in love with home row mods, ColemakDH and a dedicated vim/tmux layer ever since. I can not overstate how much of an improvement this combo is over QWERTY staggered. Before I cheated a lot in hyprland with my mouse exactly for the reasons you outline in the first half, but now I hardly ever touch the mouse. Already most of my pain in fingers and wrists after a long session are gone and that's such a big win. Highly recommend exploring all your options when it comes to ergonomics. There's no one size fits all but you can most definitely make a lot of improvements that pay off in the long run.
Hey! I'm curious about using colemak + vim layer. how did you go about it?
@@QuentinLeonetti Not on my PC right now so I can’t screenshot it but you basically start with a miryoku layout. That one already has a a nav layer when holding one of the thumb buttons down.
The right side than switches to hjkl on the home row, and arrow keys on the row below. The left side has the modifier keys on home row, with numbers on top and below (for relative line jumping although I don’t use that motion a lot). Every other key is then filled with useful shortcuts, copy/paste, undo/redo, jump to first/last line/char in line, move up/down half a page, goto local/global definition, next/last paragraph (%) and so one.
I’m still getting used to Colemak and that layer really helps a ton and is quick and easy to access. I can probably replace most of the shortcuts with commands or plugin keybindings once I’m more comfortable typing with the new layout. Having some of the symbols used to navigate in vim are a must tho.
@@snickersanyone thank you! I'll try that out
i've been using split spacebar keyboards just for a mod key on my right thumb, i use that one mod key for almost everything: arrow keys, copy-pasting, navigating and such. it's a blast. but these keyboards are so hard to come by without making one yourself tho.
I want to learn this mod but just imagining re learning vim keybinds is enough nightmare to work though with my therapist
For my own setup, I just have a miryoku-like vim-key layer for hjkl, which doesn't have the modkeys enabled.
Thanks for the explanation of the tap timeout. I had added the home row mods and was suffering from not being able to say aaaaaaaa
I love the idea of it but the issue with these mods is that the key will go from action on down to action on up, because otherwise it can't tell whether you tapped or are holding. And even that tiny lag I can feel and notice.
You probably would not notice this, actually, unless your typing speed is really slow. The potential pitfall is accidentally registering command keypresses when you mean to press the alpha character due to rolling. Rolling being where you have two keys both in the keydown state.
There's actually pretty clever mitigations for this on ZMK and QMK and I personally don't have issues with typing at around ~110wpm.
On the voyager you can make a timing when the hold activates. It's based as well on the typing speed. Mine is pretty low in the home row, while thumb clusters a bit higher for the layers
I have a voyager keyboard and have never had any issue like this
Exactly. This issue makes HRM unusable for me.
I recently tried home row mods, and I agree, even the slight delay makes typing worse for me. Even tried configuring the timing. Still just felt bad. It's not for me. Swapping alt and super along with capslock as ESC/Ctrl is enough for me. I almost never use alt for any binds and I'm already comfortable with how shift works for me.
I love my Moonlander split KB for its thumbkeys.
Thank you for the video so much. I knew kanata existed but was overwhelmed to learn new config syntax. Now that I have set this up on a Windows machine I absolutely love it.
Moreover, what I did is created a layer for arrows and other cursor motions on jkl; and row above them when lshift is held. I loved the fn layer on anne pro 2 and this is so much better. You can create so many layers now with these unused modifier keys.
Unfortunately I was not able to reproduce this setup on macos 15 because the required driver didn't work.
yep, I've been using ZSA ergodex and voyager (also learned colemak-dh) for a year now and honestly I am NEVER going back. it's just too damn good!
Thank you for this video, it changed my keyboard experience to much better for the good!
One thing in the macOS instructions that could be mentioned is that you should add the Kanata executable to Settings > Privacy and Security > Input Monitoring, otherwise it doesn't work as Kanata doesn't have access to keyboard inputs.
I might start using those too, they seem like a very sensible alternative to whatever yoga movements I force my thumb into when I need to press the super key. 😂
Amazing video as always. Definitely one of the best channels on TH-cam
To be honestly, why not use the thumb for Ctrl? The thumb is way stronger than the index and is also much better on holding. Furthermore, your fingers are free to use x, c, v. Ah, and shift is under my right thumb key, which is doubling as space. So I can type any capital letter while holding my thumb down.
I have this exact issue with my thumbs! Literally switched to neovim to get away from command/option/control. It’s definitely helping, but I think I need this mod to fully relieve the pain.
great video!! you inspired me to try it on my mac setup and i got a karibiner config that deletes the extra letter u type before turning into the homerow mod that also servers as a little indicator for when the hotkey is live! had to play around with the held_down threshold timing but 150 ms seems to do the trick
Wow nicely done! I'd love to see your karabiner config if possible!
In general I am a fan of a HRM setup but I never got it to not interfere and produce false hold signals when typing fairly fast.
I'm now back to having all my mods on my tumb keys
I ordered that exact keyboard last week, I was wondering how I would feel not having modifier keys and using layers instead. Going to give a try to this. Thanks for the video. 👍
Which keyboard is it? 🤔
Edit: nvm found it! Obvious now that I see it, ZSA Voyager
Curious if you’re already familiar with columnar layout - or will that be new also?
@dreamsofcode Have you ever done a 'tour' video of your desktop setup? I took a quick gander and didn't one, but would love to know how you've set up that floaty-looking window and the windows that animate in. Thanks!
I have not! But I definitely will do so! Probably on my second channel 😁
I do something similar, except I hold alt to activate the home row mods plus some additional features (like ijkl arrows). Alt is really close to my thumb's resting position, so I have no issues using it frequently. I tried out the tap-hod behavior after watching this video, but I found the delays inconvenient, so I'll stick with alt :)
Started using home row mods on my glove80, but found that after learing everything properly the speed of the home row mods is a bit slow.
You can make the delay shorter, which is usually fine, until you do not want to type at full speed.
So i moved Super,Alt,Ctrl,Shift to the lowest row (two below home row) which allows you to type at full speed and still be kinda-ergonomic.
It was probably more an issue with the double duty layer keys, but without vim-esque key bindings Crtl,Shift become needed in editors.
Did you ever have have problems like that?
bro your videos made me discover so much incredible things, thanks you really much, this is insane !
This is just brillant.
I used alt+ vim keys for arrow keys and word jumps however your remaps is next level for me
This is something I have always wanted to try out, but I have always thought I would need to either write an app like Kanata, or make my own keyboard. I'm going to have to try this out!
I was actually researching this last week and that research is the exact reason why my hdd partition got corrupted and I now have to rewrite all of my configs from scratch 😢
Similar to using different keyboard layouts, this will all be fun and games until when you have to type on someone else's computer. Or on your work computer.
It's the same reason why people don't recommend beginner vim users to switch to "jkl;" instead of "hjkl". It's obvious that "jkl;" is better, because you don't have to move your index finger from the j to the h. However it's not recommended because once you use unconfigured vim, or vim on another computer, you WILL not be able to use it and will keep pressing the "hjkl" as per your muscle memory. And it's not easy to change your muscle memory on the fly.
Solution: Take your keyboard with you.
tbh though, I really don't write code on other peoples computers that often, and using the existing mods isn't that much of challenge
homerowmods are so goated, but i need another profile for wasd games :)
My first thought before and after using this setup, i'm using modified miryoku layout, is the delay whenever i need to press multiple keys for 1 key using the normal layout. Also, accidental typo. After weeks and months of using it, its hard to work efficiently if i'm not using my split keyboard anymore. i'm more efficient because of it and my hands are more relaxed.
Going to implement this ASAP
I have shift on the index finger and ctrl on the middle finger. switching to a programmable split keyboard was such a big game changer for me. I won't ever go back to a traditional keyboard.
Are the homerow mods your only change?
I created an extra layer for parenthesis (opening on the left home row, closing on the right), quotation marks (t g b = " ' `) and slashes (y h n = / | \). Additionally I also created an "Umlaut" layer to have ä und a, ö under o, ü under u, ß under s, and different symbols on mnemonic positions (e.g. # (hash) under h, & (and) under n, § (paragraph) under p, ^ (caret) under c, etc..
Next step is using manna-harbour's awesome miryoku keyboard layout.
It's literally perfect.
Just tried it for a few days, hated it. The input is taken only on release, this creates a awful latency. Also, if I do the "ctrl + a" too fast, it's not considered correctly even with the option that force the second input to force the hold mod before the end of the delay. This also causes a lot more issues when typing fast because touch press overlaps..
It's a shame because on the paper this is great.
I like chording mods. Like holding down D and F is SHIFT
Great idea and explanation
As always, great. Thanks!
Youve convinced me
ive moved super and ctrl to homerow. and escape onto capslock
i left the other keys alone as i frequently press and hold d and u, also j and k for navigation
Top notch content as usual ❤
Probably missed when you mention it, but won’t having K as a modifier affect vim? What if u just want to go up a few lines by holding K?
holding key in vim? nah, only hardcore - in normal mode number + k, in insert mode ctrl+r + number + k hehe
That is the aaaaaaaaaaaaaaaaaaaaaaaaaaaaa example. Tap then Hold
Thankfully, my mechanical keyboard's left bottom row only has three keys, ctrl super and alt. And I'm one of those people who use my palm to press control. And the meta key is positioned just enough for my palm to press it. However, switching over to my laptop's keyboard, I feel your pain
OMG! I want to use this now ... I feel so dumb for not doing this until now ...
Excellent video !
man you would love a kinesis advantage keyboard
1:56 How it works without causing delay? Letter could show only after you release the key, before it couldn't know
Great concept!
Oh wow, I had a System 76 Launch keyboard and am now awaiting delivery on my ZSA Voyager, and plan on trying home row mods for the first time as soon as it arrives. Sound familiar?
Found your Voyager configuration in the github link. Thanks a ton, I'll use this as a starting point for my own layout. Cheers, keep up the amazing work on your channel!
Awesome! I hope you enjoy it! I love the ZSA Voyager personally!
Just rebind capslock to what ever you need. Caps is in such a prime position on the keyboard and yet it is entirely useless
I already have it bound to Ctrl; I just wish I could have a key next to it, to bind to Esc!
I have a whole video on rebinding capslock to esc + Ctrl 😁
I use the Voyager with colemak-dh layout and for months I was trying to get used to the home row mods. They were very comfy, but always I was triggering them when I didn't want to, or they were too slow, and they make the home row feel laggy (as there is a delay before registering the key press or key hold action). I never managed to fine tune it to where it felt natural. Now for months I'm using my pinky and thumbs for modifiers. Home row is responsive again, but it's not as comfy at all to use. It's a tricky one... I saw your Voyager layout and see you left the timings as default.
imagine a person unaware of this trying to find where the shift is and explaining it to them 😅
@@plaintext7288 that's why they call it personal computers
Great if you have a password with uppercase letters in it!
@dreamsofcode This actually sounds like a good idea in public environments
installed and configured kanata a few hours ago btw, thank you for the guide
I modified caps lock to be control, when held; and escape when tapped.
that's a good one! love tap-escape. but i feel like the capslock key also works really well for a hyper key that is used to launch specific programs
always useful info
I recently switched to Home row mods + split keyboard. I can’t go back now.
At this point he's just making magic spells on his kbd.
Which Window Manager are you using? These animations look sick!
How well does your setup handle keybindings that uses multiple modifiers at the same time, e.g., CtrI-Shift-Alt + Y? I use Karabiner but that's only for MacOS. I am still working on getting home row mod with multiple simultaneous modifiers to work. I was looking for something else that was cross-platform. Thanks for the intro to Kanata!
Thank you this is very helpful
when's the nix over arch video coming out?
It's being edited as we speak!
Or your know you could use the pinky or ring- finger to access Alt, Win, Ctrl-keys, on ether side.
I've been using homerow mods for 7 years it's great with one con, it will limit your WPM.
Yes, I have noticed it is slowing my typing down. If I type too fast, I will make a mistake. But maybe I will get used to this.
@@MichaelWilliams-lr4mb When you just start using it you won't notice, you think it's just about getting used to but the reality is you will hit a lower WPM ceiling with homerow mods. I can type 160WPM with the regular layout, fastest i can do with homerow mods is around 105WPM.
What's the mode of headphones are you using? Looks cool
For any germans struggling with "ö" in the katana config: Just use ";" like in the video, it will work just fine
2:06 Any chance anyone got a link or a name of that specific cable that connects two keyboard halves? Been looking for such spring-like cable with 90degree endings for a while now
Thank you
Do you know if for Kanata, is it possible to set a key to enable/disable the home row mods config? It would be somewhat annoying to have to mess with a config file every time you want to play a game using the normal behavior of the keyboard.
Amazing video. Thanks a lot 🙏🏼🙂
Awesome video! i have that same keyboard too :D Any chance you'd be willing to share where you got your cables? I'm really curious about the purple one that connects the keyboard to your pc. Thanks in advance!
Hey, what keyboard is it? I'm interested
@@_raptor4070 ZSA Voyager :)
So... see you at the next kubecon? 😉
Great concept. I did this with kmonad
elliot your videos are always worth watch and easy share to friend ❤️
Could you do a comparison between the moonlander and the voyager? Im currently using the moonlander but im realising I could maybe do with much fewer keys
I called this technique "input on released not pressed" and actually designed a keyboard with like 16 keys around it when i was in highschool. But it turns out i was too dumb to make it. Maybe worth another try now
I have also used home row mods but I have usually done that in qmk / zmk, so basically in hardware level. Quick question, why did you choose to do it in kanata and not in firmware?
I would think having the meta key at and j would be better than the ctrl. At least when using a tiling window manager like i3 I think you use meta much more than ctrl? Any thoughts on this?
How about the annoying delay (lag) of tap-hold activation when used with trackpad or mouse on Mac, such as command+LeftClick incorrectly interpreted as only LeftClick?
How about fast typing between home row keys, such as "f" overlapped with "k" which is very likely to happen inter-hands?
How about single-hand operation easily done before but had to do right now, such as ctrl+c and ctrl+v, with another hand clicking mouse at the same time?
...
Prefer QMK/ZMK whenever possible
That looks weird to learn
So where do you map your Cap Locks Key? 😅
you don't need it
I think most people with a custom layout omit the caps lock all together. It's definitely in the top 5 of most useless keyboard keys. Mapping caps lock to ESC is a very popular mod.
A lot of people use a combo so if they ever do need it then they have to hold both left and right shift to toggle it on or off. This way it doesn’t take up any extra space and it’s almost impossible to accidentally trigger.
Interesting tip presented exemplarily well. Kudos!
"...incredibly simple..."
Yes, I'm Gen-X. Call me Boomer if you must. "What does 'simple' mean if 'incredibly simple' means 'simple' in your argot?" Maybe it means 'surprisingly simple', I'm not sure; but, it surely doesn't mean 'unbelievably simple' in this instance. In truth, I doubt I've ever heard anyone younger than Gen-X use 'incredible' to mean 'not credible, not believable'. Yeah, the claim is it's an intensifier, but I think this is usually not the case. 'Incredibly' is most often used as a performative, it signals affect, often enthusiasm. And yet it doesn't signal affect because it is seemingly ubiquitous. "This is what we do, " is its function: "I am one of you (and so trust me)." I do believe that not using 'incredibly' will signal, "I am not one of you," to most people now; so, I'm not suggesting anyone change. Leave King Cnut to the fables, and just get along to get along... (But... This is tech we're discussing. Tech and math and banking, maybe these do warrant precision. And maybe in these particular domains performatives actually diminish credibility and persuasion?... Nah, this is TH-cam where lucre is coin of the realm.) 😁
i'm guessing the reason for the video is to mention kanata and if that's not the reason I would like to mention that the voyager supports a macro system. basically, you don't need to move any config (or install any software) around the different environments you use as your keyboard modifications stays in your keyboard when you user voyager oryx to modify your keyboard behavior.
I chose kanata as it's the most accessible! I only really use it with my laptops however.
I actually linked my voyager config in the GitHub repo!
But you have mods under thumb, why don’t you use them then?
Did you say what window tiling manager you use?
never used rshift in my life, always wondered what's that for