July 2017

Today's keyboard gets in the way of programming. Use it with today's desktop and if you touch the wrong key anything can happen.

The root of the problem is that the keyboard has too many keys. I've never seen an explanation why each of the 101 keys is necessary. [1] The more keys a keyboard has the more unusable it becomes.

I thought this was a matter of preference, but the reason there are extra keys isn't only that the keyboard you're using right now ignores the principle of less is more. There is more to it than that. The reason is inertia and bad design.

This is easy to prove because there's evidence all over. For example, what's Caps Lock for? Don't we all press Shift instead? Compared to all the other keys I press, the number of times I intentionally press Caps Lock is near zero. [2]

What's with Escape? Why would there be a need to escape if software was designed better? I don't press it anyway because software already preprogrammed my mind to press Ctrl-C as a reflex. It's what kills a process in a terminal. So if Ctrl-C won in software, why have Escape in hardware?

Then there's the Control key. I can imagine needing at least one special key to execute special commands. But I don't see why we need yet another special key named Alt or Command or Fn. Pick one of these four. Remove the others.

Not so soon though. The Command (or Start) key deserves special mention because it's the #1 key that ruins my desktop experience. If I touch it while doing something else, it opens a menu and starts new programs. It's near impossible to disable through the desktop. [3]

Tab may be worth it because indenting source code makes a difference. The real bug here might be how software deals with the tab character the Tab key emits. It may be better for text editors to always change the tab character to whitespace than leave tabs in source code. But after seeing how Escape can be removed I have to ask: can't Control do what Tab does? [4]

Have we tried to place the arrow keys elsewhere? They're on the bottom right, which makes the user move the hand.

One of the most painful finger contortions for me on the keyboard is pressing the right Shift (bend the pinky, twist the wrist) and a special character over the numbers (index finger on &, * or the parentheses).


How small can the keyboard get? The number of characters can be cut down to 60. That's how many I use on mine.

It can work with 59 if Escape is removed, and I think four more characters can be taken out. Are {} curly braces needed? A programming language can work without them, and I don't use them when writing. I used them with LaTeX but needing curly braces may be a bug in LaTeX, not the keyboard. Are all three of the @ sign and the # hashtag and the % modulo operator needed? I'd keep only # because it stands out in comments.

At least one letter of the English alphabet could be removed too, which would save a key, but this may be too much to ask.

There's one thing I want more of from the keyboard. To make the Ctrl key last longer. I once had to buy a new laptop because plastic on the left Ctrl key split in half and became unusable. And now the left Ctrl key on my current keyboard has its spring loosen up and won't emit a Ctrl when I press it. I have to buy a new keyboard again.

So how about having fewer keys in the keyboard and making sure they don't break, instead of more keys and all hell breaking loose. Think you can do that?


[1]  "We need those 18 keys in the num pad." Why? "For data entry." Why is data entry done by users instead of machines?

[2]  I remember typing all caps in elementary school, and I may have also used Caps Lock to fill out online forms in antiquated government websites.

[3]  For one, Command is hooked into the desktop to bring up a menu bar, as if good programmers use menus. But what's worse is that it also affects the window manager. Want your window to hide another against your will? Touch the start key by accident while pressing the up arrow in the terminal. Same when switching between virtual desktops and pressing up: the Command key maximizes the window.

[4]  A database and a programming language I want to understand better are both written with tabs in the source code. It made their source code hard enough to read in my text editor that I stopped reading.