Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

ErgoDox EZ naps62 Configuration

Table of Contents


I wanted a layout that suited my Linux & Vim usage. I also didn't like the lack of efficient access to some of the more common special characters used in programming.

Key features / changes



Base Layer

Open on

Base layer

  • No MT(mod, kc) keys (modifier when pressed, key when tapped). Those keys work with a global timeout. When a key press is shorter than the timeout, it's considered a tap, otherwise it's a hold. I couldn't find any particular timeout that would work for me. I need to use mods extremely fast, but also want the confort of using them more slowly in other occasions. So I gave up on this feature altogether.
  • Direct access to {}[]. When programming, these are used extremely often. I was still getting used to the coder layer, and I prefer the arrows on the home row, so I used the bottom-right keys for this.
  • Layer keys everywhere. I either use my little finger or my index finger to go to L1, whichever is more confortable in any given situation. L2 is not used while coding/writing, so I don't need an extremely-optimized access to it.
  • Lang key. This is nothing more than Super-Space combo, which in my systems (both Linux & Windows) is the shortcut to change the keyboard language. I'm Portuguese, so I often cycle between US layout for coding, and PT layout for writing.
  • Special chars on the right-most column. I only use Ctrl & Shift keys on the left side, so I used the right keys to include some of the more useful special characters as well.

Coder Layer

Open on

Coder layer

  • The = and - signs where nowhere to be found. - was already on the base layer, but it's still useful to have a fully-featured NumPad on the coder layer.

Media Layer

Open on

Media layer

  • Better media keys. Why was Play/Pause so far away? And where was Mute? I put all my media keys close to each other, including the missing ones
  • Arrow keys on home row. I use vim, so I'm always on my home row. I use this sometimes to get around, but not as often as to need them on the base row. I'm fine with them here
  • I don't use mouse keys. They're still set up, and I made some changes as an experiment, but I mostly forgot they exist by now.



For every key press, the keyboard will output a JSON-formatted line containing the position of the key in the matrix. This allows one to collect usage information, and to build analytics over it, such as a heat map.

Keyboard output can be caught using hid_listen.

This functionality is enabled by default (via KEYLOGGER_ENABLE and AUTOLOG_ENABLE in Makefile).


If you are reading this directly through QMK firmware's repository, you can build this layout with the standard method:

$ make keyboard=ergodox_ez keymap=naps62

If you're reading this from my own repository, then you'll need to checkout this code into QMK's repository. Here's an example:

$ git clone
$ cd qmk_firmware
$ git clone keyboards/ergodox_ez/keymaps/naps62
$ make keyboard=ergodox_ez keymap=naps62


Miguel Palhas


A heavily customized layout for my Ergodox EZ keyboard







No releases published


No packages published