Making a keyboard layout
jntrnr.com
jntrnr.com
(Once you’re comfortable and not mixing them them up, if you still want more, swap J and O, then F and T, then D and A, then G and N. At that point it’s probably not worth making any more swaps, but if you want to continue you can read the article I got this information from: http://mkweb.bcgsc.ca/carpalx/?partial_optimization)
I ended up going cold turkey Colemak, but for those who are interested in learning a new layout Tarmak seems like an interesting way to make gradual progress without totally decimating your typing speed. Plus, it leads into a well-established layout instead of resulting in a bespoke layout you have to work on yourself.
semicolon/colon (if your language isn’t semicolon terminated, you probably type colon way more)
hyphen/underscore (if your language doesn’t have arrow functions or kebab casing, you probably type underscore a lot more)
singlequote/doublequote (the preeminent style guide for your language probably has an opinion on which quote character to use; that should be your non-shift character)
pipe/backslash (pipe operators are heavily used in some languages, but escaping characters is common too)
The first shift swap I tried was actually tilde/backtick, but I didn’t like it - turns out I use string templating in JS more often than I need to reference the home directory.
Outside of direct swaps, one related change I have made recently is using Karabiner to set up custom commands for “modifier key pressed and released alone”. Tap left shift by itself for an opening parenthesis, right shift for closing parenthesis. Command does bracket and option does braces in a similar fashion. I’m liking it so far, once I get familiar enough that I’m not using the old way I’ll remap the original [/{ and ]/} keys to some other symbols - whichever of %^*#!@$& I use most often, probably.
In general though I would highly encourage anyone who types for a living to consider making incremental key swaps instead of changing keyboard layouts. For Mac there is Ukelele (GUI, generates new layout file your OS uses) or Karabiner (config file, daemon intercepts keystrokes and carries out substitutions - more power but you have to be okay with “intercepts keystrokes”). For Linux the functionality is there with localectl and loadkeys, and there’s probably many utilities built on top of that. For Windows there is SharpKeys, PowerToys, and AutoHotKeys. (I don’t use Linux or Windows day to day, there may be better options here).
For example, everyone makes typos and corrects them with a backspace or mod+backspace for the whole word, but this is never accounted for, so a very frequent Backspace key is very far away. Using a post-typo text corpus ignores this reality
Or allowing home row mods in a layout, what would be the algorithmic maximum across all the typing metrics?
Or allowing numbers to be in play as well, maybe hiding then behind a modifier, but in the home row or aligned in a numpad-like way on under your right hand
Or would it be better to type capitalized letters with a one-tap Shift or with a home row mod Shift? Or maybe a quick double tap on the same letter is more efficient?
Given the complexity of switching to a new layout, there is no great reason to keep all the non-alpha mistakes of the old qwerty design, the algorithms should run free from those limitations to get us to the future perfection
But then dvorak is obviously not the best layout for this since it wasn't designed with all of that in mind. And neither were the home row mods themselves, for example, maybe only Shift is useful in the home row, and the others aren't used frequently enough (or maybe it's better to have numpad-mod key on the home row instead of the Windows key).
So I guess the focus of the layout collaboration effort could be on improving the algo/data, but instead we get a bunch of new layouts that only tackle a small(er)(and different) part of the problem without much of an improvement over he previous solutions (and, more importantly, with no good way to compare them). That would only leave you with the black magic of tweaking algo weights in the end :-)
P.S. There is also https://github.com/jtroo/kanata alternative to kmonad And re. homerow mod keys, it seems that there is an even better approach not relying on timings (which I think are impossible to resolve with full accuracy, though with per-key timings you can get pretty close), but that's not implementable within Karabiner, so someone had a homebrew Swift solution I haven't tried
This! I use a variant of the classic typematrix layout [0], where there are two huge backspace keys right in the middle of the keyboard, one for each index finger. Below them, huge enter and tab keys (that one, mapped to ESC inside vim).
[0] https://www.google.com/search?q=typematrix+2020&tbm=isch
I also make the spacebar and key to the right of the spacebar (usually Alt) to a switch layers when held down with a thumb. This turns the left side of the board into a number [3] and symbol [4] like pad.
Advantage I find is it's much less motion and finger stress and is easily replicated on any keyboard that supports QMK while not QWERTY specific.
1. https://qmk.github.io/qmk_mkdocs/master/en/feature_combo/
2. https://github.com/ecliptik/qmk_firmware/blob/d79931185c2315...
3. https://github.com/ecliptik/qmk_firmware/blob/d79931185c2315...
4. https://github.com/ecliptik/qmk_firmware/blob/d79931185c2315...
Also, a less Mac-specific symbol than “⌘” for the Meta/Command key might be “◇” (25C7, WHITE DIAMOND), which has been used ever since the old Sun keyboards.
I don't think it very much matters what the "proper" symbol is if no one uses it and almost no one knows about it. Symbols are supposed to be convey meaning and part of what lends that meaning to a symbol is actual usage. Apple has successfully done that with at least several of these symbols [1], which is quite evident in that you knew what it meant and so do many others, while I've never seen the "standard" being used in literally any context.
Obviously I alone do not make up the general consensus, and perhaps in certain fields the usage of these symbols is widespread, but if it were the general consensus, people would actually be using these symbols instead of the ones you're suggesting aren't "proper."
[1] https://support.apple.com/guide/mac-help/what-are-those-symb...
Well, they used the ⎇ symbol for the “Alt” key, which is also very rare, in my experience. But it is the standardized symbol. So I thought I’d contribute information about what the standardized symbols are, in the cases where other symbols were used.
You sound a bit like a language descriptivist, arguing that any word or spelling is OK so long as it is understood. I personally prefer standardized spelling and words being a bit more strict in their definitions. And, similarly, I give some weight to an ISO standard for keybord symbols, since such a standard does exist (especially when the author actually used one of those symbols already).
I am also loath to use company-specific words or symbols; I prefer neutral terms which does not have quite as much drift. I.e. I try not to “Google” or “Xerox” things. Likewise, I would avoid using a keyboard symbol exclusively used by Apple, since another symbol exists which is used by others.
No, they used the ⌥ symbol, which is the option/alt key symbol also established by Apple. All of the symbols they used for their keyboard layout are Apple's symbols for a particular key.
> I personally prefer standardized spelling and words being a bit more strict in their definitions.
In order for something to be a standard it actually has to be used. A dictionary doesn't make up its own words then add it to the dictionary, then tries to tell everyone that's what they have to use. They add words that they find to be broadly used by the general public. Countries like France try to control this sort of thing, but I don't think it works all that well. People ultimately decide the language they use, especially when it comes to new phenomena.
> And, similarly, I give some weight to an ISO standard for keybord symbols, since such a standard does exist (especially when the author actually used one of those symbols already).
The author is using the symbols established by Apple. Any overlap with the ISO standard is coincidence.
> I am also loath to use company-specific words or symbols
What symbols aren't company-specific when it comes to symbols on keyboards? You even suggested in your original post to use "◇" as one of the symbols which is, shocker, company-specific. I've at least used a keyboard with such a symbol on it, but it is not used at all on keyboards today. The symbol they use in the ISO spec you're pointing towards is the "⌘." Are you sure you don't just have a distaste for Apple?
> Likewise, I would avoid using a keyboard symbol exclusively used by Apple, since another symbol exists which is used by others.
It's not used by others, though. It's not used on MacOS, Windows, Linux, or BSD in any of its menus. It's not printed on keyboards. It's not known by anyone but someone looking up ISO standards for keyboard layouts, which isn't even the established standard for keyboard layouts in a lot of the world!
Fair enough; I did not notice the difference.
> which is, shocker, company-specific.
I would not have proposed it if I thought it was.
> It's not printed on keyboards.
It’s printed on some keyboards: https://hhkeyboard.us/hhkb/pro-classic/sku/cg01000-296201
Regardless, that’s not even what the article is about. The modifier keys have not been rearranged, just the characters.
Switching to a different layout has a lot of complications:
- Steep learning curve: it might take months or even years to reach typing speeds of QWERTY
- Low software support: it's tricky to switch to a custom layout everywhere Some apps and games might read physical keycodes and the only workaround is to use the keyboard with custom firmware (e.g. QMK[1])
If you're willing to improve keyboard ergonomics, check out ergonomic mechanical keyboards. Most popular row-staggered layout is horrible for hand ergonomics and it only can be fixed with a keyboard that has a different physical key layout. r/ErgoMechKeyboards[2] is a good starting point.
[1]: https://docs.qmk.fm
[2]: https://www.reddit.com/r/ErgoMechKeyboards/wiki/resources
Simply not true.
> it's not like I think about letters anyway
is exactly why the following is of little use and is a design mistake for heavily used keybinds
>Almost every key in vim has a meaning, most of them are kinda semantic (webdrtfi...),
Which unfortunately has persisted for ages reminding us yet again how defaults matter :(
(and due to the high frequency of their use the arrow keys shouldn't require you to move a finger off the home keys, so jkl; is better than hjkl; (in qwerty))
Not to mention all the other issues with getting your new fancy layout to work in every operating system and app and then being really thrown when you try to type on any other "normal" person's keyboard for a minute.
It's already hard enough spending 15 minutes in every new computer game to change the default WASD keybinds to the superior ESDF.
(role of Fn keys, placement of Fn switch key, shape of Enter, size and positioning of cursor keys, placement of simple symbols like slash/backslash, greater/smaller, @, #, [, ], `, etc., availability and placement of Ins/Del/Home/End, all can change just a bit with a new computer/keyboard system. All this without 'creative' regrouping or arrangement of the physical keys itself (like MS ergonomic keyboard). If we add the complication of shortcuts where keyboard plays an essential role and which changes constantly from one approach to an other inside and accross software (not improving! just changing.) we can see that the problem is too big already, no need to aggravate the situation further along questionable and marginal efficiency claims. There are other parts of personal computing that can use improvements if someone is bored.)
---
I think most of the efficiency functions that these kinds of efforts tend to optimize for miss the most important factor.
I've thought about this a fair amount drawing on my experience switching to dvorak 15 or so years ago and not getting the typing speed increase I was hoping for, and also from having a close friend with a PhD in piano performance. There's one thing that I've never seen taken into account by these kind of keyboard layout optimization efforts that pianists understand is very important, and that is runs. Most people seem to focus on individual finger movements, a meaningful component to be sure. But I think there's still a lot that could be gained from optimizing a layout for runs. Runs are sequences where the fingers are depressed in sequential order across the hand (possibly skipping one or more fingers). They can be played (typed) not so much by isolating individual finger movements, but by getting the hand into the correct shape in a single movement and then actually depressing keys with a single rotation of the arm/hand/wrist.
The interesting thing about optimizing for runs is that it's directly opposed to the alternating hand optimization that the dvorak layout uses. I would love to see some exploration in this area and think it could yield meaningful speedups. Unfortunately, getting proficient with a layout takes a long enough time that I'm not super likely to take the project on myself.
He very much considers this important factor as the critical component of the layout he describes.
I’m currently working on a hand-wired board. Since you mention pcb development, I don’t feel that hand-wiring is too much work to mention. The soldering and electronics work is trivial (nothing small). I was attracted because it allows me to move the customization into the 3rd dimension with a Dactyl-manuform clone (I’ve actually hacked some closure together).
I’ll make sure to post where appropriate once I’m finished. I’m basically hand-wiring a corne (CRKBD, so there are guides available) only I’ve created a custom 3D manifold fit to my hand.
Having all the numbers as a toggleable numpad (but not really numpad because numpad is archaic and dumb) under the left hand has been so good. I'm never going back.
I use this layout:
1 2 3
0 4 5 6
7 8 9Having the 0 on the thumb is quite a good choice though. As long as one doesn't have to move outside +-1 of the home row of keys (like one has to with numpad).
[0]: https://software.sil.org/ukelele/ [1]: https://www.microsoft.com/en-us/download/details.aspx?id=102...
I also forked a tool of github to evaluate layouts considering multiple languages (ex: 40% french 60% english) https://github.com/florianfmmartin/kb-layout-evaluation
But i have not updated it recently, take a look at original repo also ;)
"Miryoku is an ergonomic, minimal, orthogonal, and universal keyboard layout."
Not wrong there my Kinesis advantage cost more to ship to nz than to buy. It's still cheaper than buying from the local importer.
Just use Dvorak. It's well proven to minimize finger travel.
Also it's not beneficial to trade away regular shorter rest periods for a longer rest period. This is true for many activities that can cause RSI. A gentle alternation of activity and rest is recommended instead of long strikes.
Colemak fixes this issue completely by keeping the Z,X,C,V the same as in QWERTY
The energy you give to the string is hundreds of times more than the energy you give to the kbd (do not consider this as an exaggeration because I'm a bass player). Also lateral stretching of your pointer finger is something easy to train, I used to have that experience while learning a piano playing.
I don't understand why do anybody invent a new kbd layout after Dvorak's work? He gifted us a beautiful set of aoeui layouts. Just get used to it and help with this information to your friends who are willing to get rid of Qwerty, that's it.
I am fond of keyboard layouts so I beg you to name any works proving your point. Because Colemak and Workman are layouts for Ctrl-C Ctrl-V folks while August Dvorak was not bonded with need to follow somebody's muscular memory.
I use DVORAK on my phone however because with two finger thumb typing and no ability to roll your letters , Having the Vowels under One thumb is more efficient.