Food for thought.
(QWERTY does well enough if you move a Control key back where it belongs by doing away with the useless Caps Lock key. Looking at Workman, you'd need to do away with a redundant Backspace (???) key to get the same effect, but all of the other meta keys and punctuation look sane.)
In grad school, I did a lot of work on the Quadratic Assignment Problem (https://en.wikipedia.org/wiki/Quadratic_assignment_problem). If you model that "key reachability" metric as two-key sequence difficulty instead, you actually get a QAP instance to solve. I built a little toy project that would look at the source text of my dissertation in LaTeX as well as the accompanying C++ source code for bigram frequencies, and I mapped out a flow matrix manually in a similar way to the author here, but including that successive keypress difficulty, and ran my multiobjective QAP solver to generate a range of keyboards optimized for my specific dissertation work.
I did this as a fun little gimmick as part of a sort of "ignobels" within my department, so the results weren't really a thing you could use. To generate a usable keyboard layout, you need to also include a ton of heuristics for things like "put all the number keys together" and the idea that you can treat "a" and "A" as the same letter, but "2" and "@" may make sense to separate, none of which I really properly handled. But I think with some work one could actually formalize the problem of finding a real layout for normal people to use.
I did the test, my ideal layout is Colemak. So I programmed my keyboard with that layout. It took me a while to learn it.
Other factors to consider would be time-to-learn, hot-key placement, device compatibility and general flexibility. I put my own Python code in your test and workman did much better. Be sure to use several samples when making a determination.
In most of my tests, Colemak was a consistent winner by a small margin.
There is no magical layout that can eliminate the tension you’re artificially creating by stretching your fingers into unnatural positions instead of just moving the entire hand.
What healthy typing looks like (on a horrible keyboard no less): https://www.youtube.com/watch?v=Vs2B5XRtr6k
Imagine you tried playing a piano the way you type on your keyboard: https://www.youtube.com/watch?v=InqmH-o1cX0
The pain is letting you know you’re doing something wrong.
The most important fixes imo are:
- Neutral angle wrists (elbows flared so that it's a straight line from the elbow to the fingertips, i.e. no wrist "yaw")
- Monitor at eye-level
- Forearms parallel to the ground
- Feet planted on the floor
afaik slouching takes pressure of the lumbar vertebrae, but neither that nor sitting up straight is uncomfortable for me, and I arbitrarily alternate between the two. Also, arms resting on the desk doesn't bother me.
I find it nearly impossible to work on a laptop for any length of time, mostly because of the monitor-at-eye-level requirement. Speaking of, an adjustable monitor arm is the best investment you can make. I use the Humanscale M2.
> Speaking of, an adjustable monitor arm is the best investment you can make. I use the Humanscale M2.
I have my monitor on top of an entire hifi set and an old VHS player. But yeah an arm seems more sensible ;)
Where one places the support is important, but I've seen conflicting statements whether lifting your arms would be beneficial.
I have not yet seen the piano video but a piano is much bigger than a keyboard and I see tons of reasons as to why whatever works for one doesn't necessarily have to work for the other.
Evolutionarily it would't make sense if the human body wasn't 'self-contained' - requiring no external tools to work comfortably.
Your normal posture is to have the arms relaxed, or with a moderate amount of tension by keeping them lifted a reasonable amount of time, and variating the posture as well.
A well-developed hunter/gatherer would definitely have arms strong enough to type this way without getting particularly tired.
So what we modern humans ought to do is to keep the arms strong (by exercising), and to not compensate tiredness with artificial mechanisms.
I'm aware that this argumentation is somewhat dubious (and probably I failed to express it properly), but as a simpler experience report, I've worked this way 4+ years without trouble. First days will suck though.
My favorite chair so far is still the Steelcase Criterion.
Trying to support your arms while typing would create tremendous tension in your shoulders. I was always confused by the classic typist advice to have no arm rests.
No, just rest your palms on desk or legs when not typing. The point is to just not glue them when you are actually typing.
I was experiencing pretty bad pain from typing on a qwerty layout. Qwerty has high percentage of combinations that require jumping rows or contorting your hand.
I switched to Colemak (which follows a similar philosophy as Workman) and my hands have significantly too less pain. I still get some from being a heavy typer, but I no longer experience the worst of the paint.
I know you can't prove anything with one word, but the word nice is a great example.
On qwerty, "n-i" forces an uncomfortable twist with the pointer and middle finger. "c-e" forces a jump of the home row.
On colemak, "n", "i", and "e" are all on the home row with the same hand. "c" is on the opposite hand in the lower row. There's no uncomfortable twisting.
You find these types of improvements across nearly all of the intentional layout designs like drovak, colemak, and workman. Regardless of "proper" posture, they do minimize a lot of difficult typing procedures.
Look at the stats on this comment alone: http://patorjk.com/keyboard-layout-analyzer/#/load/1mwrX5bH
And my point is it doesn’t matter when your wrist is not glued to your desk. You don’t need to contort anything if your hand is free and relaxed over the keys. If something is far away, I just move my entire hand over there.
Look, here’s me typing “nice” using two different methods:
(I’m just typing “hello world” at the end)
> I still get some [pain] from being a heavy typer, but I no longer experience the worst of the pain.
In the second example you can see my hands are completely relaxed, I’m not “contorting” anything, I could type like that for hours. Zero pain. None. Nada. Nil.
Colemak, Dvorak, etc, they’re all optimizing how to do least damage with the horrible typing method that no one ought to use in the first place.
I’m not a homerow-guy even, but try to {foo:(x,y)=>(x[y]+1)} and I bet this method will feel the struggle.
Here's a quick demo of me typing some special characters with my natural typing position: https://streamable.com/tavn6
For something like $ or # I’ll use my right pinky for shift and the left hand, which I can’t really demo with one hand holding camera. The right side is easily reachable if you don’t glue your wrist—try it.
EDIT: Here’a the full thing with spaces: https://streamable.com/h0bpr
But... references? (It does make sense, though)
BTW, healthy writing (according to Palmer) is very similar: you rest your elbow and little finger on the desk and write by floating your whole hand above in a very relaxed way.
This is the height you need for your monitor to not encourage slouching: https://www.youtube.com/watch?v=S467Ck8uIsc . You also need to touch type which not everyone can. As a result most office workers have terrible postures.
I bet you would run into trouble just trying to find enough people that can both touch type and have good enough posture to do such study. But I would start with piano players.
But you could even type on this crap and be comfortable, because posture fixes the problem instead of masking it, like that Kinesis.
1. I would rest my palms as I typed. This turned out to be a major source of pain. Retraining myself to "float" my hands over the keyboard was a massive improvement.
2. My desk was too high / my chair was too low. Setting up my desk so that my keyboard is as close to my lap as possible was the next big improvement. When in a seated position, my hands are very comfortable when resting on my thighs. Putting my keyboard in a drawer that is just above my thighs helped a lot.
3. I also switched to a trackpad instead of a mount and a split keyboard. I found this allowed a more comfortable angle for my hands and less temptation to rest my wrist while mousing.
After making these changes, I have been pain free for over 10 years.
Layer 4 (right alt or the key to the right of left shift) is also pretty cool, it has lots of navigation keys and a numblock in convenient positions, but I somehow never got around to learning that. All the layers are shown on https://neo-layout.org/ (in German, but that doesn't matter for the pictures).
With a Trackpoint (Thinkpad USB keyboard), this means that my hands don't have to leave the home row at all. It's super convenient.
Why would you use the right shift here?? I shift with the left pinky in this situation and it feels fine.
Colemak is just fine, and it's already included in most operating systems.
But it is. Hitting the left shift in the scenario described literally just takes pulling the left pinky down.
I am using the Dvorak layout, but I think that the main reason it is so comfortable to use is the ortho-linear layout of the keys and that it is totally flat.
I would recommend anybody with RSI to test first ortho-linear physical layout of the keys with your standard Qwerty or Azerty or whatever you use right now before moving to something else.
Current mainstream keyboards design is fundamentally flawed [1] and IMO obsolete because of [4].
Hopefully there is science [2] and much alternatives to choose from [3]
[1] http://xahlee.info/kbd/keyboard_problems.html
[2] http://xahlee.info/kbd/ergonomic_keyboard_science.html
You can turn a few of those alternatives to vertical. I've been using a QWERTY vertical keyboard since 2009 and which I had some wrist pains before, not since.
Current setup https://geekhack.org/index.php?topic=79810.0
I am not sure if I only know this from playing piano and guitar, but it is surprisingly easy to strengthen those fingers. The exercise is very simple and all it takes is a couple minutes a day, it can be done anywhere (even better if you have a piano or guitar!):
1. Lay your fingers on a table, and curl them like you were at a keyboard or holding a small ball in your hand.
2. Keeping all of your other fingers on the table, lift your weaker finger, typically the ring as high as you possibly can without causing the other fingers to rise.
3. Bring it down as hard as you comfortably can.
4. Repeat 1-3 until you can lift higher and bring it down harder without affecting the other fingers.
One thing that almost never comes up in these discussions is the need to change or rotate keyboards. I love the Kinesis but eventually get tired of it, and am happy to move to the TEK, which then starts to bother me until I move to the TypeMatrix, etc. Every keyboard and layout improves some part of typing while exacerbating another. Switching keeps you nimble. I suspect it's like bicycles, of which there are infinite variations. If one bike hurts your wrists and another hurts your legs and another bothers your neck, switch every few rides.
[0] http://therandymon.com/index.php?/archives/167-Typing-in-Sty... [1] http://therandymon.com/index.php?/archives/290-The-Truly-Erg... [2] http://therandymon.com/index.php?/archives/295-The-TypeMatri... [3] http://therandymon.com/index.php?/archives/304-Review-of-the...
Recently, I ordered the Ultimate Hacker’s Keyboard because I think typing is quite important for a programmer, especially if you consider health as the author of this article does. I’m a little bit weary of not using QWERTY because of the high cost of switching, so if I did switch, I’d want to select a layout that was basically perfect for me long-term (which sounds very tough to do).
Unless you're programming in something very symbol-heavy, even by programming language standards, I suspect you'll find that it's hard for any symbol (other than space) to break into the top-10 non-space symbols; not impossible, but hard. I just did a 200KB perl file here, and the top 12 symbols are space, e, a, r, s, i, t, o, n, newline, l, and d. The first symbol, underscore, shows up in position 13, then it's u, then finally, $. Underscore is less than half as popular as the e. As you may guess, the naming convention of this code is mostly underscore_based. If this code was camelcase instead, you'd have to go down to position 14 with $.
The other problem is that languages will significant differ, so you can't really create "a programming layout". If you did nothing but type Perl, that list of symbols may suggest that perhaps $ should be on the u or i key or something valuable like that, but if you run the same process over your C# you're not going to see $ popping up nearly as high and now you've got a huge wasted key. Parentheses are in the 22nd and 23rd slot on this count, the only thing that I would be comfortable saying is really generic. (And then there's still Haskell, where they are used, but much, much less often.)
It takes a few weeks to learn a layout that is radically different from what you used before, and sadly the most efficient way to switch is to just dive in and use it all the time, even if it's painfully slow and annoying. I switched when I was in university, but it might be difficult to do when there's someone paying you for things that require typing.
Go ahead and learn a different layout on a fancy keyboard, while keeping a stock standard layout (not even remapping Caps Lock to anything!) on a laptop keyboard, and I understand you’ll have little-to-no trouble with it.
(I’m only early on in this process myself, but have been told this by others and it makes sense to me. As one small example I have experienced, I automatically switch to using Cmd for shortcuts instead of Ctrl with no thought, as soon as I’m faced with an Apple keyboard—regardless of the OS, which has tripped me up a couple of times!)
One day, I discovered the one Sun machine that had a Sun-manufactured keyboard in the customary layout. I was incapable of functioning because I expected it to be in the Sun layout. I had to switch it for a Sun-layout keyboard so I could get some work done.
As an aside, I decided I prefer the Sun layout, and so I've remapped the 6 or so keys via software on basically every computer I've used since. The only issue is the `~ key, which ends up on [ESC], since I haven't yet found a keyboard that has the [backspace] key split in two.
In practice, this isn't much of an annoyance to me. My wife, however goes nuts any time she needs to use the computer for "just a second" and doesn't log me out. I've since gotten better at switching, and if I have to type something when she's logged in, I usually flip the switch pretty quickly.
It let's you software remap keys. I've entirely disabled my caps locks key (I barely ever used it) and turned it into a combo esc/modifier key.
Holding caps plus a home row key types the corresponding symbol (e.g. "a" is "!", and ";" is ")". I also have u,i,o,p mapped to arrow keys (similar to vim). Then some misc. combos for things I commonly program (e.g. caps + m = "() => {}" - very helpful for JS)
Similar to programming languages, after learning a second keyboard layout the switching cost will be much lower for each additional one.
I switched from QWERTZ (German) to QWERTY (US/international), because it is already much better for programming, and am currently trying out Colemak, and it was much easier to adopt (=get to a reasonable workable speed).
In my opinion, the best setup would be an ortholinear keyboard with not many keys and multiple layers (let's say something like a Planck), but instead of using key combinations to change layers, use pedals.
I know there has been some attempts to do something like this, but I've never tried it. Has anyone here used a similar setup?
Same thing for ergonomic keyboards - they can be a dangerous sign that you're focusing on the wrong thing, on micro-optimizations rather than on the root cause.
I have no guide to share unfortunately but I'd recommend observing one's movements, and try to figure out what's the most natural way of doing a given thing.
Also, regardless of what you do, typing many hours will tire you / be painful. Act accordingly.
I disagree. It depends on the keyboard, of course. For example, the Microsoft Natural I had in the 90s was a complete POS that exacerbated my tendinitis. It was a cheap sliding-post keyboard. If your finger hit anywhere but dead-on, the resistance was tremendous.
A good mechanical keyboard will provide perfectly consistent resistance, which will be a huge improvement over a poorly designed, cheaper keyboard.
A more advanced option like the Kinesis or Ergodox completely eliminates many of the fundamental problems with traditional keyboards that create pain in the first place.
There is probably not a definitive answer for which one is better ("better" would have to be defined for this), so go ahead, read a bit about them and do your choice. Be aware though that once you have choose one, you will be stuck with it for a looong time, because switching layout is hard. You have to remap all your brain an muscle memory before being able to reach your previous efficiency. Spoiler alert: it takes months to years for this.
PS: For french speaking people, you may want to have a look at https://bepo.fr
It definitely takes several months to achieve a decent speed on a new layout, but I wouldn't say years. I did a full switch after deciding I wanted to learn neo. That means that from that day on, I didn't use qwertz at all, and forced myself to type everything in neo. Also, don't use stickers. They teach you to look at the keyboard. Put a printout of the layout next to your keyboard and look at that. Otherwise you'll just form bad habits. It took me around a month to get to a point where my neo typing speed was reasonable, and maybe another month until I had managed to get to the point where it wasn't annoying any more. Of course I was in university back then, and not paid to develop software.
I think speed it no so much important when coding, but don't have to think about how and what you have to type.
In result they don't seem to understand that the dvorak layout is optimized for alternation between hands (they do mention this) and inward rolling motion (they don't seem to understand this). You can really feel this when typing, and it makes typing downright enjoyable.
I wouldn't be surprised if much of the added distance relative to colemak and workman is probably reaching for the "i" with the left pointer finger. These are the easiest movements to make repeatedly, and in my experience the home row horizontal movement that they try to optimize out of workman isn't really important.
People should be free and encouraged to make their own layouts to beat RSI. But, scientific measurement of what is better seems basically impossible...
One thing I like about Colemak is that it is close enough to QWERTY that I can still type on QWERTY by looking at the keys and not look like a complete fool. Dvorak is so different that it completely rewires the brain and it's very difficult to switch between it and QWERTY. That's been my experience at least.
I find it surprising that much of the current effort in keyboard layouts is in finding things that are better than QWERTY but similar enough to it to not be scary. I am completely unmotivated by this. If someone could convince me that their layout was a kind of super-Dvorak, and scientifically enhanced the same features that I enjoy about it then I would try it out in a heartbeat.
True; Dvorak seems to always score worse on tests that don't weight distance by ease.
do whatever you want with layouts, macros and layers without any need for software or driver on the host machine
- navigation layer: arrow keys and tab navigation on the home row.
- number and symbol layer: numbers on the home row, function keys one row above and punctuation one row below.
Its still a work in progress but I think it has helped me.
[1] https://configure.ergodox-ez.com/keyboard_layouts/zjdlgd/edi...
If anyone would like to give QFMLWY a go, let me know. I have scripts to install it on Win, Mac and Ubuntu.
A lot of keyboard layout enthusiasts (including the linked article) make this claim, but is there any evidence for it? As someone who as trained in various arts that use the hand, I've always been told by all of my teachers that the pinky is the strongest finger.
This article rates the first two fingers "very strong" and "strong", while ring and pinky are both "weak", yet a ring/pinky pull-up doesn't seem any more difficult than an index/middle pull-up. Strong enough to lift my body weight, but too weak to press keys on a modern keyboard? I'm skeptical.
The most believable answer I've found so far, as to the relative strength of the fingers, is [1], which is a multi-faceted "it depends". There's no standard way to measure strength, and there are many different kinds of strength a finger can exert. How exactly are we defining "finger strength" for typing, and how are we measuring it?
[1] https://100hourboard.org/questions/52873/
The Dvorak layout has many advantages (I've been using it for over 25 years myself) but the idea that it's better because it uses your "stronger" fingers is just a canard.
One of the disadvantages of the Dvorak layout are the placement of the commonly used ZXCV keys, and he has a layout called QGMLWY where ZXCV are in the same place as QWERTY. I've gotten around the Dvorak issues using mice with several buttons, but it occasionally bugs out, so I'd recommend trying to keep ZXCV in the same place.
Choose a set of tasks -> plug into an optimiser -> get a keyboard mapping tuned to the task you are doing. There'd be people who find that useful. The maths isn't at all hard, the data is there.
EDIT Maybe it would be a fun project to take something like top 100 C libraries from github and build up an optimised keyboard layout for C coding. It is an interesting idea.
- if the author of the article is moving his fingers laterally, probably he is doing something wrong (must use other fingers instead of moving, this is typewriting). Independent of the layout, this cannot happen.
- I believe that there is no silver bullet for keyboard layout if you write code and text, more than one language, statistics of your typing are unique for the languages you currently use.
The biggest annoyances for me with regular keyboards are that caps lock is a wasted key in a prime position and the F keys are too far out of the way.
These were solved by the HHKB and that's what I'll be using for the foreseeable future.
The arrow keys are not even shown on the layout.
And the selection of prose corpus (es?) is again not related to programming [Tom Sawyer].
We need underscores, braces, semicolon, context menu.
Perhaps a better metric would be the hoc compiler source from The Unix Programming Environment.
From the dawn of time (1/1/1970) or perhaps even earlier, programmers have used home row keys for those actions. In vim for example we map h,j,k,l and so on for such movements...
> The arrow keys are not even shown on the layout
Nothing that learning Vim keybindings can't solve.
The pain of my hands, especially on the weakest fingers, just ended. The sad is that there are no available keyboards to buy in my country, so I always need to manually change and 'fix' my new laptops, risking to break it, and I always do it very worried and careful.
https://github.com/edpichler/Apple-Dvorak-on-Windows
I wish some movement of better layouts start, so people would engage, and the market would start to produce laptops coming ready for our use.
As a programmer you type those symbols way more often than digits. It's easy to get used to and it can make a difference if you have RSI issues.
It is common for me to type thnak you for exemple Should I be using an layout with low hand switching? Dvorak? Thanks
It is common for me to type thnak you for exemple...
I guess i should look at a layout with little hand alternance, Dvorak?
Thanks