{"id":49285837,"url":"https://github.com/ezxzeng/sweep_squared_rot","last_synced_at":"2026-04-25T21:34:31.885Z","repository":{"id":204059421,"uuid":"709422534","full_name":"ezxzeng/sweep_squared_rot","owner":"ezxzeng","description":"Generated keyboard","archived":false,"fork":false,"pushed_at":"2026-03-14T22:08:20.000Z","size":45203,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T21:34:26.473Z","etag":null,"topics":["ergogen","footprint","keyboard","kicad","pcb","split-keyboard"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"soundmonster/samoklava","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ezxzeng.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-10-24T17:28:29.000Z","updated_at":"2026-03-14T22:08:24.000Z","dependencies_parsed_at":"2024-01-06T06:47:44.205Z","dependency_job_id":"113756d2-5edc-44bb-8012-2fda8bd73379","html_url":"https://github.com/ezxzeng/sweep_squared_rot","commit_stats":null,"previous_names":["ezxzeng/sweep_squared_rot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ezxzeng/sweep_squared_rot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezxzeng%2Fsweep_squared_rot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezxzeng%2Fsweep_squared_rot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezxzeng%2Fsweep_squared_rot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezxzeng%2Fsweep_squared_rot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ezxzeng","download_url":"https://codeload.github.com/ezxzeng/sweep_squared_rot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezxzeng%2Fsweep_squared_rot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32278249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["ergogen","footprint","keyboard","kicad","pcb","split-keyboard"],"created_at":"2026-04-25T21:34:31.231Z","updated_at":"2026-04-25T21:34:31.877Z","avatar_url":"https://github.com/ezxzeng.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sweep Squared\n## An autogenerated split 36 key keyboard\nexample zmk config at https://github.com/ezxzeng/sweepsq-zmk\n\n## Disclaimer\n\nPlease do not rely on the autogenerated files and double check them manually\nbefore sending them off to a PCB fab. The author and other random strangers on the internet have been able to produce\nworking keyboard prototypes from this repo; this does not mean that everything will work every time.\n\nThe author(s) waive(s) responsibility for any damage or regulatory violations caused by using this software (see\nlicense). Please consult your local regulations around radio frequencies and what's allowed for DIY projects in your\ncountry.\n\nleft | right | outline\n-|-|-\n![left](images/board-front.png) | ![right](images/board-back.png) | ![outline](images/display_all_combo.svg)\n\nA 5x3 split keyboard with 3 thumb keys. \n\n## Inspiration\n\n\n- [bgkeeb](https://github.com/sadekbaroudi/bgkeeb)\n\t- keyboard pcbs under 100mm x 100mm are cheap\n- [cheapis](https://github.com/dotleon/cheapis)\n\t- 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\n- [samoklava](https://github.com/soundmonster/samoklava) and [ergogen](https://ergogen.cache.works/) to get keyboard layouts programatically\n- [sweep](https://github.com/davidphilipbarr/Sweep) and [swweeep](https://github.com/sadekbaroudi/sweep36) for form factor and diode-less design\n- [Lily58](https://github.com/kata0510/Lily58/tree/master)\n\t- key sockets can be hot swappable, reversible, and compatible with both mx and low profile switches\n- [totem](https://github.com/GEIGEIGEIST/totem)\n\t- sandwich case looks really slick and clean, and can also hide the controller parts that will be located under the palm\n\n## Features\n\n- 100mm x 100mm pcb for really cheap fabrication\n- reversible footprint\n- programatically generated with [ergogen](https://ergogen.cache.works/) (mostly)\n- `footprints/key_switches.js` enables deciding between combinations of MX, Choc, or gateron low profile sockets\n- jst battery connector and 7-pin slider switch for battery management\n- Same key routing as the [swweeep](https://github.com/sadekbaroudi/sweep36)\n- Can be both wired and wireless while maintaining a diodless design\n  - Features a toggle button to change whether p0 directs to TRRS or the inner thumb key\n  - This does mean that the wired version would only support two thumb keys\n\n## Other considerations\n- this design does not support LEDs or displays\n- [samoklava's](https://github.com/soundmonster/samoklava) auto routing does not really work here\n\n\n## Rendering and generation\n\n### Generate config:\n```bash\npython generate_config.py\n```\nAlternatively, edit the units of base_units.yaml with files from the `unit_diffs` folder.\n\nFor example, to generate a case compatible with gateron low profile keyboards and a 1u thumb key instead of 1.5u:\n```bash\npython generate_config.py unit_diffs/1u_thumb.yaml unit_diffs/gateron_lp_case.yaml \n```\n\n\n### Ergogen:\n```bash\nergogen .\n```\n\n### Case:\n```bash\nfor i in output/cases/*.jscad; do npx @jscad/cli@1 \"$i\" -of stla; done\n```\n\nAlternatively, checkout the [onshape file](https://cad.onshape.com/documents/20657883be99e0a9d477d709/w/83f1c619a76dd7448d8e6516/e/9a5a09390163f484d61154c1?renderMode=0\u0026uiState=690c45d1ac4c4ecd663c73cd) for nicer cases\n\n### Get board image renderings:\n```bash\ndocker 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\n\ndocker 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\n```\n\n## Showcase\n\n![combined](images/combined.jpg)\n![tented_mx](images/tented_mx.jpg)\n![gateron_lp](images/gateron_lp.jpg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fezxzeng%2Fsweep_squared_rot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fezxzeng%2Fsweep_squared_rot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fezxzeng%2Fsweep_squared_rot/lists"}