Chastity
Ergo split keeb
Install / Use
/learn @brad-za/ChastityREADME
Chastity Keyboard - Choc v1
A wireless split ergonomic keyboard featuring Kailh Choc v1 low-profile switches, rotary encoders, and ZMK firmware.

Features
- Split Design: Ergonomic 30-key split layout per half (60 keys total)
- Wireless: Powered by nice!nano v2 controllers with ZMK firmware
- Low Profile: Kailh Choc v1 switches for a sleek, portable design
- Rotary Encoders: One encoder per half for volume/scroll control
- Hot-swap: Choc v1 hot-swap sockets for easy switch replacement
- Battery Powered: Individual LiPo batteries for each half
- Power Management: Individual power switches per half
Bill of Materials (BOM)
Electronics & Controllers
| Component | Quantity | Description | Notes | |-----------|----------|-------------|-------| | nice!nano v2 | 2 | Wireless microcontroller | One per half | | LiPo Battery | 2 | 3.7V 110-301230 or similar | ~110mAh recommended | | JST PH 2-pin Connector | 2 | Battery connector | For nice!nano battery connection |
Switches & Keycaps
| Component | Quantity | Description | Notes | |-----------|----------|-------------|-------| | Kailh Choc v1 Switches | 60 | Low-profile mechanical switches | Any Choc v1 variant | | Choc v1 Keycaps (1u) | 54 | Standard 1u keycaps | | | Choc v1 Keycaps (1u) | 2 | Indexed 1u keycaps | F & J keys | | Choc v1 Keycaps (1.25u) | 2 | Pinky key keycaps | For control buttons cluster | | Choc v1 Keycaps (1.5u) | 2 | Thumb key keycaps | For thumb cluster |
Electronic Components
| Component | Quantity | Description | Package | Notes | |-----------|----------|-------------|---------|-------| | Diodes | 60 | 1N4148W or similar | SOD-123 | One per switch | | Rotary Encoder | 2 | Alps EC11E series | Through-hole | With push switch | | Power Switch | 2 | SPDT slide switch | PCM12 package | Individual power control | | Choc v1 Hot-swap Sockets | 60 | Kailh hot-swap sockets | | One per switch position |
PCBs & Hardware
| Component | Quantity | Description | Notes | |-----------|----------|-------------|-------| | Chastity PCB Left | 1 | Main PCB for left half | Fabricate from KiCad files | | Chastity PCB Right | 1 | Main PCB for right half | Fabricate from KiCad files | | Case Components | 1 set | Laser-cut case files | Optional - see cases/choc/v1/ |
Optional Components
| Component | Quantity | Description | Notes | |-----------|----------|-------------|-------| | USB-C Cable | 2 | Charging/programming | Standard USB-C cables |
Assembly Instructions
1. PCB Preparation
- Inspect PCBs for any manufacturing defects
- Clean flux residue if necessary
2. SMD Component Soldering
- Diodes: Solder all 60 diodes (30 per PCB) in SOD-123 packages
- Pay attention to polarity markings on the PCB
- Cathode (marked end) should align with the line on the PCB silkscreen
3. Through-hole Components
- Hot-swap sockets: Install all 60 Choc v1 hot-swap sockets
- Ensure proper alignment before soldering
- Apply flux for clean joints
- Rotary encoders: Install one Alps EC11E encoder per PCB
- Ensure proper seating before soldering
- Power switches: Install PCM12 slide switches
- Battery connectors: Install JST PH 2-pin connectors
4. Controller Installation
- Socket installation (recommended):
- Install mill-max sockets for nice!nano controllers
- This allows for easy removal/replacement
- nice!nano mounting:
- Install nice!nano v2 controllers with components facing down
- Ensure proper pin alignment
5. Switch Installation
- Install Kailh Choc v1 switches into hot-swap sockets
- Ensure switches are fully seated and secure
- Test each switch for proper actuation
6. Keycap Installation
- Install keycaps on all switches
- Use 1.25u keycaps for thumb cluster keys
Firmware
This keyboard uses ZMK firmware with configurations located in code/zmk/.
Flashing Firmware
Initial Setup
- Connect nice!nano via USB-C
- Put controller in bootloader mode (double-tap reset)
- Flash the appropriate firmware:
chastity_left-nice_nano_v2-zmk.uf2for left halfchastity_right-nice_nano_v2-zmk.uf2for right half
Building Custom Firmware
- Fork the ZMK config repository
- Modify keymap in
config/chastity.keymap - GitHub Actions will automatically build firmware
- Download and flash the generated
.uf2files
Keymap Configuration
The default keymap is located in config/chastity.keymap. Key features:
- Base layer with QWERTY layout
- Function layer with numbers and symbols
- Navigation layer with arrows and media keys
- Rotary encoder support for volume/scroll
Case Options
Case files are available in the cases/choc/v1/ directory:
chastity-bottom-left.dxf/chastity-bottom-right.dxf- Bottom plateschastity-bb-left.dxf/chastity-bb-right.dxf- Switch plates
Case Assembly
- Laser cut case components from 3mm acrylic or similar
- Use M3 standoffs and screws for assembly
- Install rubber feet for stability
Suppliers & Part Numbers
Electronics
- nice!nano v2: Typeractive, splitkb.com
- Batteries: Search for "110mAh 3.7V LiPo" on electronics suppliers
- Diodes: 1N4148W from Digikey, Mouser, LCSC
- Encoders: Alps EC11E15244G1 or similar
Mechanical Components
- Choc v1 Switches: NovelKeys, splitkb.com
- Choc Keycaps: MBK keycaps, splitkb.com
- Hot-swap Sockets: Kailh Choc v1 sockets from mechanical keyboard suppliers
PCB Fabrication
Upload the Gerber files from kicad/choc/v1/ to:
- JLCPCB: Cost-effective option
- PCBWay: Good quality and service
- OSH Park: US-based, high quality
Troubleshooting
Common Issues
- Switch not registering: Check diode polarity and solder joints
- Encoder not working: Verify encoder orientation and pin connections
- Battery not charging: Check JST connector polarity and nice!nano installation
- Wireless connection issues: Re-pair devices, check ZMK configuration
Support
- Check ZMK documentation: zmk.dev
- Review schematic files in
kicad/choc/v1/ - Verify component placement against PCB silkscreen
License
This project is open source. PCB designs, case files, and firmware configurations are available for personal and educational use.
Changelog
v1.0
- Initial release with Choc v1 support
- ZMK firmware configuration
- Complete build documentation
Related Skills
node-connect
342.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.7kCommit, push, and open a PR
