Chitin
A custom split ergomech keyboard
Install / Use
/learn @Scybin/ChitinREADME
chitin

📚 Table of Contents
<a name="disclaimer"></a>
⚠️ Disclaimer
This project has reached the fully working prototype stage. All core features have been tested and function as intended. However, as with any DIY hardware project, you should carefully review all files before manufacturing or assembly. The author(s) cannot guarantee flawless operation in every environment or configuration.
The author(s) take no responsibility for any damage, issues, or legal trouble that might result from using this project (see the license). Be sure to follow local laws regarding radio frequencies and DIY electronics.
<a name="welcome"></a>
⌨️ Welcome
Chitin is a custom mechanical keyboard designed for ergonomic comfort, wireless functionality, and useful features. All hardware and software aspects of this project are open source and documented in this repository. Best of all, the build is completely hot-swappable, meaning assembly and disassembly can be done with ease. This includes the microcontroller, switches, lipo battery, and even the trackball. The chitin keyboard is based off my original keyboard design: scyboard.
The trackball used in this build is a Pimoroni PIM447 breakout with a Qw/ST connector. The connector is useful because you can use the trackball without needing to solder the mounting holes to the microcontroller. Included on the chitin PCB is a footprint for a JST SH connector, which you can use to connect the trackball to the board.

<a name="features"></a>
⚙️ Features
- Ergonomic split layout
- ZMK firmware support
- USB-C connectivity & battery charging
- Bluetooth compatible
- Customizable keymaps, layers, and macros
- Trackball which can be programmed as a pointing device
- Layout and case design is declared using Ergogen
- KiCad traces auto-routed using Freerouting
- Open source
- Hot-swap and semi-modular
<a name="firmware"></a>
💾 Firmware
To get started, I recommend forking my personal repository for chitin here: zmk-config-chitin.
- To flash the keyboard, follow the flashing instructions in the ZMK docs.
- Making modifications to the keyboard can be done within the config folder.
- My build sets the central device to the right half of the keyboard, and the peripheral to the left half. Making changes to which half the trackball resides on, or excluding the trackball from the build requires many changes to the code in the chitin repository and source module.
- The chitin ZMK repository also uses my Pimoroni trackball driver module (derived from mwandzik's driver) here: zmk-driver-pim447.
<a name="parts-list"></a>
📦 Parts List
I am not sponsored or affiliated with the vendors linked below. This is where I prefer to purchase my products.
| Part | Quantity | Description | Purchase Link | Datasheet | |---------------------------|----------|-------------------------------------------------|----------------------------------------------------------------------------------------------------------------------- |-------------------------------------------------------------------------------------------------------------------------------------------| | Microcontroller | 2 | nice!nano v2.0 | Nice Keyboarrds nice!nano v2.0 | Nordic nRF52840 | | Pin Headers | 4 | Controller socketing system (4mm) | MAC8 spring-loaded pin headers | MAC8 spring-loaded pin headers specifications | | Reset Button | 2 | Panasonic miniature momentary button | Panasonic Reset Button | EVQPUC02K | | Power Switch | 2 | Alps miniature SPDT switch | ALPS Powr Switch | SSSS811101 | | Battery Connector | 2 | JST PH 2.0mm | JST Battery Jack | JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | | Battery | 2 | 3.7V LiPo 1200mAh (w/ JST adapter) | Lithium Ion Polymer Battery - 3.7v 1200mAh | 301230 | | Diode | 57 | SMD Diode | Semtech SMD Diodes | SOD-123 | | Hotswap Socket | 57 | Kailh MX PCB Socket | Kailh Hotswap Sockets | CPG151101S11 | | MX Switch | 57 | JWICK Linear Switches | JWK JWICK Linear Switches | MX Series Keyswitch | | MX Keycap | 57 | 55 x 1u, 2 x 1.5u | DSA Keycaps | DSA Keycap Project | | M2x15 Standoff | 18 | Standoffs for plate | Newark M2x15 Standoff | Farnell Datasheet | | M2x5 Screw | 8 | Screws to connect bottom case to top case | CO-RODE Screw Kit | | | M2x6 Screw | 18 | Screws for bottom case and top plate | CO-RODE Screw Kit | | | M2.5x8 Screw | 4 | Screws to hold trackball in top case | CO-RODE Screw Kit | | | M2x3 Insert Nut | 8 | Inserts for top cases | uxcell Knurled Insert Nuts | | | M2.5x2 Nut | 4 | Nuts to hold trackball in top case | Newark M2.5 Hex Nuts | Farnell Datasheet | | Trackball Breakout | 1 | Pimoroni RGBW Trackball Breakout | Trackball Breakout by Pimoroni | Trackball Dimensions | | Qw
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate 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
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
