Sharkropad
Sharkropad is an open-source hotswappable macropad supporting QMK/VIA.
This repository includes a custom pcb design, a 3d printed case and QMK/VIA firmware.
Features
- USB-C with ESD Protection
- Rotary Encoder
- OLED Display
- Customizable RGB Lighting
- Customizable keymap using VIA
- Hot-Swappable Switches
- Powered by a STM32L432 MCU
Getting Started
Pcb
The Sharkropad is based on a custom pcb. You can find the manufacturing files in the latest release.
I got my pcb manufactured and assembled from JLCPCB.
In case you want to assemble the pcb yourself you can find all the needed parts in the bom in the latest release.
Other needed parts
| Part | Quantity | Link (recommendation) | Note |
|---|---|---|---|
| filament of your choice | 50g | 3djake.de | For the top parts (I used a matte black PLA filament) |
| transparent filament | 30g | redline-filament.com | Transparent bottom parts for the underglow |
| M2.5 Heat Inserts | 4 | cnckitchen.store | |
| M2.5 x 12 Screws | 4 | cnckitchen.store | |
| Protective buffer | 4 | amazon.de | |
| Keycaps | 12 | aliexpress.com | |
| Stranded wire | 10cm | tbd | Currently there is a problem with the pcb when using the underglow leds where a cable needs to be soldered |
| Rotary Encoder | 1 | 42keebs.eu | This particular one works with the case and the knob |
| OLED display | 1 | 42keebs.eu | |
| OLED socket (low profile) | 1 | 42keebs.eu | |
| Hotswap sockets | 12 | 42keebs.eu | (2 x 10 sockets) !Cherry MX-style! |
| Switches | 12 | candykeys.com | Any MX compatible switch is fine |
3d printed case
The case consists of 4 3d printed parts:
- Bottom part of the case
- Top part of the case
- Plate for the switches
- Rotary encoder knob
The stl files for the 3d printed parts can be found under cad/stl/.
The parts are created with OpenSCAD and the source code is stored at cad/.
Print settings
For the bottom part of the case I used transparent PLA to make the underglow leds shine through.
For the top part of the case, the plate and the rotary encoder knob I used matte black PLA.
I printed the case and the plate with default print settings with a layer height of .2mm.
NOTE: For the top and bottom case you will need some supports for the cutouts for the encoder and the screw heads. Default support settings should work just fine. (I like to use organic supports.)
The rotary encoder knob should be printed with a layer height of .2mm and at least 3 solid bottom layers.
Building the Sharkropad
-
Get a PCB and prepare it by soldering the components onto it (if not already done through SMT assembly)
-
Assemble the rotary encoder, the oled socket and the hotswap sockets (if not already done)
-
Fix the issue with the pcb as shown in this chapter
-
Place a foam (as shown) to support the OLED and mount the oled:
-
Assemble the switches (put the plate between pcb and switches) and the keycaps
-
Insert the heat inserts into the holes provided in the top part:
-
Put the protective buffers on the bottom case to prevent the macropad from sliding around:
-
Screw the case together with the pcb in between and put the knob on the rotary encoder
Flashing the firmware
NOTE: Once the firmware has been flashed the first time, you can enter bootloader mode by disconnecting the macropad, pressing and holding the encoder knob while plugging it back in. Then the macropad is in bootloader mode and you can connect to it and program it using the STM32 CubeProgrammer or flash using QMK.
There are two ways to flash the firmware onto the Sharkropad:
- Use the official QMK repository to build and flash the firmware
- This is the easier way, as QMK installs all the needed tools
- Download the firmware from the latest release and flash it with the STM32 CubeProgrammer
- In case firmware updates are not yet merged to the QMK repository, the firmware provided by the latest release of this repository might be more up to date
Flash using QMK
-
Install QMK as described in the official installation documentation provided here
-
After installing you need to navigate into the qmk repository which was cloned by the setup and checkout the
developbranch, as the firmware is not yet on the master branch:git switch develop
-
You can then compile and flash using qmk:
qmk compile -kb mawaeg/sharkropad -km default qmk flash -kb mawaeg/sharkropad -km default
or for the via compatible firmware:
qmk compile -kb mawaeg/sharkropad -km via qmk flash -kb mawaeg/sharkropad -km via
IMPORTANT: As the via json and keymap are not included in the QMK repository, you need to copy them, in case you want to compile the via keymap.
You need to copyfirmware/via.jsonandfirmware/keymaps/viato<path_to_qmk>/keyboards/mawaeg/sharkropadand<path_to_qmk>/keyboards/mawaeg/sharkropad/keymaps
Flash using STM32 Cube Programmer
-
Get the provided firmware in the latest release
- If you want to be able to use VIA to modify the keymap you should use
sharkropad_via.bin - If you only need QMK functionality you can also use
sharkropad_default.bin
- If you want to be able to use VIA to modify the keymap you should use
-
Flash the firmware using the STM32 CubeProgrammer as shown below:
Fixing the pcb
In the current design of the pcb, the rgb underglow and the rgb matrix for the keys are connected to different Output pins of the STM32.
However that is not supported by QMK. Therefore a cable needs to be manually soldered to also make the rgb underglow working:
Customize the keymap using VIA
VIA is a tool that allows you to customize the keymap of your keyboard.
As the configuration for this macropad is not yet added to the via repository a manual step is needed to customize using VIA.
-
Open the VIA web app at https://usevia.app/
-
Navigate to the settings and ensure the
Show Design taboption is enabled
-
Open the design tab and press
Load(Draft Definition)
-
Select the
via.jsonprovided in this release. You should now see a model of the macropad:
-
You can now open the Customize window where you need to click
Authorize device +
-
Select the device with Sharkropad in its name
You can now customize the individual keys and also customize the RGB Lighting:
License
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
This project includes third-party components (libraries and fonts) that are licensed under their respective terms. These components are not covered by the GPLv3 license of this project. Users must adhere to the specific licenses provided in the respective directories.
Libraries used for the pcb
For the creation of the pcb various libraries where used.
A copy of most of them are included in this project to make the kicad project work without manually installing those libraries.
Those libraries are stored under /electronics/lib/.
The libraries are licensed under their respective license. Please be aware of the README.md and LICENSE.md files in the lib folder.
Font used on the pcb
The font used under the logo on the pcb is Cherry Bomb One.
A copy of the font is kept under _assets/Cherry_Bomb_One.
To make the font display correctly in KiCad you need to install it on your OS.
This font itself is licensed under the original OFL-1.1 License.
Please be aware of the License: OFL.txt







