Bigi Lui
2019-01-17 ⋅ 6 min read

Keyboards for Developers, Part 1 — Let’s Talk About Laptop Keyboards

I like obsessing over keyboards — I’ve owned many mechanical keyboards (which I’ll talk about in part 2 of this post), and I also like to have a good typing experience when I’m coding on a laptop.

When it comes to Apple, there’s little choices — the Macbook/Macbook Pro keyboards are what you get. If you work in tech, chances are you don’t really have a choice of a laptop; you’re just given a Mac. There’s not much to talk about there.

For personal uses, I like to have a PC laptop; that nowadays I tend to dual-boot Windows and Linux with. I’ve written articles about installing CentOS and Antergos on different PC laptops.

When looking for such ultrabook laptops, aside from laptop weight, the keyboard layout is one of my primary concerns. Obviously one can’t ask for the feel of a mechanical keyboard on a laptop keyboard. I’m OK with laptops doing away with whatever internal switches or membranes they have to, in order to stay in its form factor. In fact, I’m even OK with the latest Macbook Pro keyboards’ typing feel that many complain about.

Keyboard layout, though, is something I hate to compromise with. Unfortunately, in the PC laptop industry there is a trend to move toward more and more compact keyboards. As a programmer, navigation keys, and in particular Home and End, are among my most-used keys when coding, and muscle memory dictates for them to be roughly in the area above arrow keys. I would especially hate for them to be hidden behind Fn modifiers!

As I mentioned previously in the CentOS article, I used to own a Dell Latitude E6410 laptop. It’s definitely not the best of laptops — heavy, outdated appearance, flimsy screen hinges. However, it does have the best keyboard layout, out of all laptops I’ve used up until this day:

Note the full size arrow keys, and a full set of navigation keys up top including Home/End/PgUp/PgDown! What a programmer’s dream of a keyboard layout for a laptop. I don’t care much about a TrackPoint or 3-button trackpad. I don’t even need dedicated volume buttons, they could be hidden behind Fn modifiers for all I care. But give me dedicated Home/End keys!

The funny thing is, this layout doesn’t even use that much more space than many compact keyboards found on modern ultrabooks. For example, let’s look at the keyboard of the Lenovo Ideapad 720s, which I mentioned on the Antergos article:

This is probably among the least weird of all the modern ultrabook keyboards, but you’ll see how all of Home/End/PgUp/PgDown are hidden behind Fn modifier + arrow keys. Look at how much space is reserved for the trackpad area. Wish some of that space can be given back to the keyboard and have a set of proper navigation keys instead. I get the desire to have a bigger trackpad, but I’d definitely sacrifice a little trackpad space for navigation keys.

It’s gotten so bad, and so impossible to find a good ultrabook with a good keyboard layout that I had briefly contemplated starting a laptop production company that works on a line of developer laptops where everything works well in Linux out of the box, and have a developer-friendly keyboard layout. Hopefully, a post like this one would catch wind with some laptop manufacturers out there, and someone high up would decide to design a laptop with a sensible keyboard layout.

Next part of this post will be about the various mechanical keyboards I’ve used and my thoughts on their pros and cons.

Keyboards for Developers, Part 2 — Mechanical Keyboards
In Part 1 of this post I talked about laptop keyboards. It was something I just really needed to get off my chest. I…bigi.dev