π

I Don't Find hjkl-Navigation Intuitive or Ergonomic

Show Sidebar

This is a nerdy rant on the design decision to use hjkl keys for arrow keys on an ancient keyboard and within software tools.

My Arrow Key History

Being a user of the editor vim on daily basis for twenty years or so, you might be astonished to read that I haven't been using its hjkl navigation instead of the physical arrow keys. I guess this happened because I was used to physical arrow keys on my full sized keyboards before:

Finger Key
Right index left
Right middle right
Right middle up
Right ring down

Since I switched to a truly ergonomic keyboard which I modified with the customizable QMK keyboard firmware, I spend some effort on re-thinking keyboard layout and ergonomics. Furthermore, I had to learn true touch-typing because on this keyboard, you really can't cheat touch typing any more.

You can find my current keyboard layout online. It is based on a standard US international dead keys layout and got extended by a custom layer I switch with the End and Page Down thumb keys on my Advantage2 keyboard.

This keyboard has physical arrow keys for the index and middle fingers of both hands:

Finger Key
Left middle left
Left index right
Right index up
Right middle down

Unfortunately, splitting arrow keys to the left and right hand doesn't work for me. I often use shortcuts where I have to press the Shift or Alt or both modifiers together with arrow keys. With every switch from left to right hand, I'm required to switch the modifier keys from left to right or vice versa as well. This is really annoying and inefficient to me.

Therefore, I started to think on trying the omnipresent hjkl navigation on my custom layer which is available for so many software solutions.

hjkl on the Advantage2 Keyboard

Without using hjkl myself, I always thought that it has some advantages. However, I found out that some of my thoughts were plain wrong.

My false belief 1 "With hjkl I can use the right hand with its default position on the keyboard."

Actually, the right hand fingers reside on jkl; on an US layout, not hjkl. Of course, I should have realized this before but sometimes you don't question old misconceptions. This seems to be such a case to me.

Some standard keyboard users might cheat for hjkl and just move the whole hand with one position to the left in order to blindly use all four fingers for navigation.

This is not possible with an ergonomic keyboard like the Advantage2 which relies on blind touch-typing without cheating here. Its physical key placement is such that the right index finger only types 7ujm and 6yhn.

When I shift the right hand one key to the left, my ring finger is not able to reach the 8ik, keys properly which was designed for the longer middle finger range.

This is clearly a very specific issue with truly ergonomic keyboards such as the Advantage2 keyboard. However, there are other arguments why hjkl is not that well designed. And those arguments affects all users.

For example, my false belief 1 showed that I was assuming to be able to use the default position of the right hand fingers for all four keys at the same time, which I'm not. It would require me to cheat on the position of the right hand or use my index finger for both, left and down.

The Design Decision for hjkl

My false belief 2 "The order of the hjkl keys is intuitive."

If you would have asked me to map four keys in a row to arrow key movements, there would have been four and only four intuitive options to me:

  1. up/down, left/right
    • First, decrease and increase the column position.
    • Second, go left and right within the same line.
  2. left/right, up/down
    • Similar to 1. but swapped order to emphasize the line position in contrast to the column position.
  3. up, left, right, down
    • Fist, the two commands to go near the beginning of the page followed by the two commands to go near the end of the page.
  4. left, up, down, right
    • Similar to 3. but starting with the line position instead.

This may be heavily influenced by my cultural background of reading from top left to the bottom right.

In contrast to this, the actual mapping for hjkl navigation is: left, down, up, right.

That order of down and up on the hjkl mapping is counter-intuitive to me. I was very astonished when I first started to use hjkl navigation a few weeks ago. I actually thought that I did a mistake with my mapping as I realized that the mapping was correct: A key to go near the beginning of the page (left), then a key to go near the end of the page (down) followed by a key to go near the beginning of the page (up) and again a key to go near the end of the page (right).

Since the early developer of the vi editor was using the ADM-3A keyboard with printed arrows on hjkl, he simply re-used the design decision probably without even challenging it. The manual of the ADM-3A hardware does not discuss the design decision of the printed arrow keys. If you do have a link for me which explains why they chose to use this particular order, please leave a comment below.

Giving up on hjkl

I tried to get used to hjkl for some time. Unfortunately, I could not get used to the left/down/up/right order at all.

So I changed my custom layer to use this mapping instead:

Finger Key Non-layer Key
Right index left j
Right middle up i
Right middle down k
Right ring right l

As you can see, this mimics the usual arrow key mapping. Some gamers are using asd and w keys and other combinations. I never used them myself. I could only think of using them on a non-ergonomic standard keyboard with shifted finger position so that I do not need to use my little finger for movements.

Having the arrow keys on one hand again, helps me getting rid of the modifier switching between left and right hand. For example, moving items in org by holding Alt while using the arrow keys is easy to use and intuitive again. I just had to "sacrifice" the mantra to use the default finger position. While this may sound equivalent to use the left index for the h and j keys, it is much more intuitive to my brain.

I briefly thought on using jkl; for left/up/down/right but quickly came to the conclusion that this is too similar to hjkl where I might conflict with actually using hjkl or to be more precise just jk navigation in some software solutions. If this does not make sense to you, you can blame my weird brain for it this time. :-)

Summary

With the shifted finger position from their standard position on the keyboard, standard hjkl navigation is not ergonomic.

By deciding to go with left, down, up, right in that order, it is not intuitive design to brains like mine.

Of course, with enough motivation and practice on using, everybody may learn how to overcome this non-intuitive design and get the keys into "muscle memory" without actually thinking any more. Therefore: your mileage may vary when it comes to "makes sense to get used to". This does not mean that my arguments against the standard hjkl mapping are not valid ones.

Comment via email (persistent) or via Disqus (ephemeral) comments below: