# MacroPad

The macropad project. This multi-years long project is an attempt to design and assemble a custom keyboard, with the end goal of using the experience from this project to design and build a custom keyboard that I can use for programming lighting with my nomad setup. (Basically a keyboard who's layout is identical to that of an ion, but sends the QWERTY equivalent keycodes into EOS.) 

The keyboard is a 4x4 matrix (16 buttons), that are programmed using the QMK firmware to do what ever is needed. There are also SK6812 LEDs under each key for underglow and highlighting the label on each key.

Retail price of this unit is $25 w/o a case. I'll have to talk to Patrick Morrison at some point about designing a case that can be 3D printed.

## Hardware History

**Rev. 1** - 2022?
- Lost to time in a `rm -rf` accident (oops)
- Key matrix worked fine
- LEDs did not (I got the Vdd and Vss pins backwards and layed out the PCB with power on GND and vice-versa)
- I had some difficulty with assembly of the small SMD components
- USB communication and flashing worked fine

**Rev. 2** - January 2025
- Fixed the issue of the backwards PWR/GND on the LEDs
- Changed the orientation of the LEDs and key switches so light shines on the top of the key not the bottom
- Moved the microcontroller into a more sensible location
- Improved trace sizes for some critical signals

**Rev. 2.1** - February 2025
- Fixed manufacturing issue: vias smaller than 0.15mm.

**Rev 3** - June 2025
- Finally fixed the footprint for the LEDs once and for all (they should face the right way now)!
- Changed the diode size to one that is easier to hand solder
- Got rid of the USB-C connector in favor of a micro-B (also easier to solder)

## Firmware History
The firmware generally works like this:
MacroPad_rev*#*_ver*#*
where rev refers to the PCB revision and ver refers to the firmware revision for that board.

Within each version there will be several keymaps for the different layouts that can be compiled and flashed onto that revision PCB. The README file for the firmware itself should explain what the differences are and what is for what.

**MacroPad_Rev3_Ver1** - July 2025
The first successful firmware for the macropad.
- Rainbow LEDs
- Keys are the letters A through P

### How to flash the firmware
1. Download and install QMK. Download and Install QMK Toolbox (program for flashing firmware) while you are at it.
2. Download the firmware folder for the revision and PCB you wish to flash.
3. Place the firmware in the QMK keyboards directory.
4. Run the command `qmk config user.keyboard=<MacroPad_Firmware>`.
5. Run the command `qmk config user.keymap=<keymap>`.
6. You can now edit `keyboard.json` and `keymap.c` to your liking.
7. Run the command `qmk compile -kb <MacroPad_Firmware> -km <keymap>`.
8. If you have any issues, refer to the QMK documentation.
9. Load QMK Toolbox, set the local file to the .hex file that QMK just created.
10. Holding down the rest button and any key in the bottom row of keys, connect the USB to the keyboard.
11. If the device is successfully in DFU (firmware upload) mode, the LEDs will not turn on and the Flash & Clear EEPROM buttons in QMK toolbox become available.
12. Repeat step 10 until the device is in DFU mode (may take many, many tries, there is an open issue about it...)
13. Press the Flash button
14. If successful, they board should be flashed.

Alternative method is to skip steps 1 through 8 and just upload the hex file directly. I'll provide a list of hex files and a description of which one is which in the firmware README.
