Crackle — keyboard layout for programmers

I’ve noticed a few problems with the traditional keyboard layout:

  1. The most commonly used keys are not the easiest to reach. This is addressed by the Dvorak layout for the letter keys, but the other keys (such as delete on a mac) are a big stretch.
  2. Learning the location of characters commonly used in programming (such as brackets, equals and plus) is difficult as there is no logic to their positions. These characters are also often hard to reach (on the new mac laptops the escape key is even harder as it is no longer a key).
  3. Reaching modifier keys is difficult on mac keyboards, but they are used often.

These problems are amplified for people with small hands. Even reaching the “enter” key on a mac keyboard is difficult for my 10 year old son. And getting an external keyboard is a major inconvenience if you work on a laptop.

The solution I’ve come up with is to add two additional modifier keys (snap and pop) to give room for keys that are closer to the home row. I’ve tried to leave things the same as much as possible (such as leaving the special characters !@#$% with the number keys on the standard keyboard).

Most of the characters in the Pop layout are grey because they are really only included so its easy to bind them to shortcut commands.

Here is the Dvorak version of the layout:

Dvorak Crackle Keyboard

And here is the Qwerty version (the left option and pop modifiers are moved to the number row).

The way I have implemented this on mac is using Karabiner Elements. Install the latest build from here:

Then copy this karabiner.json file

into your ~/.config directory. Then you can select Crackle Qwerty or Crackle Dvorak and all of your keys will be remapped.

A good way to practice the new layout is with as you can paste in your own text. Here is some sample text you can use:

If you have any feedback let me know. I think this is the best possible keyboard layout that is supported on standard mac hardware so if you have any suggestions please let me know.