The `Hackpad` is a 4x4 numpad/macropad designed for the Arduino Day 2023 in cooperation with the hackspace [Imaginärraum e.V.](imaginaerraum.de) and [Fablab-Bayreuth e.V.](fablab-bayreuth.de).
It supports 16 MX-style switches, an EC-11 rotary encoder, and per key RGB LEDs based on SK6812.
In v0.2 all necessary components are through hole components (except for an optional reset switch and RGB-LEDs), but the ProMicro protrudes out of the case.
In v0.3 this is fixed by moving some diodes to the bottom side. The bottom diodes however are SMD only.
We support two kinds of firmware: low level [Arduino firmware](firmware_arduino), and the higher level [QMK firmware](firmware_qmk).
### Arduino Firmware
This firmware is mostly for educational purposes.
Its low level code shows how keyboard firmware works on the electronical/physical level. There is a very [basic version](firmware_arduino/hackpad_simple/hackpad_simple.ino) that only includes the bare minimum to understand the keyboard matrix. The more [advanced version](firmware_arduino/hackpad/hackpad.ino) also includes functionality like debouncing.
[QMK](https://qmk.fm) ([TLA](https://en.wikipedia.org/wiki/Three-letter_acronym) for Quantum Mechanical Keyboard) is an open source community centered around developing computer input devices. It provides a very comprehensive firmware library, which can be customized to different keyboard hardware and layouts without the need to write own code.
With QMK it is simple to define custom layouts and up to 32 layers.
Follow the instructions to [install](https://docs.qmk.fm/#/newbs_getting_started) QMK on your computer.
After you've installed QMK there exists a directory `qmk_firmware` in your home directory.
Under Linux, the path is `~/qmk_firmware`, while under Windows should be `C:\\users\your_username\qmk_firmware`.
#### Adding support for the hackpad
The QMK version from the official website, does not yet include the software definitions for the `hackpad`-keyboard, so we need to add it manually.
For this you need to copy the directory `hackpad` found at [firmware_qmk/hackpad](firmware_qmk) into the `keyboards` directory in the `qmk_firmware` you have downloaded earlier.
You can get a copy of the `hackpad` directory by downloading this repository and extracting it.
Keep in mind that there are multiple directories called `hackpad` in this repository, i.e. the repository itself, one in the subdirectory `firmware_arduino` and one in the subdirectory `firmware_qmk`.
You need to copy the `hackpad` directory of the subdirectory `firmware_qmk` into the `keyboards` directory of your `qmk_firmware` directory, to enable support for the hackpad keyboard in QMK.
Notice the difference between the directories `qmk_firmware` and `firmware_qmk`.
Once you have completed the previous steps, you should be able to compile your first firmware by typing `qmk compile -kb hackpad -km default` into the command line interface provided by QMK.
#### Editing the layout
You can find instructions on how to change you keymap in the [QMK documentation](https://docs.qmk.fm/#/newbs_building_firmware).
You can find an exhaustive list of keycodes in the [Keycodes overview of QMK](https://docs.qmk.fm/#/keycodes).
This is done by running `qmk flash -kb hackpad -km "your keymap name"`, where `"your keymap name"` is the name of the subdirectory in the `keymaps` directory which you want to upload to the keyboard.
If you have any questions regarding this keyboard feel free to contact me via [matrix](https://matrix.org/) in the [hackpad support room](#hackpad:ncxy.de), via [e-mail](mailto:n-hackpad@ncxy.de), or visit me at the hackspace [Imaginärraum e.V.](imaginaerraum.de)