# Resources
Here lies a collection of resources & tips I've amassed over the years; use them well.

With that in mind, there are *thousands* of other resources on the internet that I can't cover here. Use youtube, reddit, discord, whatever works for you!

If a guide doesn't seem to work, try it again. If it *really* doesn't work, try another guide! The magic of it is to keep at it, because if so many other teens can do it, you absolutely can too.


## Top Tier
- [The Keyboard Atelier Discord](https://kbatelier.org/) \<- THE community for keyboard design! PLEASE do not spam the discord though, your best shot is to lurk.
- [The Keyboard Designer Wiki](https://wiki.ai03.com/books) \<- this is insanely useful
- [Atelier designer spreadsheet](https://docs.google.com/spreadsheets/d/1K0jNUZzxTTMkgzo043dxc4vBEOrxNa8jVf4VHk-B27U/edit?gid=0#gid=0)
- I made an example macropad in the GitHub repo [here](https://github.com/hackclub/hackpad/tree/03a6a5542e0cffbb43e530b67994741fcccb205e/hackpads/orpheuspad).
It has an OLED, a rotary encoder, 4 switches in a matrix, 2 addressable LEDs, and QMK firmware. You can reverse engineer it for pretty much everything else

## Tutorials
- [Joe Scotto's how to design a PCB](https://www.youtube.com/watch?v=8WXpGTIbxlQ)
- [Joe Scotto's how to design a keyboard case](https://www.youtube.com/watch?v=7azQkSu0m_U)
- [QMK Guide written by @ Danny on the slack](https://docs.google.com/document/d/1JV8aVDMf2TwetxhckK0Wdf9FykIQtn7HA-_w5BLeQas/edit?usp=sharing)
- [ai03's PCB Guide](https://wiki.ai03.com/books/pcb-design) (this is what I learned from!)

## General info
- [XIAO RP2040 Docs](https://wiki.seeedstudio.com/XIAO-RP2040/)
- [Anatomy of a keyboard](https://matt3o.com/anatomy-of-a-keyboard/)
- [Keyboard Mounting Styles](https://www.keyboard.university/200-courses/keyboard-mounting-styles-4lpp7)

## KiCad Libraries
- [Keyswitch footprints](https://github.com/ai03-2725/MX_V2)
- [XIAO Footprints](https://github.com/Seeed-Studio/OPL_Kicad_Library)
- [Rotary Encoder footprint](https://kicad.github.io/footprints/Rotary_Encoder)
- [0.91" OLED Display](https://github.com/gorbachev/KiCad-SSD1306-0.91-OLED-4pin-128x32.pretty/blob/master/SSD1306-0.91-OLED-4pin-128x32.kicad_mod)
- You can almost always find the footprint/symbol you're looking for if you use [SnapEDA](https://www.snapeda.com/) or similar sites. Google is your best friend.

## Useful measurements
- Use a 0.2mm gap between 3D printed parts
- There's 19.05mm gap between the center of each switch
- This image shows general height measurements
<img src="https://cdn.matt3o.com/uploads/2018/05/switch-case-diagram.png" style={{ maxHeight: '200px' }} />

## 3D models
- [Cherry MX Keycaps](https://github.com/hineybush/CherryMX)
- [Keyswitches](https://grabcad.com/library/cherry-mx-switches-mx-1)
- [Stabilizers](https://grabcad.com/library/cherry-mx-stabilizer-mx-1)
- [EC11 Rotary Encoder](https://grabcad.com/library/rotary-encoder-17)
- Generally speaking, go to [grabcad](https://grabcad.com/library) and search for your part + sort by popular, and you should be able to find the model you need

## Generally useful tips
- Most DIY keyboards are at least partially open source.
You can go to their git repositories and copy their tolerances/footprints/schematics/whatever
- You can export your KiCad PCB to a PDF and print them to check measurements
- Most Keyboards are wired in a matrix to save pins, but if you have 5 or less switches just avoid the matrix altogether
- For screens, just use a 4-pin header for footprints
- Adding graphics in KiCad is really annoying. Instead, you can design your entire thing in Figma and import it as an overlay instead
