{"id":25430753,"url":"https://github.com/mawaeg/sharkropad","last_synced_at":"2025-10-31T21:30:30.345Z","repository":{"id":275992566,"uuid":"927320906","full_name":"mawaeg/Sharkropad","owner":"mawaeg","description":"Sharkropad is an open-source hotswappable macropad supporting QMK.","archived":false,"fork":false,"pushed_at":"2025-02-16T16:24:51.000Z","size":11776,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-16T17:34:02.070Z","etag":null,"topics":["keyboard","macropad","qmk"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mawaeg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-04T19:05:51.000Z","updated_at":"2025-02-16T16:24:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"0cf94424-662d-4e2d-aaef-2caaf6b008e3","html_url":"https://github.com/mawaeg/Sharkropad","commit_stats":null,"previous_names":["mawaeg/sharkropad"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawaeg%2FSharkropad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawaeg%2FSharkropad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawaeg%2FSharkropad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mawaeg%2FSharkropad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mawaeg","download_url":"https://codeload.github.com/mawaeg/Sharkropad/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239231079,"owners_count":19603990,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["keyboard","macropad","qmk"],"created_at":"2025-02-17T03:48:05.107Z","updated_at":"2025-10-31T21:30:30.293Z","avatar_url":"https://github.com/mawaeg.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sharkropad\n\n**Sharkropad** is an open-source hotswappable macropad supporting QMK.\n\nThis repository includes a custom pcb design, a 3d printed case and QMK firmware.\n\n\u003cimg src=\"docs/_assets/Sharkropad-side.webp\" alt=\"Sharkropad Logo\" width=480px\u003e\n\n## Features\n- **USB-C with ESD Protection**\n- **Rotary Encoder**\n- **OLED Display**\n- **Customizable RGB Lighting**\n- **Hot-Swappable Switches**\n- **Powered by a STM32L432 MCU**\n\n## Getting Started\n\n### Pcb\n\nThe Sharkropad is based on a custom pcb. You can find the manufacturing files in the latest release.\n\nI got my pcb manufactured and assembled from [JLCPCB](https://jlcpcb.com/).\n\nIn case you want to assemble the pcb yourself you can find all the needed parts in the bom in the latest release.\n\n### Other needed parts\n\n| Part                      | Quantity  | Link (recommendation) | Note |\n|---------------------------|-----------|-----------------------|------|\n| filament of your choice   | 50g       | [3djake.de](https://www.3djake.de/polymaker/polyterra-pla-charcoal-black)                   | For the top parts (I used a matte black PLA filament)\n| transparent filament      | 30g       | [redline-filament.com](https://redline-filament.com/collections/pla-filament/products/premium-pla-transparent?variant=50149105041672)                  | Transparent bottom parts for the underglow\n| M2.5 Heat Inserts         | 4         | [cnckitchen.store](https://cnckitchen.store/products/gewindeeinsatz-threaded-insert-m2-5-standard-100-stk-pcs)                   |\n| M2.5 x 12 Screws          | 4         | [cnckitchen.store](https://cnckitchen.store/products/m2-5-screw-stainless-steel-aisi-304-low-head?variant=47945362833743)                  |\n| Protective buffer         | 4         | [amazon.de](https://www.amazon.de/dp/B01N0X4Y38?ref=ppx_yo2ov_dt_b_fed_asin_title\u0026th=1) |\n| Keycaps                   | 12        | [aliexpress.com](https://de.aliexpress.com/item/1005006660909685.html?spm=a2g0o.order_list.order_list_main.15.49fc5c5fYY4A21\u0026gatewayAdapt=glo2deu)\n| Stranded wire             | 10cm      | tbd | Currently there is a problem with the pcb when using the underglow leds where a cable needs to be soldered\n| Rotary Encoder            | 1         | [42keebs.eu](https://42keebs.eu/shop/parts/ec11-rotary-encoder/?attribute_type=Bourns%20(larger%20body)) | This particular one works with the case and the knob\n| OLED display              | 1         | [42keebs.eu](https://42keebs.eu/shop/parts/oled-display-0-91-128x32/?attribute_pcb-colour=Black)\n| OLED socket (low profile) | 1         | [42keebs.eu](https://42keebs.eu/shop/parts/low-profile-oled-sockets/) \n| Hotswap sockets           | 12        | [42keebs.eu](https://42keebs.eu/shop/parts/kailh-choc-hot-swap-sockets/) | (2 x 10 sockets)\n\n### 3d printed case\n\nThe case consists of 4 3d printed parts:\n- Bottom part of the case\n- Top part of the case\n- Plate for the switches\n- Rotary encoder knob\n\nThe stl files for the 3d printed parts can be found under [cad/stl/](cad/stl/).\n\nThe parts are created with [OpenSCAD](https://openscad.org/) and the source code is stored at [cad/](cad/).\n\n#### Print settings\n\nFor the bottom part of the case I used transparent PLA to make the underglow leds shine through.\n\nFor the top part of the case, the plate and the rotary encoder knob I used matte black PLA.\n\nI printed the case and the plate with default print settings with a layer height of .2mm.\n\n\u003e **_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.)\n\nThe rotary encoder knob should be printed with a layer height of .2mm and at least 3 solid bottom layers.\n\n### Building the Sharkropad\n\n1. Get a PCB and prepare it by soldering the components onto it (if not already done through SMT assembly)\n2. Assemble the rotary encoder, the oled socket and the hotswap sockets (if not already done)\n3. Fix the issue with the pcb as shown in [this chapter](#fixing-the-pcb)\n\n    \u003cdiv style=\"display: flex;\"\u003e\n        \u003cimg src=\"docs/_assets/assembly/pcb_front.webp\" alt=\"Heat inserts\" width=\"240px\" style=\"margin-right: 10px;\"\u003e\n        \u003cimg src=\"docs/_assets/assembly/pcb_back.webp\" alt=\"Heat inserts\" width=\"240px\"\u003e\n    \u003c/div\u003e\n\n4. Place a foam (as shown) to support the OLED and mount the oled:\n\n     \u003cimg src=\"docs/_assets/assembly/oled_foam.webp\" alt=\"Heat inserts\" width=\"240px\"\u003e\n\n5. Assemble the switches (put the plate between pcb and switches) and the keycaps\n6. Insert the heat inserts into the holes provided in the top part:\n\n    \u003cimg src=\"docs/_assets/assembly/heat_inserts.webp\" alt=\"Heat inserts\" width=\"240px\"\u003e\n\n7. Put the protective buffers on the bottom case to prevent the macropad from sliding around:\n\n    \u003cimg src=\"docs/_assets/assembly/rubber_feats.webp\" alt=\"Heat inserts\" width=\"240px\"\u003e\n\n8. Screw the case together with the pcb in between and put the knob on the rotary encoder\n\n### Flashing the firmware\n\n\u003e **_NOTE:_** Once the firmware is flashed once 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 CubeProgrammer or flash using QMK.\n\n1. Get the provided firmware in the latest release\n2. Flash the firmware using the [STM32 CubeProgrammer](https://www.st.com/en/development-tools/stm32cubeprog.html) as shown below:\n\n\u003cimg src=\"docs/_assets/flashing/cubeprog-connecting.webp\" alt=\"Cube Programmer connecting\"\u003e\n\u003cimg src=\"docs/_assets/flashing/cubeprog-flashing.webp\" alt=\"Cube Programmer flashing\"\u003e\n\n#### Flash using QMK\n\nAs the firmware is not currently in the qmk github repository flashing with QMK is more complicated.\n- You need to setup your QMK Environment\n- Copy the firmware into the QMK folder:\n    - Copy the contents of the firmware folder to a folder named `sharkropad` under `qmk_firmware/keyboards`\n    - Target structure: `qmk_firmware/keyboards/sharkropad`:\n\n      \u003cimg src=\"docs/_assets/flashing/qmk_folder_structure.webp\" alt=\"QMK folder structure\"\u003e\n- You can then compile and flash using qmk:\n    ```shell\n    qmk compile -kb sharkropad -km default\n    qmk flash -kb sharkropad -km default\n    ```\n\n### Fixing the pcb\n\nIn 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.\nHowever that is not supported by QMK. Therefore a cable needs to be manually soldered to also make the rgb underglow working:\n- Remove the resistor R10\n- Solder a cable from the left contact of R10 to the bottom contact of R13\n\n    \u003cimg src=\"docs/_assets/pcb_fix/wire_fix.webp\" alt=\"Pcb fix\" width=360px\u003e\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0. See the [LICENSE](LICENSE) file for details.\n\nThis 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.\n\n### Libraries used for the pcb\n\nFor the creation of the pcb various libraries where used. \n\nA copy of most of them are included in this project to make the kicad project work without manually installing those libraries. \n\nThose libraries are stored under [/electronics/lib/](/electronics/lib/).\n\nThe libraries are licensed under their respective license. Please be aware of the `README.md` and `LICENSE.md` files in the lib folder.\n\n### Font used on the pcb\n\nThe font used under the logo on the pcb is [Cherry Bomb One](https://github.com/satsuyako/CherryBomb).\n\nA copy of the font is kept under [_assets/Cherry_Bomb_One](_assets/Cherry_Bomb_One). \nTo make the font display correctly in KiCad you need to install it on your OS.\n\nThis font itself is licensed under the original OFL-1.1 License.\nPlease be aware of the License: [OFL.txt](_assets/Cherry_Bomb_One/OFL.txt)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmawaeg%2Fsharkropad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmawaeg%2Fsharkropad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmawaeg%2Fsharkropad/lists"}