# Keycap Scaling Guide ## Quick Start 1. **Open the script**: Open `Body5_scaled.scad` in OpenSCAD 2. **Adjust scaling**: Edit the `body_scale_xy` parameter at the top (default: 0.98 = 98%) 3. **Preview**: Press `F5` to see a quick preview 4. **Render**: Press `F6` to fully render (required before export) 5. **Export**: Go to `File > Export > Export as STL` 6. **Test print**: Print and check the fit 7. **Iterate**: Adjust the scale parameter and repeat if needed ## Key Parameters ### `body_scale_xy` - **Default**: `0.98` (98% of original size) - **Purpose**: Scales the X and Y dimensions of the keycap body - **Recommendations**: - Start with `0.98` for a 2% reduction - If too tight: try `0.97` (3% reduction) - If too loose: try `0.99` (1% reduction) - Fine-tune: use `0.975`, `0.985`, etc. ### `body_scale_z` - **Default**: `1.00` (no scaling) - **Purpose**: Scales the Z (height) dimension - **Recommendation**: Keep at `1.00` to maintain keycap height ### Stem Parameters (Advanced) Only adjust these if the stem preservation isn't working correctly: - `stem_diameter`: Diameter of the circular preservation region (default: 5.5mm) - `stem_height`: Height of the stem (default: 4.0mm) - `stem_z_position`: Vertical position offset (default: -2.0mm) - `$fn`: Circle smoothness (default: 64, range: 32-128) ## How It Works The script uses a two-part approach: 1. **Scaled Body**: The entire keycap is scaled down by your chosen percentage, BUT a circular region around the stem is cut out 2. **Original Stem**: The circular stem region is preserved at 100% scale (keeping the 4mm × 4mm Cherry MX cross dimensions) 3. **Combined**: Both parts are merged together This ensures: - ✅ The outer keycap body fits better in sockets (scaled down) - ✅ The Cherry MX stem remains exactly 4mm × 4mm (unscaled) - ✅ The circular region around the stem is preserved (for off-brand switches) - ✅ The stem stays centered and properly positioned ## Workflow for Iterative Testing 1. Export STL with `body_scale_xy = 0.98` 2. Slice and print the keycap 3. Test fit on your keyboard 4. **If too tight**: Decrease scale (try 0.97) 5. **If too loose**: Increase scale (try 0.99) 6. **If just right**: You're done! ## Troubleshooting ### The stem looks wrong or is scaled - The circular stem region might not be positioned correctly - Measure your stem in the original STL - Adjust `stem_z_position`, `stem_diameter`, or `stem_height` - If the circle is too jagged, increase `$fn` to 128 ### The keycap won't render - Make sure `Body5.stl` is in the same folder as the `.scad` file - Check for errors in the OpenSCAD console (bottom of window) ### Rendering is slow - This is normal! The script imports the STL twice - `F5` preview is fast but lower quality - `F6` render is slow but required for STL export - Consider reducing the preview quality in OpenSCAD preferences ### The seam between body and stem is visible - This is usually not noticeable in the printed part - If needed, increase `stem_diameter` by 0.5mm increments (try 6.0mm or 6.5mm) ## File Structure ``` Key caps/ ├── Body5.stl # Original keycap STL ├── Body5_scaled.scad # OpenSCAD scaling script └── README_scaling.md # This guide ``` ## Export Settings When exporting STL from OpenSCAD: - File format: STL (binary is smaller, ASCII is more compatible) - Units: millimeters (mm) ## Next Steps After exporting your scaled STL: 1. Import into your slicer (Cura, PrusaSlicer, etc.) 2. Use typical keycap print settings: - Layer height: 0.1-0.2mm - Infill: 15-20% - Supports: Probably not needed for most keycaps 3. Print and test! --- **Note**: The Cherry MX stem dimensions (4mm × 4mm) are standardized. The script is designed to preserve these exactly, so you should only need to adjust the `body_scale_xy` parameter for tolerance testing.