An open API service indexing awesome lists of open source software.

https://github.com/ezxzeng/sweep_squared_rot

Generated keyboard
https://github.com/ezxzeng/sweep_squared_rot

ergogen footprint keyboard kicad pcb split-keyboard

Last synced: about 2 months ago
JSON representation

Generated keyboard

Awesome Lists containing this project

README

          

# Sweep Squared
## An autogenerated split 36 key keyboard
example zmk config at https://github.com/ezxzeng/sweepsq-zmk

## Disclaimer

Please do not rely on the autogenerated files and double check them manually
before sending them off to a PCB fab. The author and other random strangers on the internet have been able to produce
working keyboard prototypes from this repo; this does not mean that everything will work every time.

The author(s) waive(s) responsibility for any damage or regulatory violations caused by using this software (see
license). Please consult your local regulations around radio frequencies and what's allowed for DIY projects in your
country.

left | right | outline
-|-|-
![left](images/board-front.png) | ![right](images/board-back.png) | ![outline](images/display_all_combo.svg)

A 5x3 split keyboard with 3 thumb keys.

## Inspiration

- [bgkeeb](https://github.com/sadekbaroudi/bgkeeb)
- keyboard pcbs under 100mm x 100mm are cheap
- [cheapis](https://github.com/dotleon/cheapis)
- sweeps can be rotated for more room and length between the thumb cluster and rest of the keys and still fit within 100mm x 100mm
- [samoklava](https://github.com/soundmonster/samoklava) and [ergogen](https://ergogen.cache.works/) to get keyboard layouts programatically
- [sweep](https://github.com/davidphilipbarr/Sweep) and [swweeep](https://github.com/sadekbaroudi/sweep36) for form factor and diode-less design
- [Lily58](https://github.com/kata0510/Lily58/tree/master)
- key sockets can be hot swappable, reversible, and compatible with both mx and low profile switches
- [totem](https://github.com/GEIGEIGEIST/totem)
- sandwich case looks really slick and clean, and can also hide the controller parts that will be located under the palm

## Features

- 100mm x 100mm pcb for really cheap fabrication
- reversible footprint
- programatically generated with [ergogen](https://ergogen.cache.works/) (mostly)
- `footprints/key_switches.js` enables deciding between combinations of MX, Choc, or gateron low profile sockets
- jst battery connector and 7-pin slider switch for battery management
- Same key routing as the [swweeep](https://github.com/sadekbaroudi/sweep36)
- Can be both wired and wireless while maintaining a diodless design
- Features a toggle button to change whether p0 directs to TRRS or the inner thumb key
- This does mean that the wired version would only support two thumb keys

## Other considerations
- this design does not support LEDs or displays
- [samoklava's](https://github.com/soundmonster/samoklava) auto routing does not really work here

## Rendering and generation

### Generate config:
```bash
python generate_config.py
```
Alternatively, edit the units of base_units.yaml with files from the `unit_diffs` folder.

For example, to generate a case compatible with gateron low profile keyboards and a 1u thumb key instead of 1.5u:
```bash
python generate_config.py unit_diffs/1u_thumb.yaml unit_diffs/gateron_lp_case.yaml
```

### Ergogen:
```bash
ergogen .
```

### Case:
```bash
for i in output/cases/*.jscad; do npx @jscad/cli@1 "$i" -of stla; done
```

Alternatively, checkout the [onshape file](https://cad.onshape.com/documents/20657883be99e0a9d477d709/w/83f1c619a76dd7448d8e6516/e/9a5a09390163f484d61154c1?renderMode=0&uiState=690c45d1ac4c4ecd663c73cd) for nicer cases

### Get board image renderings:
```bash
docker run -v $(pwd):/kikit --entrypoint pcbdraw yaqwsx/kikit:v1.3.0-v7 plot --style style.json routed_pcb/board.kicad_pcb images/board-front.png

docker run -v $(pwd):/kikit --entrypoint pcbdraw yaqwsx/kikit:v1.3.0-v7 plot --style style.json --side back routed_pcb/board.kicad_pcb images/board-back.png
```

## Showcase

![combined](images/combined.jpg)
![tented_mx](images/tented_mx.jpg)
![gateron_lp](images/gateron_lp.jpg)