Knobo - a Programmable Macropad With a Knob




About: A high school student that makes stuff

Knobo is a programmable macropad with 8 programmable keys and a knob that will help you speed up your work flow.

The knob has 5 programmable actions:

  • turn counter clockwise
  • turn clockwise
  • click
  • hold and turn counter clockwise
  • hold and turn clockwise

Each of the 8 keys and the 5 knob actions can be assigned a keyboard shortcut or a macro.

In the first video, I programmed the knob the adjust the size of my brush when turned, and zoom in/out when it's pressed and turned at the same time. I programmed the first key to be a pencil tool shortcut, and the second key to be an eraser tool shortcut.

In the second video, I programmed the knob to adjust the volume of my computer when turned, mute/unmute when it's pressed, and zoom in/out when it's pressed and turned at the same time. I also programmed one of the keys to open my website.


Step 1: Materials

You can find the bill of materials as well as the Gerber files for the PCB on my github. I had my PCB manufactured by JLC PCB, and I ordered all of components (except for the mechanical key switches) on LCSC.

For the keycaps, I found this on Thingiverse, and the rest of the STL files for the case are on my github. I printed all of the parts with white Hatchbox PLA at 20% infill.

Step 2: Soldering

Use the schematic on my github as a reference when soldering.

I choose to hand solder the PCB since I don't have the equipment for hot air soldering. If you choose to solder the PCB by hand, be sure to use plenty of flux and a good pair of tweezer.

I used 3 soldering iron tips:

  • Pencil tip for THT parts
  • Conical tip for SMD parts
  • Hoof tip for drag soldering the Atmega32u4 (follow this video if you've never drag soldered before)

The SMD components and the rotary encoder should be soldered on first, then place the PCB inside of the 3D printed case and insert the key switch through the cutouts, the case should be sandwiched between the key switches and the PCB.

Step 3: Burning the Arduino Bootloader

In order to program Knobo via the usb port, the Arduino bootloader must first be burned onto the Atmega32u4. I used an Arduino Uno as the ISP programmer and connected to the ISP connector on the PCB. The Arduino website has a great tutorial on how to do this, just make sure that the board type is Arduino Leonardo when burning the bootloader.

Step 4: Programming

Download the code template from my github.

Install the following libraries:

The code uses the HID project library by NicoHood to send keypresses to the computer.

In the code template, I've commented the corresponding line to add your code for the macros.

A macro is consist of the following functions:

  •; // simulates a key press
  • Keyboard.release(); // releases a key press
  • Keyboard.releaseAll(); // releases all keypress, it's always a good idea to add this to the end of your macro
  • Keyboard.print(""); // types out a series of letters

Here is a macro for opening my website in chrome:;'t');




For the complete list of keys as well as more info, visit the Arduino keyboard reference as well the HID project documentation.

Arduino Contest 2019

This is an entry in the
Arduino Contest 2019



    • IoT Challenge

      IoT Challenge
    • Classroom Science Contest

      Classroom Science Contest
    • Fandom Contest

      Fandom Contest

    6 Discussions


    6 weeks ago

    This is a cool idea! I feel like I need something similar for photo editing hot keys, thanks for the inspiration!

    1 reply