🤯 very cool! I don’t need it, but I’ll try to find an excuse to use the idea somewhere!
I am not particularly fond of remapping caps lock to behave like ctrl because that still suffers from the problem that key combinations like C-x, C-a require pressing both the modifier key and the modified key with the left hand fingers.
FWIW, I’ve recently reached the next stage of my laptops keyboard bliss when I remapped:
CapsLock -> Esc
z -> Ctrl
x -> Meta
c -> Alt
, -> Alt
. -> Meta
. -> Ctrl
That is, just move the modifiers one row up (key acts as a modifier when held, and as a key when pressed). I use kanata to do the remapping.
One thing that surprised me when playing with using normal keys as modifiers is that on some keyboards that is impossible. On some keyboards modifier keys are electronically different from normal keys and the keyboard won’t emit key down events if you’re already holding down another normal key. I really like the idea with spacemacs and devilmode that you don’t have to hold two keys at once at all. That the entire interaction is just a linear stream of keypresses. It’s just very easy to reason about.
This is called key rollover, how many keys you can press and release in order and get all the events properly recognised. Modifiers usually have to support pretty large rollover; alphanumerics are numerous and often put into a matrix of connections where you cannot distinguish all combos, but usually two keys at once work anyway (fast typing requires pretty high rollover support for at least some letter sequences). But three letter keys not adjacent in any normal word… low-end keyboards might be unhappy with this.
It used to be a big problem for games, where you’d have two people using opposite ends of the keyboard in a split-screen multiplayer (I guess computers are cheap enough now that this doesn’t happen so much?). I remember having a keyboard where the scanning was clearly left-to-right, because the person using the left side of the keyboard could prevent the person using the right from performing critical actions by pressing too many keys.
Thanks for sharing Kanata! I’ve been holding off on investing in KMonad because several of my devices have unusual architectures and I didn’t find GHC easy to bootstrap, but Rust will be easier to go all in on– the config is more valuable the more consistently I can use it.
This is cool! I don’t need it, because I’m now using a keyboard with modifiers on the thumbs (Atreus), but I could definitely see myself using it if I weren’t. What I had been using was remapping some dual purpose keys with kmonad.
CapsLock →Ctrl/BkSp
Enter → Ctrl/Enter
Space →Alt/Space
ShiftL → Shift/(
ShiftR → Shift/)
Interesting way to get away from those painful key combinations.
My entire computer setup avoids those almost entirely. When there is one, I can press it with the thumb on one hand (thanks to the keyboardio layout), while the other hand presses the next key. So never more than one key per hand.
But the editor (and browser and other programs) achieves that in the more traditional way of being modal.
🤯 very cool! I don’t need it, but I’ll try to find an excuse to use the idea somewhere!
FWIW, I’ve recently reached the next stage of my laptops keyboard bliss when I remapped:
That is, just move the modifiers one row up (key acts as a modifier when held, and as a key when pressed). I use kanata to do the remapping.
One thing that surprised me when playing with using normal keys as modifiers is that on some keyboards that is impossible. On some keyboards modifier keys are electronically different from normal keys and the keyboard won’t emit key down events if you’re already holding down another normal key. I really like the idea with spacemacs and devilmode that you don’t have to hold two keys at once at all. That the entire interaction is just a linear stream of keypresses. It’s just very easy to reason about.
This is called key rollover, how many keys you can press and release in order and get all the events properly recognised. Modifiers usually have to support pretty large rollover; alphanumerics are numerous and often put into a matrix of connections where you cannot distinguish all combos, but usually two keys at once work anyway (fast typing requires pretty high rollover support for at least some letter sequences). But three letter keys not adjacent in any normal word… low-end keyboards might be unhappy with this.
It used to be a big problem for games, where you’d have two people using opposite ends of the keyboard in a split-screen multiplayer (I guess computers are cheap enough now that this doesn’t happen so much?). I remember having a keyboard where the scanning was clearly left-to-right, because the person using the left side of the keyboard could prevent the person using the right from performing critical actions by pressing too many keys.
Ok, I am test driving this in VS Code and I think I love this very much, especially in combination with https://marketplace.visualstudio.com/items?itemName=VSpaceCode.whichkey.
However, the devil can do this:
Is there some VS Code extension which allows such repeatable keys?
Thanks for sharing Kanata! I’ve been holding off on investing in KMonad because several of my devices have unusual architectures and I didn’t find GHC easy to bootstrap, but Rust will be easier to go all in on– the config is more valuable the more consistently I can use it.
This is cool! I don’t need it, because I’m now using a keyboard with modifiers on the thumbs (Atreus), but I could definitely see myself using it if I weren’t. What I had been using was remapping some dual purpose keys with kmonad.
Interesting way to get away from those painful key combinations.
My entire computer setup avoids those almost entirely. When there is one, I can press it with the thumb on one hand (thanks to the keyboardio layout), while the other hand presses the next key. So never more than one key per hand.
But the editor (and browser and other programs) achieves that in the more traditional way of being modal.