Most people (including programmers) use Qwerty in some form. This includes non-english keyboards, like the German, French, and even the Chinese keyboard.

  • Germans use a keyboard where the ‘y’ and ‘z’ keys are switched, because while the inventors of German seemed to think there was something illogical about the letter y, z is a sensible letter. The German keyboard also removes the symbols ‘[’, ‘]’, and ‘;’ under your right pinky in favor of the umlauts, ä, ö, ü. The dash next to the 0 is replaced with the German sharp s, ß.
  • The French keyboard’s changes are a bit more extensive, but still manageable with only 5 keys being evicted from their rightful switches.
  • Chinese is very different to type, but the latin letters are exactly where they should be.

In short, Qwerty is a very flexible keyboard, being able to type with Qwerty lets you start typing in any other language fairly simply, with few minor differences depending on the language. I speak both German and English fluently, so being able to type both on a similar keyboard is important to me. I say this because I used to use Dvorak.

Why you should use Dvorak

Dvorak is just nice to type on, even if you can’t go as fast as Qwerty. Something about typing on a Dvorak keyboard makes your fingers feel like a well oiled machine. This is the comfort that many with RSI love. Learning Dvorak will also give you a different perspective on your keyboard, and learning Dvorak made me a faster Qwerty typist.

There’s a psychological effect of already using a non-standard keyboard that gives you a license to experiment with different thing and find what works for you. While this is not the reason that comes to mind very often, this, in my opinion, is the real reason to learn Dvorak.

My reasons for switching are much simpler: “Why not?”, life is nothing if not an endless journey full of dead-ends, u-turns, and visits to places you’ve seen before. If you’ve only ever moved forward you haven’t really moved anywhere. Even if it turns out to be a failed experiment, you still learned something.

As a programmer, Dvorak allowed me to learn Vim motions without feeling hampered by them. Vim won’t slow down your typing if you can’t type anyway. While I have never seriously used Vim or NeoVim as my main editor, Vim motions stuck with me, even after I switched back.

Dvorak changed the way I see see typing. Thinking that an optimized keyboard will make you a faster typist eventually makes you realize that any keyboard where the keys are placed in reasonable spots is just as fast as any other. While feeling nice, I never got to be as fast with Dvorak as I was with Qwerty, even after 6 months of using it. Dvorak did make me a faster programmer, but only because of Vim motions, and a reason we will get to shortly. Both reasons don’t have anything to do with Dvorak itself, just with the experience of learning it.

The Problem(s) with Dvorak

My problems started with the question, how do I type in German on a Dvorak keyboard. Initially my plan was to switch between Qwertz (the German keyboard) and Dvorak, but I quickly realized that I would rather on a blackberry the rest of my life then do that. So I modified the keyboard so I could type umlauts and the sharp s, ß.

That worked, but I soon realized that because Dvorak was optimized to type English, typing German on Dvorak felt as uncomfortable and unoptimized as Qwertz did. I then tried to find a German version of Dvorak, i.e.

Qwerty -> Qwertz
Dvorak -> ?

This did yield results in the form of Dvorak German Type 2, but that came at the cost of swapping two vowels in the left hand, and completely messing up my right, effectively forcing me to learn a new layout altogether (this would be like a Qwerty -> Colmak switch if you know keyboard layouts). When making Qwerty fit to another language, the Qwerty landlords don’t really have to evict anyone from prime real estate because the qwerty landlords are communists, they believe that that every letter is equal, no matter their frequency. An ergo-layout by definition has to have an evil landlord, moving everyone around until they get the best possible deal for themselves. This makes it impossible to be able to fluidly switch between these kinds of layouts like you can with qwerty-based keyboards. In the end I never learned German Dvorak, because it didn’t look as good for programming and probably didn’t feel as good for typing in English.

I also wanted Dvorak to be good at programming, but to my surprise, out of the box, Dvorak is worse at programming then U.S. Qwerty (Qwertz is a different story). The problem was that while Dvorak is good at typing words, it seems that Dvorak didn’t think that typing symbols was that important and therefore put no effort into making sure you could type them with ease. The solution to this was a lot easier: change the symbol layout until it fits. In the end I used a Dvorak layout where the numbers at the top were replaced with symbols, which is a lot less painful then it sounds. This made me much faster while programming with the downside of now having a custom keyboard layout that you need to painfully configure for every platform you have the misfortune to have to use, which is the only reason you would use Dvorak and not an even more obscure layout.

Then there’s the non-standardness of Dvorak.

  • The C, and V keys aren’t reachable with your left hand unless your name is Shaq.
  • You either have to completely remap Vim or use your left and to move up and down and your right to move left and right. The Vim situation could absolutely be worse, but it was still not ideal.

Why I switched back to Qwerty (Kind of)

Not so much because of the programming issues, but because of my German issues and Vim annoyances, I was in the market for a new keyboard layout.

My requirements were as follows (in order of importance):

  • I want to be able to type both German and English with the same (or same-ish) layout.
  • I want the keyboard to be good at programming.
  • I want an ergonomic keyboard layout.
  • I don’t want to have to configure it on every platform.

The reason the language thing was at the top of my list is because I think that any layout that is somewhat reasonable can be made into a good programming layout by just switching the symbols around. Having an ergo layout is nice, but it doesn’t mean anything if you have to either use two completely different layouts for two languages, or have to type on a non-ergo keyboard for one language, so I wasn’t really set on this. Having something to configure for every platform is annoying, but I could live with it.

The result: neoQwerty (neoElectron?). neoQwerty is actually a keyboard layout on some linux distributions, but as programmers do, they feel the urge to make everything perfect, so I made some minor modifications. neoQwerty is based on the very good neoQwertz, a German layout that makes Qwertz good for programming by adding a mod3 layer that includes all the symbols you could possibly use. Today I use neoQwertz to type in German, and my own flavour of neoQwerty to write in English and for programming. The one downside of any Neo layout is that they are German, and thus optimized for an ISO keyboard. ISO keyboards have a stubby left shift key, allowing them to fit and extra key between the left-shift and the ‘z’ key. ISO keyboards also have a tall Enter key, which might take some getting used to. Non-ISO keyboards push the left mod4 key somewhere else (don’t ask me where, I don’t know).

I plan on making a GitHub repo in the future, when I do I will add the link here.