Hacker News new | past | comments | ask | show | jobs | submit login
The Workman Keyboard Layout Philosophy (2010) (workmanlayout.org)
122 points by caustic on Aug 22, 2018 | hide | past | favorite | 161 comments



He uses the wrong test. Testing on "The Adventures of Sherlock Holmes" is meaningless for developpers: tests should be performed using real usages like "source code of linux kernel" or "mailing list of linux kernel" to have a better balance between code and text.


Even better, it should be performed using a recorded vim session, rather than a full file. The keystrokes you use while editing are not the same as those that end up in the finished file.


But this brings up that some Vim hotkeys are more positional than mnemonic (J-down, K-up), while others are more mnemonic than positional (I-insert, X-exterminate(?)).

Food for thought.


This is why I believe that qwerty is the best layout. All applications have designed all shortcuts to be sensible on it. Any other layout is just going to be a disaster and negate any benefits and more during actual use.

You can of course use whatever layout you like and then while ctrl/alt/meta is pressed it switches to qwerty, doesn't save vim users though (or other applications where shortcuts don't need to be prefixed).

I'm not convinced switching from qwerty is that beneficial, I believe (but have not yet tried it) an orthogonal keyboard will do more than any layout will. But I admit that I don't have experience to back that up.


I've been using dvorak for more than a decade now. Yes, shortcuts are sometimes a bit annoying, but qwerty is so bad, that dvorak is still worth it.


I've been using Dvorak for ~15 years now and the keyboard shortcuts don't bother me. For example, when Dvorak Ctrl+X/C/V is translated to QWERTY, they are in the positions Ctrl+B/I/(period). For shortcuts like Ctrl+C in Dvorak (Ctrl+I in QWERTY), I put my left thumb on Right Ctrl and my left pinky on the letter key.

Two minor problems, though: In Dvorak, V is immediately beside W. Ctrl+V means paste, but Ctrl+W means close window, so care is needed. And, any keyboard that lack Right Ctrl (e.g. the Microsoft Surface series) is an abomination.


The idea would be to optimize the keyboard around English (which you can't remap,) and then to optimize your editor keybindings around the keyboard (which are easy to remap.)


Many applications (vast majority?) don't support remapping keybindings and it is a ton of work.

Optimizing your layout for English is not necessarily ideal for anyone writing in more than one language.

edit: I guess the above can be manageable (with compromises), but in my opinion it does take away much of the appeal with a new layout.


Hjkl turn into something strange with colemak but they are still vaguely directional and I have not rebound any vim hotkeys.


This is why I believe that Dvorak is the best layout. J/K and H/L retain their relative positions.


Positional key layout only matters pedagogically. I type dvorak and use emacs + evil (vim keybindings). To maintain the positional correspondence I'd have to swap bindings around and make my setup even weirder, so I just learned j=down, k=up, etc. Muscle memory doesn't care about rhyme or reason.


I think x is for cut because it looks like a pair of scissors. vim :help does not clear this up.


I wonder how well it would do with Emacs and all of the key chording.

(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.)


You can (and should) alter the layout for command mode so as not to destroy years of muscle-memory.


There's another issue as well. His mapping of difficulty reaching a key isn't really the whole picture. On a conventional QWERTY layout, neither the E nor the C keys are especially hard to reach, but if you had to frequently type them successively, that would be terrible. What matters is not just where a key is in relation to your hands, but also where two keys are in relation to one other.

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.


Then try this http://patorjk.com/keyboard-layout-analyzer/ to find the best layout for you.

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.


Very much this. This is the results for my personal bread and butter, python and SQL. Workman tested very much mid-pack.

http://patorjk.com/keyboard-layout-analyzer/#/load/FKcXzlQ2


Yes, but mid-pack among alternate layouts. Qwerty doesn't even show up. The difference between them is minimal compared with sticking with qwerty.

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.


Agreed, a complete text is quite a different thing from editing text. Recording your typing session would be interesting, it would be interesting to see an analysis on where common typos keep happening.


Sit up straight (fix your posture) and stop gluing your wrists to the desk or wrist “support” and the layout doesn’t matter unless you’re going for typing records.

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.


Agree with you in general - that adjusting your body, and not your keyboard, is the fix - but not necessarily the specifics.

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.


I take no issue with anything on that list. The pressure on lumbar is because of the positioning of your pelvis[1].

> 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 ;)

[1] https://i.imgur.com/mp9uqLb.jpg


Agree - that image looks painful, but I'd term that a "hunch" more than a "slouch" (not sure if ergonomics makes a distinction between the two.)

My "slouch" is more of a reclining position, which I find quite comfortable.


> My "slouch" is more of a reclining position, which I find quite comfortable.

Reclining is fine for relaxing but it’s not an ideal position for typing/work. For one thing you’re encouraging rounded shoulders, e.g. see: https://www.nhs.uk/live-well/exercise/common-posture-mistake...


> you’re encouraging rounded shoulders

I lift weights regularly, which I'm guessing compensates. I agree that it would cause problems sans weightlifting.


Wait ! So an anterior pelvic tilt when sitting is actually good for you ?

That seems counter inuitive since it is bad for you to stand in that way .


The scan is from a book called “8 Steps to a Pain-Free Back” by Esther Gokhale which I recommend reading and makes the case for a J shaped spine (rather than S shape).


It is natural to statically lift your arms like that for hours upon hours?

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.


Nature doesn't require us to lean on armrests, desks or such - in fact there are almost no flat (or cushioned) surfaces on nature.

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.


I would need more convincing than that. Nature doesn't have keyboards.

Static postures are seen as something very bad in ergonomics, muscles are not adapted for that and wear is problematic.

I've used supports for 20+ years without trouble. First day didn't suck either.


Lifting your arms doesn't mean keeping them in a static position. They are lifted when you're typing; else they lean on your legs (much better than using some kind of cushion/surface, since your legs don't compress your wrists). Also, one can vary the arms' angle/etc during the day.

The bad part about wrist/arm rests is - very likely they compress various layers of your body, and they force you to contort your wrists to type (because you want to reach the keyboard while some other part of your body is stuck 'resting').


Maybe I overestimate how much I use the keyboard but I still see hours on straight where I would not want to move my hands away from the keyboard. You don't need to reach for the keyboard due to supports, you are resting on the home row.

Yes, movement is important and one should take breaks but that is something one should do regardless of posture. I see how lifting hands can improve that but it has to be balanced against the negatives.

If moving a hand to use the mouse is seen as a big pain point I have a hard time to see how one would rest unused hands on the legs? Underneath the table?


When you bend your arms at 90° where are your palms? With proper posture/keyboard height they should be over the keyboard. If you’re sitting straight it’s natural to bring your keyboard to the edge of the desk. But if you prefer to be under the desk then just rest on the desk.

I made a really quick sketch some time ago maybe it helps: http://svgur.com/s/7e6

That wrist angle on the green dude is very exaggerated, the point was to show that the fingers are in their natural positions, rather than curled, which is what happens when your wrists are glued.

EDIT: Also just look where the piano lady is resting her hands.


Having recovered from terrible wrist tendinitis, I advocate resting using a quality chair with adjustable, padded armrests and resting your forearm (just in front of the elbow works for me) on them. Having them slide in and out so your elbow is tucked in near your body is critical for comfort, in my experience.

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.


If you’re in a position to use armrests then you’re not sitting up straight. Likely leaning out on back “support” and your neck tensed up or on head “support” unless you have your monitor actually over above you.

Needless to say, trying to keep your wrists up in that position would be uncomfortable.

The best keyboard placement in this position is on your legs/thighs. Thin chiclet keyboard only laying flat. It’s not a replacement for fixing your posture, of course.


If you’re in a position to use armrests then you’re not sitting up straight

What an ignorant statement. It very obviously depends on the chair and body in question.


So are you sitting up straight or leaning back?


Sitting up straight. You need to go chair shopping.


> It is natural to statically lift your arms like that for hours upon hours?

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 strongly, strongly disagree that the layout doesn't matter.

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


> Qwerty has high percentage of combinations that require jumping rows or contorting your hand.

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:

https://streamable.com/mlys1

(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.


That's a bad example because you don't follow standard keying methods. In you're nice example, you're using your pointer finger to press the "c" key. Standard recommendations say both "c" and "e" keys should be handled by your middle finger on qwerty.

You're also typing incredibly slow where you can physically move your hand to avoid contorting your finger. At faster speeds, which I personally hit frequently when slacking or typing up emails, I can't be moving my hands all over the keyboard.


> In you're nice example, you're using your pointer finger to press the "c" key. Standard recommendations say both "c" and "e" keys should be handled by your middle finger on qwerty.

Do you mean in the wrists down example? I used natural fingers and it was still horribly unpleasant.

> You're also typing incredibly slow where you can physically move your hand to avoid contorting your finger. At faster speeds, which I personally hit frequently when slacking or typing up emails, I can't be moving my hands all over the keyboard.

How do you figure that? I can easily hit 100 wpm and that’s way above my thinking speed already.

I take typing seriously. We can race and I’m going to win. Guarantee it. In addition, I can sustain that speed for an hour. Can you?

What do you think moving my hand entails anyway. It’s not going to the other room to pet the cat, it’s literally 0.5–1.0 cm that I don’t even think about… It’s what the brain figures out makes more sense than “contorting” fingers when you have the ability to do so, i.e. if your wrists are not artificially glued down to your desk.


Or another way to think about it is it’s the home row moving around. Each hand has a dynamic <x,y> offset, units being keys.

It’s like JIT compilation for your typing… Instead of having AOT plan how to hit each key, with what finger, etc., the brain just figures out which finger is best positioned to hit the key at any given time, which varies depending on context.


I can imagine typing a wordy contract with this body and hand position, but not programming. He doesn’t use ctrl/shift much, and when he does, it seems not like a quick thing. He also will bottom out as hell even on non-horrible keyboard. (Mac kbd is far from horrible when compared to other membranes, btw.)

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.


I don't understand the problem...?

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


Just tried your way and have mixed feelings about it. On one hand, it isn’t much different from how I do (bases on erf, kop/jio and sliding around). On the other, side moving is much easier due to no friction; also much ‘slippery’ if not controlled. Probably should give it a week to see how is it to hold a big right angle for a long time. Thanks for sharing!


You need a slightly different mental map of your keyboard. I think I use the edges/shifts as a reference (Model F doesn’t have the bumps at J/F at all), but that’s just a guess.


Huh. I had no idea I typed pretty healthily. Thank you.

But... references? (It does make sense, though)


There's quite a body of knowledge on body mechanics that doesn't seem to get much reflection in scientific publications. The only possible exception is the Alexander technique, and even this one is very much obscure. Not because it's secret or something like that, it's that these things don't seem to be searched for.

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.


I wouln't rest my elbow (or forearms) on anything, it's an unnatural pressure.

Instead I place the keyboard at the border of the desk, so I can't possibly lean my arms on the desk.

Granted, you have to use more force to keep your whole arms lifted for hours, but it's good that you can know when do you need a rest.


Practically all ergonomic studies start from the position of compromised wrist placement and measure what angle does least damage. That’s how you end up with split “ergonomic” keyboards.

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.


I’ve got dozens of stories about people with RSI here:

https://github.com/melling/ErgonomicNotes/blob/master/README...

There doesn’t seem to be one cause or one solution.


You can put everything in that list into 3 categories:

1. Fixing the problem: posture & monitor/keyboard height

2. Masking the problem: anything with the word ergonomic

3. Avoiding the problem: typing less/taking frequent (flow-interrupting) breaks

Of course most people with pain want quick solutions, so no. 2 is going to be over-represented. Fixing your posture actually takes work to stretch/compress different muscle groups over a period of time, otherwise you’re back to slouching after 10 minutes.


There are some plenty of programmers who have dealt with problems for years:

http://ergoemacs.org/emacs/emacs_hand_pain_celebrity.html

I wouldn’t trivialize anything.

Happens to designers too.

This was on the front of HN a few years ago:

http://www.looknohands.me


Acknowledging the fact that most people working with computers have horrible postures is not trivializing anything.


Many people claim the Mind Body Approach solved their problem:

http://www.rsi.deas.harvard.edu/mb_what_is.html

Claiming the entire problem is posture might not be the answer. We should definitely be looking more deeply into the problem and solutions.

The creator of Tcl/Tk has been dealing with RSI for over 20 years, for example:

http://web.stanford.edu/~ouster/cgi-bin/wrist.php


Obviously I can’t prove a negative, but:

> This made a substantial difference in my comfort level; it's amazing how tense you are under normal conditions and how much you can relax if you know how.

That’s exactly the biggest benefit I got from fixing my posture. Being able to relax. Also fixing my deviated septum, but posture alone can compromise your breathing to that degree as well.

> As soon as I would get up out of my chair and do other activities, the symptoms would go away again.

Bingo.


Fixing poor ergonomics isn't making a problem.


No, thanks. I'd rather use my Kinesis Advantage than a horrible layout on a horrible flat keyboard.


I’m typing this comment on an IBM Model F XT. The video is to show proper typing posture not an endorsement of chiclet style keyboards.

But you could even type on this crap and be comfortable, because posture fixes the problem instead of masking it, like that Kinesis.


Oh, posture is good. But I'd rather have good posture on a keyboard with keys lined in direct columns etc.

(Truth be told, my Kinesis Advantage sits on my standing desk at work where I spend most of my screen time and typing. I'm tying on my MacBook's chiclet.)


The issue is the tension you create by gluing your wrists and then having to curl your fingers. https://www.youtube.com/watch?v=-nfwL_99pjA

On Kinesis you minimize this issue but your hands are still mostly static and never relax.


As a full time developer who used to suffer terrible RSI pain, I solved the problem without changing keyboard layouts. After consulting with my doctor and an ergonomics expert, I realized my problems were cause by the setup of my workstation and the bad posture habits I had developed.

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.


Did you consider using an isomorphic layout like the typematrix? I find the anachronistic skew in keyboards to be a source of discomfort.


I have only recently learned about isomorphic keyboards and I am indeed curious to try one.


You hover? Doesnt that just move the strain to your upper arms?


The key to this for me is having the keyboard as close to my lap as possible. The effort to hover seems to go up with the height of the keyboard relative to my thighs.


Right, that makes sense, thanks.


This looks interesting but the symbol still look very qwerty-ish. I type on Neo-2 (https://en.wikipedia.org/wiki/Keyboard_layout#Neo), which uses ISO keyboards and primarily targets German, even though the majority of my typing is in English. Its entire third layer is for symbols that are common in programming. Layer 3 is activated via either caps-lock or the key above Right Shift, and has \/{}* ?()-:@ as the home row, …_[]^ !<>=& above it and #$|~` +%"'; below it (there's a picture in the Wikipedia article linked above).

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.


German users might also be interested in the AdNW layout (http://www.adnw.de/). They started out with Neo’s excellent and logical arrangement of the non-alphabetical layers, but replaced the alphabetic layers with a layout created by running an optimization algorithm on a text corpus of 50% English and 50% German text (whereas in Neo the key arrangement was created manually, based on intuition). The metrics they used were largely inspired by Dvorak’s research.


Had a look at it and it is not useful for me. I use Vim or vimbindings and the f is in a pretty bad spot, i will stay with neo.


Have to check that out thanks


Can not recommend this layout highly enough. Every time i am forced to use qwertz shows me how bad a standard layout is. Qwerty was developed at the times of the first typewriters to prevent jamming by slowing typists down


This is a common but enduring myth. It was designed to separate the levers for common digraphs, to prevent jams. It was not designed to slow the typist down, but to ensure typing at full speed did not cause jams.


You are pedantically correct, the best kind of correct. Or just better at expressing what i meant.


> Try typing “The” with the T capitalized on Colemak and hopefully you’ll see what I mean. Your right hand will move somewhat like this: you swing to the right to get the SHIFT key with your pinky, then you swing back to the left to get the letter ‘H’, and then you move to the right again to get the letter ‘E’.

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.


I think there is a theory that one "should" use the _other_ hand for any modifiers. Presumably and primarily so that the letter key is always pressed using the same finger and position of the hand.


> Presumably and primarily so that the letter key is always pressed using the same finger and position of the hand.

But it is. Hitting the left shift in the scenario described literally just takes pulling the left pinky down.


I never cared about using the "correct" shift key.


I think it matters most for those with smaller hands. That said, if you were transcribing stuff all day long (i.e. typing way more than a programmer), you might notice less fatigue if you shifted "properly".


I shift this way too on Colemak. I much prefer the slight shift down of the pinky than the whole arm/wrist shift to tackle the rights shift in many cases.


If you are looking at alternative keyboards, I have been using the TypeMatrix 2030[0] with a transparent cover for about 10 years.

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.

[0]: http://www.typematrix.com/


Kudos for effort. But changing layout is not enough.

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

[3] https://github.com/diimdeep/awesome-split-keyboards

[4] https://en.wikipedia.org/wiki/Path_dependence


> much alternatives to choose from [3]

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


The first link references the myth of QWERTY being meant for slowing typists down. It merely spreads most common letters out so them being pressed together doesn't jam the typewriter.


Yeah agree, except that error, didn't find better article to link to.


> I didn’t like the way Dvorak was laid out especially for the weak fingers of the right hand.

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.


Thanks for that. I've started playing guitar a few years ago and my ring fingers are pretty weak and dependent. I can't do the Vulcan salute for instance, my ring finger is kind of "tied" to my pinky.


I’ve done a similar one that might help you. Same starting position with all fingertips on the table, fingers curled in piano position. Do the lift with pinky and middle finger at the same time, then down, then lift ring and index finger, then down and repeat. My goal for this is speed instead of strength, but you’ll definitely feel yourself working on that tie between your ring and pinky finger.


I don't have any RSI issues but I love the idea of alternative/improved keyboards and layouts and have accidentally become kind of an aficionado/collector. I have on permanent rotation and have written reviews of a Kinesis Ergo [0], Truly Ergonomic (TEK) [1], TypeMatrix [2], and Happy Hacker [3] and I'm looking seriously at buying an Ergodox one of these days. I happen to like and dislike each of those keyboards: each has advantages and disadvantages. Same goes for Dvorak (which I use regularly) and Colemak, etc. I'm hard pressed to say which is my favorite, but I like each for different reasons and conclude it would be impossible to combine them into any "perfect," ultimate keyboard.

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...


A keyboard layout for programmers, which allowed the use of special characters on the home row, perhaps by using a mixed corpus of source code rather than just novels, would be interesting to see.

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).


"which allowed the use of special characters on the home row"

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.)


There's also the difference between what's in the code and what you type. My code is full of colons and commas between named arguments, but those are all inserted by autocomplete in my IDE.


See my other comment in this thread -- this exists for German with a secondary focus on English and programming (neo2: https://en.wikipedia.org/wiki/Keyboard_layout#Neo), and it's what I've been using for at least five years, and I love it. I'm not aware of something similar that is geared towards English and programming, though.

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.


If you have keyboards with physically different layouts—e.g. one ergonomic, one typical laptop, one swipey touchscreen—and use them all at least occasionally, you’ll be able to develop independent muscle memories for each.

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!)


I can confirm that having physically different keyboards makes it much easier to switch back and forth. Many years ago, I worked for a company that had a mess of old Sun hardware in the lab with the old Sun-layout[0] keyboards. After about a week of using them, I was pretty comfortable using them, and had no trouble switching back and forth the the customary layout keyboard at my desk.

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.

[0] https://deskthority.net/wiki/Sun_Type_5#Layout


For a keyboard with separate single-width E13 and E14 (like the old 84-key PC/AT keyboard and the Sun Type 5) instead of a single double-width key spanning both, you want the JIS 109-key Windows keyboard or the Korean 106-key Windows keyboard.

* http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode....

* https://commons.wikimedia.org/wiki/File:Korean_106-key_keybo...

* http://www.ps-aoki.com/~ace/ebay/pc/keyboard/5W_1.jpg

The 104-key Windows keyboard moves the old PC/AT E13 key to D13, and the 105/107-key Windows keyboards move it further to C12. The 106-key Windows keyboard has it back at E13. The JIS keyboard actually has that key at C12, though. Its E13 key is another key with a different PS/2 scancode and USB HID usage. This is important to know when remapping the keys.

(I have the JIS E13 mapped to the FEP/IM toggle, a.k.a. Zenkaku/Henkaku/Kanji, in my U.K. International and U.S. International maps, with the E00 "Grave" key retaining its usual mappings.)


Sun keyboards are nice for pair programming, since when your partner does something good you can press the 'props' key.


Oh! I have an answer for this one on Mac. https://github.com/tekezo/Karabiner-Elements

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)


> 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).

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).


That is good to hear! I didn’t realise until just now that I just assumed each additional keyboard layout would take an equal amount of effort. Plus, minor variations may be much easier to adapt to.


> special characters on the home row

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?


I left Colemak for Qwerty some 5 years ago. Keyboard layout matters much less than your typing technique.

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.


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 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.


I went for a kenesis advantage and it solved all my problems. I think a big part was it forced me to type better. It’s too hard to use the wrong fingers.


I have been using this for ~4 years. So far I like it, it is extremely comfortable to type on and instantly felt better than eg. colemak to me, though I never learned to touch type as quickly on any other layout. However, I wish I had just stuck to qwerty in the end, as I use vim keybindings wherever possible and the extra steps needed to customise the keybinds in each application is a hassle, and sometimes not even possible.


Anything other than [AQ]WERT[YZ] layout-based keyboard is already a big improvement for your fingers. The differences between Workman / Colemak / Dvorak and so on is mostly a matter of taste. One thing to note is that widely used layouts have more chances to be supported by software and by keyboard manufacturers (e.g. http://www.typematrix.com/). So it may be wiser to choose mainstream layouts that creating your own or using niche ones.

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


Agreed. I use neo2, which is the German equivalent of bépo. It's shipped with pretty much every Linux distro, which means that all I need to do is "setxkbmap de neo".

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.


Best thing is to print this https://neo-layout.org/grafik/aufsteller/neo20-aufsteller.pd... and put it behind your keyboard or somewhere where you can look with ease.

I think speed it no so much important when coding, but don't have to think about how and what you have to type.


Years is a little bit too much yes. I also did a full switch after 1 month of "klavaro" [1] training, but I think it took me nearly one year to be "fully" adapted. By "fully" I mean not thinking anymore about QWERTZ: not for french, nor for english, nor for coding and for beating my previous QWERTZ capabilities.

[1] http://klavaro.sourceforge.net/en/index.html


Interesting. I don't really remember how long that took me, it's been some eight years now since I switched. I used ktouch to practise, which has lessons for neo2 and, apparently, BÉPO.


I found the article that motivated me to switch to bépo back in the time. It also also suggests a method that I used to do the transition: https://ploum.net/216-le-bepo-sur-le-bout-des-doigts/ (in French)


The author doesn't even learn dvorak before deciding that it doesn't work for them. They mention don't like how it behaves on the consonant-heavy, qwerty-optimized commands used in unix. (I have to say this is a fair evaluation, but in practice the layout somehow doesn't encourage RSI despite the apparent awkwardness of typing unix commands on it.)

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...


In the author's defense, I came to the same conclusion using Dvorak when I was a teenager learning unix and programming. I switched back to QWERTY for a while, but around 8 years ago I learned about Colemak and switched and have been very happy with it since.

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.


After switching back and forth between Dvorak and QWERTY for multi-hour work sessions maybe three times I found that I could do so instantly. I learned touch typing on QWERTY very young so maybe this is why it was easy for me. I often use a keyboard without any labels on the keys so it's always touch typing no matter the layout I pick. Also, I don't really get anxious about things that slow down my text entry, so I tolerated my own interface experiments without worry. I've coded and done data analysis using my thumbs on a cell phone. Switching keyboard layouts really isn't so bad by comparison. To each their own.

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.


> dvorak layout is optimized for alternation between hands and inward rolling motion

True; Dvorak seems to always score worse on tests that don't weight distance by ease.


Yes, that was my impression too. I find Dvorak so natural, with the alternation and the inwards rolling motion. Plus it's already supported by every OS ever.


Given that micro-movements can lead to RSI, shouldn't the goal be to make the hands move as much as possible instead?


That's an interesting question. Then, dvorak or similar (alternating hand) layout would probably be a good starting point.


check out QMK keyboard firmware at https://github.com/qmk/qmk_firmware

do whatever you want with layouts, macros and layers without any need for software or driver on the host machine


My biggest issue with traditional keyboards is using non-alpha keys like the arrow keys, modifier keys, punctuation, numbers, escape, and function keys. I (sorta) solved this issue by getting an Ergodox and designing a qwerty layout[1] that made the modifier keys thumb accessible and other non-alpha keys close to the home row through layers:

- 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...


I feel Carpalx has a less arbitrary, more rigorous solution to this [1]. I've been using its QFMLWY for years. It is hugely better than QWERTY. Though as a programmer, I'm still not fully happy with the Ctrl and Shift keys being in their standard location, and thus at the weakest (pinky) finger.

If anyone would like to give QFMLWY a go, let me know. I have scripts to install it on Win, Mac and Ubuntu.

[1] http://mkweb.bcgsc.ca/carpalx/?full_optimization


> the weakest (pinky) finger

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.


The pinky being the weakest perfectly matches my subjective experience. My wrist pain is at the outside of my wrist. The more I use my pinky, the worse it gets.


That doesn't sound like strength at all to me. Just because it hurts to use a body part doesn't automatically mean the muscles attached to it are weak.


I'm glad to see carpalx was posted! I've been typing in Dvorak for a while, but if I were to try a new layout, this would be the first. If you look into his model parameters, he takes rolling and hand alternation into account [1]. Definitely more rigorous.

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.

[1] http://mkweb.bcgsc.ca/carpalx/?typing_effort


It is interesting, given that the corpuses are available, that keyboard design isn't framed as some sort of linear or nonlinear optimising problem.

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.


The problem is generalizing the corpus enough to make it viable for more tasks than "writing C libraries", so that it can achieve mainstream support. The parameters to consider are also contentious - are we optimising for travel, finger stretching, speed, etc ...? It's not just about data.


The Colemak Mod-DH family of layouts incorporates the major insight of Workman (that QWERTY v and n are lower-effort positions than QWERTY g and h) without abandoning the better elements of Colemak (common left hand shortcut keys QWAZXC remain unmoved, good hand alternation, emphasis on inward rolls).

http://colemakmods.github.io/mod-dh/


While I don't use the DH change, the angle mod mentioned where zxcv are shifted left one key has been amazingly helpful for me. It makes standard staggered keyboards a lot more comfortable to use correct fingers for left bottom row


Thanks for this. I've used colemak for many years but the position of the dh is definitely not ideal. I'll try it out and see how it fares.


My thoughts:

- 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.


I'm glad that alternative keyboard layouts seem to be gaining traction but I just can't go cold turkey and move away from QWERTY.

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.


A large portion of coding is moving the cursor left, right, up, down, page up, page down, home, end

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.


>A large portion of coding is moving the cursor left, right, up, down, page up, page down, home, end. The arrow keys are not even shown on the layout.

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...


My keyboard layout has navigation as a convenient layer -- https://neo-layout.org/grafik/flat/tastatur_e4.png -- but I don't actually use it. My keyboard is a ThinkPad USB keyboard, and I use the trackpoint instead of a mouse. It's right there on the home row, I don't have to move my hands to use it. Symbols are also very convenient: https://neo-layout.org/grafik/flat/tastatur_e3.png. This setup works really well for me.


If you have to use these keys, then Kinesis advantage keyboard places them in more convenient positions: the left and right keys are on one side; the up and down on the other side; the home and end keys beneath the thumbs.


> A large portion of coding is moving the cursor left, right, up, down, page up, page down, home, end

> The arrow keys are not even shown on the layout

Nothing that learning Vim keybindings can't solve.


Navigation required in all apps, very few which support vi keybindings. Photoshop. Unity. Premiere. 3DS Max etc.

Only discreet keys cover these


What about using a browser, terminal usage outside of vim, and insert-mode in vim? Do you use vimium in chrome and vim-mode in bash?


I suspect the answers would be: use non-arrow keybindings for browsers (e.g. vim-like plug-ins, or alternative keyboard shortcuts), remap your terminals keys (maybe, use a different terminal entirely?), use insert mode for only inserting text.

I use a “vimium” plug-in for Firefox and I quite like being able to go up/down with j/k. Though I still use the arrow keys for my terminal.


Yup I've just installed vimium on chrome, and it seems to do the job.

I've tried out vim-mode bash in the past, but much prefer the default emacs-mode on the command line, despite being a vim user.

Either way I'm suspecting a ton of exceptions which necessitate resorting often to the cursor keys, however (like another commenter has mentioned w.r.t various GUI apps).


I moved to Dvorak year ago. Very very happy with this.

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.


I use Windows and Mac OS, so years ago I create a layout and software to use your Apple Keyboard with Dvorak under Windows.

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.


We need keyboards with digital keys, not printed, so we can change the layouts at the click of a button.


I recalled https://en.wikipedia.org/wiki/Optimus_Maximus_keyboard from years ago. It looks like the successor uses an LCD screen: http://www.artlebedev.com/optimus/popularis/.


Bingo.


Or just use blank keycaps... the legends shouldn't matter because you shouldn't be looking down at the board while you type.


For learning and trying out new layouts.


Still, you shouldn't be looking down. In addition to taking your eyes off the screen, it also builds a dependence on seeing your finger positions instead of building muscle memory. The recommended method (if you aren't willing to go cold-turkey trial-and-error) is to print out a map of the layout and tape it on the _top_ of your monitor for a few days.


One neat trick (for programmers) is to switch your number row to use the symbols normally and shift to get the digits.

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.


This is an excellent solution to a problem no programmer has. After 10 years of programming I can safely tell that, if you type the majority of your time until you make your wrists sick, you are writing shit code and you should spend more time thinking.


Do you not write emails, search the web, or do writing on a computer of any kind? I wouldn’t be so quick to judge here. You don’t know what they are really doing on their keyboard all day. Maybe typing is all we have due to a physical disability that limits mobility and communication in other ways. There are a lot of possibilities beyond “writing shit code”.


yeah, yeah, I guess there's multiple edge cases.


Everyone is built differently. Some people will get tendonitis with just a small amount of typing.


I always type faster with one hand,

It is common for me to type thnak you for exemple Should I be using an layout with low hand switching? Dvorak? Thanks


I always type faster with one hand,

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


What a stubborn Emacs user, all they had to do was switch to Vim..


I love how inclusive this comment is "a difference of 696 meters. It doesn’t sound like much, however if we convert it to centimeters, that’s equal to 69,600 cm" :D


> Workman Keyboard Layout




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: