YamPAD - Feature-packed open source macropad

A fully open-source, mechanical, hot-swappable, RGB backlit, QMK powered, OLED screen featuring numpad/macropad.

Similar projects worth following
The Yampad is a Macropad/Numpad which uses Cherry MX style mechanical switches laid out in the usual numeric pad layout. The only difference comes from the bottom row, which uses a 4 keys configuration, thus enabling the use of the macropad as a nav cluster.

It features hot-swappable switches, RGB backlighting, QMK firmware support and an OLED screen.

The main goal of this project is to have a cheap, easy-to-build, feature-rich numpad which is completely open source.


Recently I switched to a keyboard that doesn't have the nav cluster, nor the numpad. I discovered that 75 keys are more than enough for my daily job BUT the numpad is the only thing I'm really missing. I tried to use layers and a smart positioning of the numbers but nothing can beat the numpad. My muscle memory is all for it.

Upon searching for a readily-available numpad I found out that none had all the features I wanted, and everyone costed too much. So here we are!


The Yampad is a Macropad/Numpad which uses Cherry MX style mechanical switches laid out in the usual numeric pad layout. The only difference comes from the bottom row, which uses a 4 keys configuration, thus enabling the use of the macropad as a nav cluster.

The name comes from the acronym: Yet Another Mechanical numPAD, referring to the disruptive and innovative nature of the project :D


  • Cheap to build
  • Easy to source components
  • Easy to build
  • Hot swappable keys using Kailh PCB sockets
  • Arduino Pro Micro powered
  • QMK compatible
  • RGB backlighting
  • OLED 0.91" screen
  • Completely open-source
  • 3D-printable case (WIP)

Default layout

OLED screen

The screen can display a lot of different informations, by default it shows:

  • Layer status (Base, Navigation, RGB)
  • Host keyboard LED status (Num lock, Caps lock, Scroll lock)
  • RGB backlighting configuration (HUE, Saturation, Val)


Fusion 360 MDF and acrylic case files

fusion - 735.80 kB - 01/23/2021 at 15:19



Fusion 360 wood and aluminium case files

fusion - 740.09 kB - 01/23/2021 at 15:19



Fusion 360 wood and aluminium case files

step - 256.26 kB - 01/23/2021 at 15:19



Fusion 360 MDF and acrylic case files

step - 292.18 kB - 01/23/2021 at 15:19


KiCAD project files

Zip Archive - 107.89 kB - 06/16/2019 at 14:00


View all 8 files

  • 1 × Arduino Pro Micro ATMega32U4 based microcontroller
  • 18 × Mechanical switches Cherry MX-style keyboard mechanical switches
  • 5 × M3 screws
  • 18 × SOD-123 1N4148 diodes
  • 9 × WS2812B RGB LEDs

View all 11 components

  • YamPAD project log 20

    Mattia Dal Ben08/22/2019 at 08:23 0 comments

    Final assembly...

    Finally... we can assemble the YamPAD and complete the project.
    Here's all the parts:
    • PCB + aluminium plate
    • Beech wood case
    • Keycaps
    • Threaded inserts
    • M2 screws

    Let's start by adding some rubber feets.

    Then the threaded inserts. These are actually for plastics but work great for wood too.
    And now the easy part: plate, screws and keycaps.
    I really like the contrast between the aluminium plate and the brass screws.

    You may wonder why all those different switches: I'll use this numpad as a swith tester to convert my collegues at work :D

    Did I mention that it works too?

    And now I think we can call this project complete.

    Time to sum up the project. What would I do differently?

    Design wise:

    • I would mount the Arduino on the bottom of the PCB so that I can use the same form factor but have a nicer plate. As you can see I had to cut the plate at the top to makie room for the USB connector and there's a strip of aluminium that's way too thin on the right of the OLED screen. Just by mounting the arduino on the bottom I will fix all those problems.
    • I would add the option to have one 2U key on the bottom, so that whoever wants to have it can choose to do so.
    • I would add a rotary encoder because... why not?
    • Enlarge the holes for the RGB lighting.

    Regarding materials:

    • I should find a way to protect the aluminium from scratches. During milling and related operations I scratched the surface a few time and it shows.
    • I would like to wax the wood and make it look super shiny. I didn't do it this time because I was too afraid to ruin everything with a botched finish.
    • I should use a thinner material for the case. Here I used a 19mm thick wood, a more sensible choice would be around 15mm maybe lower. I didn't try to fix it with the CNC because it took me 2hr to make the cut and leveling the surface would skyrocket the machining time.

    Maybe I'll fix a few of these problems in the next iteration, but for now I'm happy with the results :D

  • YamPAD project log 19

    Mattia Dal Ben08/21/2019 at 08:38 0 comments

    Sorry for taking too long... A few unexpected problems along the way delayed the project completion.

    Long story short: I added the oil finish without reading the instructions and I made a mess. Turns out you should remove the excess of oil to avoid turning your piece in a sticky gummy mess.

    Anyway I cut the piece again (this time filming it) and obtained the following.

    From the last image you should see where this is going... I used fir wood for this. Unfortunately it's too soft and tends to get stringy and furry after cutting. No amount of sandpaper can fix this.

    I moved on anyway with the oil hoping in a miracle.

    Honestly it looks like garbage...

    After the finish (on the right, on the botched piece) you can see that it looks like some plastic wood surrogate.

    Then I decided to swap wood essence for the project. Enter beech which seems to inherit some properties from its homophone term when cut. I'll explain...

    Beech is a harder wood than fir, which means that it doesn't string or get wooly when cut BUT it creates a lot of chips that get stuck in my CNC rails.

    Loosing steps like there's no tomorrow...

    So here's the "Improvise. Adapt. Overcome." part. Here's the Poor Man's Dust Shoe (patent pending).

    I actually dived in my garbage bin to salvage the parts for this dust shoe... AND IT ACTUALLY WORKED!

    The white parts are from my lab's desk packaging (they were meant to protect the corners during shipping), while the transparent plastic part comes from some other packaging. My next project will be a proper dust shoe for the Shapeoko by the way...

    Here's the results:

    Please note the absence of wooly surfaces.

    Now to the oily part...

    This is what I'm talking about. This is so much nicer. And yes I fixed the two slots positions because (again) I botched them in the previous iteration...

    Anyway, my next post will be (I hope) the final assembly of the YamPAD. This time I think I'm finally satisfied with the results...

    Bonus: my lab assistant (pun intended).

  • YamPAD project log 18

    Mattia Dal Ben07/14/2019 at 19:13 1 comment

    Almost there...

    Today I finally cut the wooden case. Unfortunately I didn't take any pic during the cut. I used some fir wood because it's the cheapest and the only I could find nearby. It's super soft which is good for machining but not so good for the finishing. More on that later.

    Here it is just out of the CNC. The cut went super smooth. All the parts fit toghether nicely. As you might notice I got rid of the fillet around the upper edge because it was too feminine and real men want straight edges for their macropads... (Actually I couldn't figure out how to machine them in Fusion 360, if you know how and have some tips please help me!)

    I added some threaded inserts inside to have something to grip into. They work great!

    Everything fits so nicely!

    Some nice shots to have a better feeling of how it turned out.

    Now I only need to find a way to give a nice finish to the wood and find the right length of M2 screws to seal it all toghether. Guess I'll need to wait till next week...

  • YamPAD project log 17

    Mattia Dal Ben07/07/2019 at 17:39 0 comments

    Success at last...

    Everything went smooth. I knew the CNC was capable of cutting aluminium, it was only a matter of debris. All dimensions seems to be ok.

     Now I can finally move on with the rest of the case... 

  • YamPAD project log 16

    Mattia Dal Ben07/07/2019 at 10:22 0 comments

    Another failure...

    This morning I changed slightly the cutting parameters of the final cut hoping that this will help. I also gave up on using WD-40 hoping that this will avoid jamming the wheels of the Y carriage. I was wrong...

    The Y axis keeps jamming. The aluminium chips gets stuck on the linear rails and the wheels adding some unneeded friction in the Y movements.

    But hey, I'm a hacker. Let's hack this little beast and see what happens.

    Some double-sided tape and cardboard later, here's some nice debris shields for the linear rails. These don't need to be sturdy so cardboard is an excellent choice.

    .. and here's the machine ready for another attempt.

    Wish me luck!

  • YamPAD project log 15

    Mattia Dal Ben06/30/2019 at 18:20 0 comments


    After the first success in cutting the aluminium I started fine tuning my parameters. Turns out I bought some baaaad aluminium (1050A) because I'm cheap. Thanfully a hero on the internet found the best parameters for the 1050 aluminium and I adopted them:
    • 800 mm/min feed rate
    • 0.2 mm depth of cut
    • 76.2 mm/min plunge rate

    I cut my machining time from >2hr to 30min thanks to these. I'm super happy with them.

    Problem is: I failed to cut the plate anyway :(

    The aftermath...

    The most likely suspects.

    In the final cut (it's alwasy the final operation...) I started losing steps during a Y straight cut. I think the aluminium chips and WD-40 mixture started jamming the wheels of the mill. Pics related.

    Anyway, it's too late for another attempt for today. I'll give it a try next week, hoping in the mercy of the machining gods.

  • YamPAD project log 14

    Mattia Dal Ben06/30/2019 at 07:55 0 comments

    First aluminium cut test was a success... slow as hell but hey, a cut is a cut.

    I had a few problem with the Z axis flexing too much on the first attempt due to some loose screws, but the second attempt was great.

    I used double sided tape and some clamps to secure the material but I noticed that when the bit was cutting through the tape glue started grabbing onto the bit. The cut was successfull but for the real deal I'll try the masking-tape-and-super-glue technique to be on the safe side.

    I'm really super excited by this result. We'll see how this turns out!

  • YamPAD project log 13

    Mattia Dal Ben06/29/2019 at 12:47 0 comments

    Case take two...

    The more I look at the current case, the less I like it. The finish is poor, the design is boring, the materials are meh... I can't stand it. I've decided to start from scratch for a new design, using some nicer materials.

    I decided to use aluminium for the plate, and wood for the case. The design is much simpler this time, and apart from some minor details I'm liking it a lot. I'll take this opportunity to test the capabilities of my CNC in handling aluminium, which is something I never tried before.

    Here's some pics from Fusion 360.

    And finally a couple of renderings...

    As you might notice there are some features of the design that are a little too thin... I'll try to make them thicker but the overall idea is all here.

    Let's hope the CNCs and machining gods will smile upon me. 

  • YamPAD project log 12

    Mattia Dal Ben06/15/2019 at 16:41 0 comments

    First case prototype completed.

    So, today I finally cut my last piece for the case of the Yampad. I tried using expanded PVC for the case but didn't really like how it was looking so added the final layer to the MDF case.

    I think the final layer addresses a few of the design flaws I have mentioned in my previous logs but I think I'll do a new version of the case anyways.

    Here's some pics of the final product.

  • YamPAD project log 11

    Mattia Dal Ben06/09/2019 at 16:52 0 comments

    Design review

    I've started reviewing my case design decisions. I have a PVC sheet on the way to start machining it, I'm super excited about it.

    Design wise I had an idea this morning that covers a few flaws I discussed in my previous log.

    I've added a final layer for the sandwich case that covers the USB cable hole and wraps the screws a little. I think it's much better this way since it also covers the switches and the OLED screen.

    I already cut it on my CNC but, unfortunately, when I started sanding it broke. That was also my last piece of 3 mm MDF so I'll wait for the PVC to arrive to start building a new case.

View all 20 project logs

  • 1
    YamPAD rev.2.0 assembly instructions

    The assembly instructions are available here.

View all instructions

Enjoy this project?



djix68030 wrote 07/27/2023 at 16:22 point

Hi everybody, 

everything was working very fine until I resoldered my pro micro and my oled screen (I had soldered them on male/female hedaer pins), when I wanted to permanently solder the pro micro and the oled screen, but when I type 1 or 4 I have 41, idem for 2 or 5 I've 52 and 3 or 6 I've 63, keys 7, 8, and 9 are ok, my solders seems to be ok under the microscope, it sounds like a problem of row or column ? I need help ! an Idea ?

resolved : the ROW2 pin 10 (7/PE6) and ROW3 pin 11 (8/PB4)  where in short circuit !

  Are you sure? yes | no

Rey wrote 02/06/2022 at 06:55 point

Just a thanks. Finished and out into a 'clear' 3d printed case. Really great addition to my Lily58 split keyboard.

  Are you sure? yes | no

Edward wrote 04/22/2021 at 21:19 point

I've put this together and uploaded the pre-compiled hex but had to use an ISP (Adafruit USBTinyISP). No luck flashing with avrdude and the usb port on the Arduino Pro Mini clone. Is there a secret to timing a reset and upload command?

  Are you sure? yes | no

Rey wrote 02/06/2022 at 06:54 point

I uses QMK tools, and set to auto flash. Alternatively mash the flash button after connecting. There's a small window after boot where the com port is available.

  Are you sure? yes | no

Matt wrote 11/22/2020 at 22:16 point

Helping a friend make this (he's programming, I'm handling the CNC) and I want to cut him some variants for the plate on my laser. Free Fusion doesn't offer me the ability to get a flat vector file for cutting... what are the odds you can post up a like a .svg file? Can anyone help me out?

  Are you sure? yes | no

Andrew Lytle wrote 10/17/2020 at 02:12 point

Hey, thanks for putting this together. I had a blast building it for my first project. I actually got everything working for the keyboard itself, but I'm not having any luck with the RGB LEDs. The controller is able to change the desired color, but I get nothing from any of the WS2812B.

Do you have any troubleshooting tips on what I might have done wrong? Incorrect caps maybe?

  Are you sure? yes | no

NoOne wrote 02/26/2021 at 13:58 point

do you still need help? I just put all the parts on mine and it is working. I will help you if you still need it.

  Are you sure? yes | no

Michal Wasowski wrote 09/12/2020 at 17:44 point

Oooh, I would like one of those :) Looked at but I'll be blunt, I don't like the bamboo case :) This wood + steel backplane is awesome.

  Are you sure? yes | no

mattpackwood wrote 05/13/2020 at 16:22 point

Interested in selling them?

  Are you sure? yes | no

Simon Merrett wrote 05/13/2020 at 19:33 point

@mattpackwood if he isn't you might want to look here -

As his Redox repo links to this shop, I think it's safe to say he approves (which may or may not concern you but I thought you'd like to know).

  Are you sure? yes | no

Simon Merrett wrote 05/08/2020 at 08:01 point

Thanks for putting all the details up and making it open source. It's going to help me with my own keyboard build

  Are you sure? yes | no

Mike wrote 01/25/2020 at 16:21 point

If you want a 3d printed enclosure, you can take a look at mine here:

  Are you sure? yes | no

imapirate30 wrote 11/15/2019 at 20:55 point

Any way to modify the PCB to make this wireless? i assume it may have to be +/- the display

  Are you sure? yes | no

hamish wrote 10/23/2019 at 02:44 point

Awesome project!

Just wondering if it supports key-rollover so that pressing multiple keys all at once would be registered properly. Thanks!

  Are you sure? yes | no

Simon Merrett wrote 05/08/2020 at 08:02 point

@hamish he's using qmk firmware, so just go and have a look at the docs for that:

  Are you sure? yes | no

Christopher Wilson wrote 10/08/2019 at 03:58 point

Do you have a link to the "I2C 0.91" 128x32 white OLED LCD Display Module" you used in the build?  (or a part number?)

  Are you sure? yes | no

owen.ormerod wrote 07/04/2019 at 02:35 point

This is amazing. I will attempt making this from your design. Thanks. How did you cut out the timber frame? 

  Are you sure? yes | no

Mattia Dal Ben wrote 07/04/2019 at 05:02 point

I'm still working on the wooden case, the one you see is a rendering. I plan to carve it with my Shapeoko :)

  Are you sure? yes | no

Rupert Hirst wrote 07/02/2019 at 20:50 point

Looks great :)

  Are you sure? yes | no

Ben Wishoshavich wrote 06/15/2019 at 20:46 point

Great looking numpad! Would it be possible to post the original kicad files? I'd love to modify the baord slightly and use it in a couple of my projects. Thanks!

  Are you sure? yes | no

Mattia Dal Ben wrote 06/16/2019 at 14:01 point

Added! ;)

  Are you sure? yes | no

fabian wrote 06/02/2019 at 19:14 point

Tell me how many cost this keyboard with 2 rotors and arduino as a firmware?

  Are you sure? yes | no

sunny wrote 05/19/2019 at 14:40 point

Thank you for your upload,I have ordered Pcbs from JLC。

  Are you sure? yes | no

Mattia Dal Ben wrote 05/19/2019 at 16:31 point

Awesome! :)

  Are you sure? yes | no

sunny wrote 05/23/2019 at 12:44 point

I have a problem with burning software. I have burned HEX files. But you have provided C files and H files... I don't know how to burn them.

  Are you sure? yes | no

Mattia Dal Ben wrote 05/23/2019 at 17:06 point

I didn't provide any HEX files. Are you sure you're looking at the right repository?

The software instructions are here:


- You should clone my QMK fork (

- Resolve QMK dependencies as instructed here

- Checkout the Yampad branch

- Use the command "make yampad:default:avrdude" for compiling and burning the firmware

This is for a Linux environment. 

EDIT: I updated my repository with a pre-built firmware file here:, hope this helps.

  Are you sure? yes | no

sunny wrote 05/25/2019 at 15:15 point

Thank you for your hex file,I am fight with msys2.

  Are you sure? yes | no

Mike Donaghy wrote 05/13/2019 at 19:13 point

Very cool, I'd love to build this. Will you post the board and/or gerbers for it? Thanks!

  Are you sure? yes | no

Mattia Dal Ben wrote 05/13/2019 at 19:24 point

Thanks! Of course. I will upload everything as soon as I make sure everything work correctly ;)

  Are you sure? yes | no

sunny wrote 05/14/2019 at 13:11 point

Looking forward to your release

  Are you sure? yes | no

Mattia Dal Ben wrote 05/18/2019 at 11:39 point

As promised I uploaded the Gerber files :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates