{"id":35171794,"url":"https://github.com/cyfdecyf/c-dux","last_synced_at":"2026-05-20T00:03:38.448Z","repository":{"id":274826657,"uuid":"924176870","full_name":"cyfdecyf/c-dux","owner":"cyfdecyf","description":"A split keyboard PCB designed with Ergogen v4.","archived":false,"fork":false,"pushed_at":"2025-09-13T03:31:11.000Z","size":4798,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-13T05:43:05.890Z","etag":null,"topics":["ergogen","keyboard","kicad","split-keyboard","zmk"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cyfdecyf.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":"2025-01-29T14:55:00.000Z","updated_at":"2025-09-13T03:31:14.000Z","dependencies_parsed_at":"2025-03-29T04:18:45.762Z","dependency_job_id":"d5c43b48-65cd-42ae-ac77-f6cf977eaebf","html_url":"https://github.com/cyfdecyf/c-dux","commit_stats":null,"previous_names":["cyfdecyf/c-dux"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cyfdecyf/c-dux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyfdecyf%2Fc-dux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyfdecyf%2Fc-dux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyfdecyf%2Fc-dux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyfdecyf%2Fc-dux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cyfdecyf","download_url":"https://codeload.github.com/cyfdecyf/c-dux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyfdecyf%2Fc-dux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28104109,"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","status":"online","status_checked_at":"2025-12-28T02:00:05.685Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","keyboard","kicad","split-keyboard","zmk"],"created_at":"2025-12-28T21:00:14.599Z","updated_at":"2025-12-28T21:00:40.914Z","avatar_url":"https://github.com/cyfdecyf.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C. Dux Keyboard\n\nC. Dux front               |  C. Dux back\n:-------------------------:|:-------------------------:\n![](./pcb/v2.0/c-dux-front.png)  |  ![](./pcb/v2.0/c-dux-back.png)\n\n**C. Dux** is a 38-key split wireless keyboard inspired by\n[**rae-dux**](https://github.com/andrewjrae/rae-dux) and\n[**Architeuthis Dux**](https://github.com/tapioki/cephalopoda/tree/main/Architeuthis%20dux) (A. Dux).\n\n## Features\n\n- **Split Design**: 38-key, mainly 3x5 column-staggered layout, **3 thumb keys and 1 extra pinky key**\n- **Choc v1 switch, optional hot-swap sockets**\n- **Uses ZMK firmware**\n- **Rotary encoder** placed near thumb, easy to reach\n- **Diodless Reversible PCB**: Single PCB design that can be used for both left and right halves\n\nNote: I did not consider designing a case as I use the keyboard with nacked PCB.\nSo it's better to use leadless PCB and solder. I find SAC305 solder (with 380-degree solder iron)\nis a little harder to use compared to Tin-Lead 63/37 solder (with 280-degree solder iron),\nbut not too much. \n\n## Differences with rae-dux:\n\n- **One extra key for little finger**\n  - C. Dux [v1 uses 36-key](./pcb/v1.0/c-dux-front.png), but as a long time Vim user who uses Capslock as Esc, I\n    missed the efficiency of pressing Esc with pinky. So I added the extra pinky key.\n- **Supports EC11/EC12 rotary encoder**\n  - I use the left encoder for left, right arrow keys, the right one for up and\n    down. With layer switching, they are also used for page up/down, alt f/b (in\n    shell), ctrl-tab/ctrl-shift-tab.\n- **Using [ProMicro NRF52840](https://www.nologo.tech/product/otherboard/NRF52840.html) as controller**\n  - I choose diodeless design to make things simple. With vanilla ProMicro's 18 GPIO pins, I\n    can only build a 36-key keyboard.\n  - Both [nice!nano](https://nicekeyboards.com/nice-nano/) and ProMicro NRF52840 provides 3 extra pins,\n    which allows adding rotary encoder and one extra key. But the physical position for the 3 extra\n    pins on those two controllers are not the same, so they are not fully compatible.\n- **With mounting holes to for [Tenting Puck](https://splitkb.com/products/tenting-puck)**\n  - Using only 3 holes, took the design from A. Dux\n- **M4 holes for other mounting options**\n\nThe keyboard layout and PCB is generated using [Ergogen](https://github.com/ergogen/ergogen) v4.\nTraces are added manually in KiCAD 8.\nI learned how to use Ergogen form [FlatFootFox](https://flatfootfox.com/)'s\n[Let's Design A Keyboard With Ergogen v4](https://flatfootfox.com/ergogen-introduction/) series articles,\nhighly recommended!\n\n## Configurations\n\nRefer to my [zmk-config](https://github.com/cyfdecyf/zmk-config) repo. I do\nlocal build, github workflow is not tested.\n\nSome combos are inspired by [Glove80 TailorKey](https://sites.google.com/view/keyboards/glove80_tailorkey).\n(I own one [Moergo's Glove80](https://www.moergo.com/). It's a great keyboard. I\nstarted using home-row mod with Glove80.)\n\n## PCB files\n\nHere's [v2.0 PCB gerbers file](./pcb/v2.0/c-dux-gerbers.zip). You can download\nthe file and place order from JLC.\nI made a few fixes for problems found after I got the PCB from JLC, so it's not\nexactly the same file I've used but should work without problems.\n\n## Tips for using Ergogen with KiCAD\n\nFor non-key footprints (power/reset switches, etc.), my workflow is:\n\n1. Generate the footprint in PCB with Ergogen at arbitrary position\n2. Place the footprint in KiCAD with mouse\n3. Use KiCAD ruler to find relative position to some key\n4. Update the footprint position in Ergogen yaml file\n\n## My own build\n\nAs I suffer from RSI, I choose the 20g pink Choc v1 switches (which is the lightest switches I know).\nFor keycaps, I find the 3D printed saddle variant of \n[KLP-Lame-Keycaps](https://github.com/braindefender/KLP-Lame-Keycaps) quite pleasant to use. The keycap\ncurve makes it easy to press the up \u0026 down rows, and helps a lot to position fingers on the home row.\n\nPCBs are ordered from JLC. [Power](https://item.szlcsc.com/2774931.html) and\n[reset](https://item.szlcsc.com/299976.html) switch are from LCSC.\n\n### C. Dux v2\n\nI got the idea of mouting keyboard on desk and let hands go twards the ground from\n[Ben Vallack](https://www.youtube.com/@BenVallack)'s video\n[The Perfect TENTING SOLUTION For Split Keyboards](https://www.youtube.com/watch?v=mT3TToFqqEU).\nCheck out Ben Vallack's channel if you are interested in ergonomic keyboards.\n\nThis is the most comfortable way for me to use a keyboard. **This position helps\na lot to relieve my RSI and I can work all day long without much pain in my forearm**.\n\n![C. Dux v2 mounted](./images/c-dux-v2-mounted.jpg)\n\n![C. Dux v2 mounted both](./images/c-dux-v2-mounted-both.jpg)\n\n![C. Dux v2 in use](./images/c-dux-v2-in-use.jpg)\n\n![C. Dux v2 with M4 threaded bolts](./images/c-dux-v2-m4-bolts.jpg)\n\n### C. Dux v1\n\nThis is my first attempt to build a keyboard. The rotary encoder is difficult to reach\nwhich is the biggest mistake I made.\n\nThe keycap used in this version is Chosfox's\n[CFX](https://chosfox.com/products/chocfox-cfx-choc-keycaps) keycap.\n(Search for \"哈狐 Chosfox\" on Taobao if you live in China.)\nThis keycap is not as smootch as Moergo's [MCC keycap](https://www.moergo.com/collections/mcc-keycaps),\nbut it's still quite good and is much cheaper. But as I like the curved keywell of Glove80,\nI switched to KLP Lame keycaps later.\n\n![C. Dux v1](./images/c-dux-v1.jpg)\n\n![C. Dux v1 with KLP Lame keycaps](./images/c-dux-v1-klp-lame.jpg)\n\n## Future plans\n\nI'm quite comfortable with C. Dux v2 and I'm not planning to build an improved version soon.\nBut I do plan to build a third keyboard for backup.\n\nHere are a few things that I'd like to change:\n\n- Decrease thumb key spacing\n  - v2 decrease thumb key spacing compared to v1, but it's still wider\n    compared to Glove80's upper thumber cluster\n- Change hotswap socket outer hole diameter to 1.72mm\n  - v1 uses 1.7mm which is too tight, v2 uses 1.74mm which is a bit loose\n- Move rotary encoder a little up to make it easier to reach for index finger\n- Remove teardrop for all GND pads to make solding easier\n  - Even thermal reliefs teardrop still makes it harder to solder\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyfdecyf%2Fc-dux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyfdecyf%2Fc-dux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyfdecyf%2Fc-dux/lists"}