I always forget my Keyboard Shortcuts

Vim, Visual Studio, Visual Studio Code, Windows Powertools – I’m daily using a bunch of feature rich software. And everyone who once used Vim (or Emacs) knows there sometimes is no way around keyboard shortcuts! Or is there? In this post I like to show off a personal project, my very own macropad. In the projects section you’ll find an in depth look at the macro pad as well as all designs and source code.

My self designed Macro Pad

The backstory

For a couple of months now I struggled to learn new keyboard shortcuts for Visual Studio Code as I have moved more work and tasks from other IDEs into VS Code. I also looked for ways to mute and unmute my microphone (and camera) during online meetings rather by pressing a hardware button or switch than clicking somewhere with the mouse. On top of that I still had tons of embedded stuff lying aroung from my time at university, so I went on to build a small device that enabled me to execute keyboard shortcuts and macros. I have a little bit of experience by now when it comes to designing and printing objects with my 3D printer, why not make something thats a little bit more complex and really useful?

The macropad I built has got a few features that makes it stand out from other macro pads. Beside its twelve LED-lit Cherry MX brown switches sits a rotary encoder covered with a steel knob and a 128×64 pixel OLED display. Using the encoder you can choose between different macro layers for the keys, in total I programmed six macros (general Windows shortcuts, Visual Studio, VS Code, Photoshop, Teams and ViM). By pressing the rotary encoder you can change the encoder mode. It’s then possible to not only switch the macro layer but increase or decrease the volume or simply scroll (or zoom) using the rotary encoder. The OLED display shows the currently selected layer, the encoder mode and active modifiers.

On the left of the pad sits a micro USB port that belongs to an Arduino Pro Micro compatible microcontroller, the ATmega32U4. These microcontrollers can register themselves as any possible USB device, even a HID device. If you want to find out how I designed the case, circuit and firmware you can read about it on the project page.

A short demo

Read more on the project page.


  • Patrick Schulz

    Hey! I'm a coder, hobby designer and passionate musician. I love C++ and the Unreal Engine, which I'm utilizing almost daily while working on my PhD.