Recently, I’ve noticed that I get a lot of wrist pain after hours of extensive coding.
At first I blamed it on the Acer netbook I owned, specifically the narrow key gaps on the keyboard which kind of makes sense. But then, I decided to research more ways to make my typing more comfortable and I realized that not only can it depend on the type of keyboard you use but also on the keyboard layout.
I had no idea about the real purpose of having keyboard layouts, I initially thought that it was only meant to make your keyboard work according to your set localization options or to differentiate between the different characters depending on which country you are from (pound, dollar, etc.) Only place I saw keyboard layout or I had a choice to select one was during the installation phase of a typical Linux installer.
Anyway, I made a big assumption that since technologies had advanced quite rapidly and we have made so much progress on a technological level surely we have figured out what kind of keyboard layout is optimum for use right? Turns out we haven’t, the main purpose QWERTY style keyboard came into being was because during the 1800’s typists ran into issues while typing on a typewriter as typing multiple keys too fast (simultaneously) would make the keys get stuck on the paper and you would have to deal with paper jam, etc. So to solve the problem of people typing on typewriters, one man came up with the QWERTY keyboard layout to slow them down a bit and solve their problem.
QWERTY layout wasn’t designed from the ground up with modern computers in mind, and also it is not that efficient either because depending on where you are coming from it is not optimized in a way so that you would have the most common characters under your fingers resulting in them moving less to get the job done.
So why do we still use QWERTY based keyboard layout? Well, the main reason for this is adoption. It came first and people grew used to it therefore we haven’t bothered to change it because it would waste people’s time in order to relearn another keyboard layout.
Anyway after some research, I decided to go for Dvorak keyboard layout. Although there are a lot of other layouts like Coleman etc, the reviews related to Dvorak from other users have been quite positive overall. In theory, Dvorak not only allows you to type a bit faster (touch typing) but main purpose of it is that it reduces strain on your fingers specifically when you are typing in English. In Dvorak, the most frequently used English character(s) are located right where your fingers rest (home row), resulting in them having to move less to get the job done.
Since I own a mechanical keyboard, I decided to take off the key caps and rearrange them manually to suit the Dvorak keyboard layout. Also having a physical Dvorak layout to work with will help me to migrate faster.
I’ve tried typing using online typing tutors catered for Dvorak layout (for an hour or so) and it feels wonderful. Basically using qwerty based layout my fingers move like all over the place but with Dvorak it’s like they are fixed most of the time. Typing using Dvorak is a different feeling (in a good way) because all this time I’ve been doing what other people have been doing without giving it much thought and suddenly I’m starting realize that just because vast majority of the people do the same thing doesn’t necessarily mean that it is correct or the most efficient way of doing it.
The main utility I’ve used to change keyboard layout is setxkbmap on Linux, and I ended up binding keys on my window manager to dynamically switch keyboard layouts on key press.
# Switching between keyboard layouts
bindsym $mod+Shift+F10 exec “setxkbmap lv dvorak”;
bindsym $mod+F10 exec “setxkbmap us”;
Anyway, I expect it will take me a month or so to adapt and become proficient with Dvorak.
Yes it will definitely take a while before I’m even able to match the typing speed that I had on QWERTY layout but it’s a sacrifice I’m willing to make in order be more efficient in the long run. Also after I get used to regular Dvorak layout, I have plans to switch to Dvorak-programmer layout (optimized for writing code) as I have to write code on a daily basis.