```
├── .gitignore (900 tokens)
├── LICENSE.md (2.9k tokens)
├── README.md (400 tokens)
├── case/
├── README.md (200 tokens)
├── delta_omega_rev2_left.step (68.9k tokens)
├── delta_omega_rev2_left_thread.png
├── delta_omega_rev2_right.step (69.2k tokens)
├── delta_omega_rev2_right_thread.png
├── docs/
├── BOM.md (300 tokens)
├── BUILD_GUIDES.md (1300 tokens)
├── GETTING_STARTED.md (1400 tokens)
├── images/
├── back_ports.png
├── battery.png
├── case_assembly.png
├── case_mounts.png
├── dimension.png
├── diodes.png
├── esd_rc.png
├── footer.png
├── keycapandcase.png
├── layout.png
├── led.png
├── led_indicator.png
├── led_resistors.png
├── magnets.png
├── pcb_stack.png
├── powerswitch.png
├── resetswitch.png
├── sw_back_cherry.png
├── sw_back_kailh.png
├── switch.png
├── two_switch.png
├── xiao_back.png
├── xiao_back2.png
├── xiao_summary.png
├── gallery/
├── README.md (100 tokens)
├── d1.webp
├── d10.webp
├── d11.webp
├── d2.webp
├── d3.webp
├── d4.webp
├── d5.webp
├── d7.webp
├── d8.webp
├── d9.webp
├── doo1.webp
├── doo2.webp
├── doo3.webp
├── doo4.webp
├── doo5.webp
├── doo6.webp
├── doo7.webp
├── doo8.webp
├── header.png
├── images/
├── README.md
├── do1.webp
├── do10.webp
├── do2.webp
├── do3.webp
├── do4.webp
├── do5.webp
├── do6.webp
├── do7.webp
├── do8.webp
├── do9.webp
├── pcb/
├── README.md (500 tokens)
├── delta-omega-rev4-handsolder-both.kicad_pcb (246.8k tokens)
├── delta-omega-rev4-handsolder-left.kicad_pcb (120k tokens)
├── delta-omega-rev4-handsolder-right.kicad_pcb (124.7k tokens)
├── delta_omega_bottom_cover.kicad_pcb (55.6k tokens)
├── gerbers/
├── delta-omega-rev4-handsolder-both.zip
├── delta-omega-rev4-handsolder-left.zip
├── delta-omega-rev4-handsolder-right.zip
├── delta_omega_bottom_cover.zip
```
## /.gitignore
```gitignore path="/.gitignore"
# Created by https://www.toptal.com/developers/gitignore/api/kicad,node,visualstudiocode,macos,windows,linux
# Edit at https://www.toptal.com/developers/gitignore?templates=kicad,node,visualstudiocode,macos,windows,linux
### KiCad ###
# For PCBs designed using KiCad: https://www.kicad.org/
# Format documentation: https://kicad.org/help/file-formats/
# Temporary files
*.000
*.bak
*.bck
*.kicad_pcb-bak
*.kicad_sch-bak
*-backups
*.kicad_prl
*.sch-bak
*~
_autosave-*
*.tmp
*-save.pro
*-save.kicad_pcb
fp-info-cache
# Netlist files (exported from Eeschema)
*.net
# Autorouter files (exported from Pcbnew)
*.dsn
*.ses
# Exported BOM files
*.xml
*.csv
### KiCad Patch ###
rescue-backup/
*.tsv
bom/
# Gerber export output
out/
### Linux ###
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### Node Patch ###
# Serverless Webpack directories
.webpack/
# Optional stylelint cache
# SvelteKit build / generate output
.svelte-kit
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# End of https://www.toptal.com/developers/gitignore/api/kicad,node,visualstudiocode,macos,windows,linux
```
## /LICENSE.md
CERN Open Hardware Licence Version 2 - Weakly Reciprocal
Preamble
CERN has developed this licence to promote collaboration among
hardware designers and to provide a legal tool which supports the
freedom to use, study, modify, share and distribute hardware designs
and products based on those designs. Version 2 of the CERN Open
Hardware Licence comes in three variants: CERN-OHL-P (permissive); and
two reciprocal licences: this licence, CERN-OHL-W (weakly reciprocal)
and CERN-OHL-S (strongly reciprocal).
The CERN-OHL-W is copyright CERN 2020. Anyone is welcome to use it, in
unmodified form only.
Use of this Licence does not imply any endorsement by CERN of any
Licensor or their designs nor does it imply any involvement by CERN in
their development.
1 Definitions
1.1 'Licence' means this CERN-OHL-W.
1.2 'Compatible Licence' means
a) any earlier version of the CERN Open Hardware licence, or
b) any version of the CERN-OHL-S or the CERN-OHL-W, or
c) any licence which permits You to treat the Source to which
it applies as licensed under CERN-OHL-S or CERN-OHL-W
provided that on Conveyance of any such Source, or any
associated Product You treat the Source in question as being
licensed under CERN-OHL-S or CERN-OHL-W as appropriate.
1.3 'Source' means information such as design materials or digital
code which can be applied to Make or test a Product or to
prepare a Product for use, Conveyance or sale, regardless of its
medium or how it is expressed. It may include Notices.
1.4 'Covered Source' means Source that is explicitly made available
under this Licence.
1.5 'Product' means any device, component, work or physical object,
whether in finished or intermediate form, arising from the use,
application or processing of Covered Source.
1.6 'Make' means to create or configure something, whether by
manufacture, assembly, compiling, loading or applying Covered
Source or another Product or otherwise.
1.7 'Available Component' means any part, sub-assembly, library or
code which:
a) is licensed to You as Complete Source under a Compatible
Licence; or
b) is available, at the time a Product or the Source containing
it is first Conveyed, to You and any other prospective
licensees
i) with sufficient rights and information (including any
configuration and programming files and information
about its characteristics and interfaces) to enable it
either to be Made itself, or to be sourced and used to
Make the Product; or
ii) as part of the normal distribution of a tool used to
design or Make the Product.
1.8 'External Material' means anything (including Source) which:
a) is only combined with Covered Source in such a way that it
interfaces with the Covered Source using a documented
interface which is described in the Covered Source; and
b) is not a derivative of or contains Covered Source, or, if it
is, it is solely to the extent necessary to facilitate such
interfacing.
1.9 'Complete Source' means the set of all Source necessary to Make
a Product, in the preferred form for making modifications,
including necessary installation and interfacing information
both for the Product, and for any included Available Components.
If the format is proprietary, it must also be made available in
a format (if the proprietary tool can create it) which is
viewable with a tool available to potential licensees and
licensed under a licence approved by the Free Software
Foundation or the Open Source Initiative. Complete Source need
not include the Source of any Available Component, provided that
You include in the Complete Source sufficient information to
enable a recipient to Make or source and use the Available
Component to Make the Product.
1.10 'Source Location' means a location where a Licensor has placed
Covered Source, and which that Licensor reasonably believes will
remain easily accessible for at least three years for anyone to
obtain a digital copy.
1.11 'Notice' means copyright, acknowledgement and trademark notices,
Source Location references, modification notices (subsection
3.3(b)) and all notices that refer to this Licence and to the
disclaimer of warranties that are included in the Covered
Source.
1.12 'Licensee' or 'You' means any person exercising rights under
this Licence.
1.13 'Licensor' means a natural or legal person who creates or
modifies Covered Source. A person may be a Licensee and a
Licensor at the same time.
1.14 'Convey' means to communicate to the public or distribute.
2 Applicability
2.1 This Licence governs the use, copying, modification, Conveying
of Covered Source and Products, and the Making of Products. By
exercising any right granted under this Licence, You irrevocably
accept these terms and conditions.
2.2 This Licence is granted by the Licensor directly to You, and
shall apply worldwide and without limitation in time.
2.3 You shall not attempt to restrict by contract or otherwise the
rights granted under this Licence to other Licensees.
2.4 This Licence is not intended to restrict fair use, fair dealing,
or any other similar right.
3 Copying, Modifying and Conveying Covered Source
3.1 You may copy and Convey verbatim copies of Covered Source, in
any medium, provided You retain all Notices.
3.2 You may modify Covered Source, other than Notices, provided that
You irrevocably undertake to make that modified Covered Source
available from a Source Location should You Convey a Product in
circumstances where the recipient does not otherwise receive a
copy of the modified Covered Source. In each case subsection 3.3
shall apply.
You may only delete Notices if they are no longer applicable to
the corresponding Covered Source as modified by You and You may
add additional Notices applicable to Your modifications.
3.3 You may Convey modified Covered Source (with the effect that You
shall also become a Licensor) provided that You:
a) retain Notices as required in subsection 3.2;
b) add a Notice to the modified Covered Source stating that You
have modified it, with the date and brief description of how
You have modified it;
c) add a Source Location Notice for the modified Covered Source
if You Convey in circumstances where the recipient does not
otherwise receive a copy of the modified Covered Source; and
d) license the modified Covered Source under the terms and
conditions of this Licence (or, as set out in subsection
8.3, a later version, if permitted by the licence of the
original Covered Source). Such modified Covered Source must
be licensed as a whole, but excluding Available Components
contained in it or External Material to which it is
interfaced, which remain licensed under their own applicable
licences.
4 Making and Conveying Products
4.1 You may Make Products, and/or Convey them, provided that You
either provide each recipient with a copy of the Complete Source
or ensure that each recipient is notified of the Source Location
of the Complete Source. That Complete Source includes Covered
Source and You must accordingly satisfy Your obligations set out
in subsection 3.3. If specified in a Notice, the Product must
visibly and securely display the Source Location on it or its
packaging or documentation in the manner specified in that
Notice.
4.2 Where You Convey a Product which incorporates External Material,
the Complete Source for that Product which You are required to
provide under subsection 4.1 need not include any Source for the
External Material.
4.3 You may license Products under terms of Your choice, provided
that such terms do not restrict or attempt to restrict any
recipients' rights under this Licence to the Covered Source.
5 Research and Development
You may Convey Covered Source, modified Covered Source or Products to
a legal entity carrying out development, testing or quality assurance
work on Your behalf provided that the work is performed on terms which
prevent the entity from both using the Source or Products for its own
internal purposes and Conveying the Source or Products or any
modifications to them to any person other than You. Any modifications
made by the entity shall be deemed to be made by You pursuant to
subsection 3.2.
6 DISCLAIMER AND LIABILITY
6.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products
are provided 'as is' and any express or implied warranties,
including, but not limited to, implied warranties of
merchantability, of satisfactory quality, non-infringement of
third party rights, and fitness for a particular purpose or use
are disclaimed in respect of any Source or Product to the
maximum extent permitted by law. The Licensor makes no
representation that any Source or Product does not or will not
infringe any patent, copyright, trade secret or other
proprietary right. The entire risk as to the use, quality, and
performance of any Source or Product shall be with You and not
the Licensor. This disclaimer of warranty is an essential part
of this Licence and a condition for the grant of any rights
granted under this Licence.
6.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to
the maximum extent permitted by law, have no liability for
direct, indirect, special, incidental, consequential, exemplary,
punitive or other damages of any character including, without
limitation, procurement of substitute goods or services, loss of
use, data or profits, or business interruption, however caused
and on any theory of contract, warranty, tort (including
negligence), product liability or otherwise, arising in any way
in relation to the Covered Source, modified Covered Source
and/or the Making or Conveyance of a Product, even if advised of
the possibility of such damages, and You shall hold the
Licensor(s) free and harmless from any liability, costs,
damages, fees and expenses, including claims by third parties,
in relation to such use.
7 Patents
7.1 Subject to the terms and conditions of this Licence, each
Licensor hereby grants to You a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable (except as
stated in subsections 7.2 and 8.4) patent licence to Make, have
Made, use, offer to sell, sell, import, and otherwise transfer
the Covered Source and Products, where such licence applies only
to those patent claims licensable by such Licensor that are
necessarily infringed by exercising rights under the Covered
Source as Conveyed by that Licensor.
7.2 If You institute patent litigation against any entity (including
a cross-claim or counterclaim in a lawsuit) alleging that the
Covered Source or a Product constitutes direct or contributory
patent infringement, or You seek any declaration that a patent
licensed to You under this Licence is invalid or unenforceable
then any rights granted to You under this Licence shall
terminate as of the date such process is initiated.
8 General
8.1 If any provisions of this Licence are or subsequently become
invalid or unenforceable for any reason, the remaining
provisions shall remain effective.
8.2 You shall not use any of the name (including acronyms and
abbreviations), image, or logo by which the Licensor or CERN is
known, except where needed to comply with section 3, or where
the use is otherwise allowed by law. Any such permitted use
shall be factual and shall not be made so as to suggest any kind
of endorsement or implication of involvement by the Licensor or
its personnel.
8.3 CERN may publish updated versions and variants of this Licence
which it considers to be in the spirit of this version, but may
differ in detail to address new problems or concerns. New
versions will be published with a unique version number and a
variant identifier specifying the variant. If the Licensor has
specified that a given variant applies to the Covered Source
without specifying a version, You may treat that Covered Source
as being released under any version of the CERN-OHL with that
variant. If no variant is specified, the Covered Source shall be
treated as being released under CERN-OHL-S. The Licensor may
also specify that the Covered Source is subject to a specific
version of the CERN-OHL or any later version in which case You
may apply this or any later version of CERN-OHL with the same
variant identifier published by CERN.
You may treat Covered Source licensed under CERN-OHL-W as
licensed under CERN-OHL-S if and only if all Available
Components referenced in the Covered Source comply with the
corresponding definition of Available Component for CERN-OHL-S.
8.4 This Licence shall terminate with immediate effect if You fail
to comply with any of its terms and conditions.
8.5 However, if You cease all breaches of this Licence, then Your
Licence from any Licensor is reinstated unless such Licensor has
terminated this Licence by giving You, while You remain in
breach, a notice specifying the breach and requiring You to cure
it within 30 days, and You have failed to come into compliance
in all material respects by the end of the 30 day period. Should
You repeat the breach after receipt of a cure notice and
subsequent reinstatement, this Licence will terminate
immediately and permanently. Section 6 shall continue to apply
after any termination.
8.6 This Licence shall not be enforceable except by a Licensor
acting as such, and third party beneficiary rights are
specifically excluded.
## /README.md

# DELTA OMEGA
A portable ultra-low-profile (ULP) wireless 3×5+2 split keyboard.
## Overview
- Switch support: Cherry MX ULP or Kailh PG1316s
- 34 keys, splayed and staggered with choc spacing
- Wireless
- CNC aluminum case
## Parameters


## Documentation
> [!NOTE]
> This is **not** a typical low-profile (LP) or MX build. While it may look familiar, there are enough differences here that skipping the documentation could cause issues. Please take the time to read all notes and guides before starting.
- [Getting Started](./docs/GETTING_STARTED.md)
- [Bill of Materials](./docs/BOM.md)
- [Build Guides](./docs/BUILD_GUIDES.md)
- [Video](https://youtu.be/UktrqN3MlLI)
- [PCB](./pcb/README.md)
- [Case](./case/README.md)
- [ZMK Keyboard Module](https://github.com/unspecworks/zmk-keyboard-delta-omega)
- [Pre-conf ZMK Config](https://github.com/unspecworks/zmk-delta-omega)
- Keycaps
- [Delta ULP Keycap](https://github.com/unspecworks/delta-ulp-keycap)
## Photos
- [Gallery](./gallery/README.md)
- [Prototype Gallery](./images/README.md)
- Diff: Port position, Thumb-cluster layout and only hot-plate way.
## Acknowledgments and Inspirations
- [GEIGEIGEIST/TOTEM](https://github.com/GEIGEIGEIST/TOTEM)
- [mikeholscher/zmk-config-mikecinq](https://github.com/mikeholscher/zmk-config-mikecinq)
- [pashutk/Cherry_MX_ULP](https://github.com/pashutk/Cherry_MX_ULP)
- [zmk-rgbled-widget](https://github.com/caksoylar/zmk-rgbled-widget)
- [infused-kim/kb_ergogen_fp](https://github.com/infused-kim/kb_ergogen_fp)
- [ceoloide/ergogen-footprints](https://github.com/ceoloide/ergogen-footprints)
- [kiswitch/kiswitch](https://github.com/kiswitch/kiswitch)
## Limitations and Disclaimer
This is a hobby-driven project. Some aspects may be incomplete, imperfect, or problematic. Use this project **at your own risk**, and note that no warranties or guarantees are provided.
## License
DELTA OMEGA is licensed under [CERN-OHL-W-2.0](./LICENSE.md).

## /case/README.md
# Case
### Default Case STEP Files
- `delta_omega_rev2_left.step`
- `delta_omega_rev2_right.step`
### Thread Annotation Drawings
These images **must be uploaded when placing an order** to ensure correct threading specifications:
- `delta_omega_rev2_left_thread.png`
- `delta_omega_rev2_right_thread.png`
---
## How to Order
This instructions are **based on JLC CNC**. While other CNC manufacturing services may follow slightly different requirements, in practice most specifications are very similar.
- **Material**: Aluminum 6061 (or something)
- **Surface Finish**: Bead blasting + anodizing recommended
- **Tightest Tolerance**: ISO 2768 (medium) is sufficient
- **Surface Roughness**: Ra3.2 is sufficient
- **Threads**: Yes. be sure to upload the thread annotation images (`left` / `right`) with your order
## /case/delta_omega_rev2_left_thread.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/case/delta_omega_rev2_left_thread.png
## /case/delta_omega_rev2_right_thread.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/case/delta_omega_rev2_right_thread.png
## /docs/BOM.md
# Bill of Materials
| Component | Specification | Quantity | Notes |
|------------------|------------------------------------------------------------|----------|--------|
| MCU Controller | SeeedStudio XIAO nRF52840 | 2 | |
| ULP Switches | Cherry MX ULP or Kailh PG1316s | 34 | |
| ULP Keycap | | 34 | |
| Power Switches | MK-12C02 | 2 | |
| Reset Switches | EVQ-PUL02K | 2 | Compatible with EVQ-PU[A\|C\|J\|L]02K |
| Diodes | SOD-123 | 34 | 1N4148W |
| Batteries | 3.7 V LiPo | 2 | Maximum size: 25.2 mm × 17.7 mm × 4.2 mm |
| Screws | M2 × 3 mm | 10 | If countersink is not used, choose ultra-low head screws (ex. 0.8 mm) |
| LEDs | 0805 (2012 Metric) | 6 | Optional |
| LED Resistors | 1206 (3216 Metric) 220Ω ~ 470Ω | 6 | Optional |
| Magnets | Rounded, OD 8 mm, 3 mm thickness, minimum N52 grade | 6 | Optional |
| ESD Protection Capacitor | 1206 (3216 Metric) 1nF 50V [C0G\|NP0\|X7R] | 2 | Optional |
| ESD Protection Resistor | 1206 (3216 Metric) 1MΩ | 2 | Optional |
## Next Steps
- [Build Guides](./BUILD_GUIDES.md)
## /docs/BUILD_GUIDES.md
# Build Guides
This document covers the **hand-solder version** of the build process.
## Required Tools and Materials
- Soldering iron
- Solder wire
- Flux
- Ventilation system
- Knife or precision cutter
- Silicone adhesive or cyanoacrylate (For magnets)
- Multimeter
If working with a mouse-bited PCB, you will also need:
- Plier
- Mask
- Sandpaper
⚠️ **Note**: Be cautious when sanding PCBs. Fine dust can be hazardous.
> [!CAUTION]
> Always prioritize safety. Proper ventilation, a clean workspace, and appropriate protective equipment are **mandatory**, not optional.
## Power Switch

1. Apply solder to one of the wide pads.
2. Place the switch in position and hold it while reflowing the solder to tack it in place.
3. Solder the opposite wide pad.
4. Finally, solder the three smaller legs.
Correct alignment is essential (the boss features will help position the part).
> [!CAUTION]
> Keep the switch in the **OFF position (all the way to the right)** during the entire build. This is critical.
## Reset Switch

The process is nearly identical to the power switch:
1. Pre-solder one pad.
2. Position the switch and reflow to hold it in place.
3. Solder the remaining three pads.
As with the power switch, correct alignment is important (boss features assist here).
## (Optional) LED

1. LEDs are polarized components. Even if the LEDs are of the same size, different manufacturers may indicate polarity in different ways. Refer to the corresponding datasheet to confirm the correct polarity before soldering. Align the LED according to the silkscreen markings, where the closed side represents the negative (–) terminal and the open side represents the positive (+) terminal.
2. Apply solder to one pad, then reflow it while positioning the LED to secure it in place. After that, solder the opposite pad.
3. The color of the LED may be selected and installed according to user preference. For reference, the MCU pins corresponding to each silkscreen text (R, G, B) are connected identically on both the left and right sides.
> [!CAUTION]
> LEDs are highly sensitive to heat. Ensure that you verify the proper soldering temperature and limit the soldering duration to prevent damage.
### LED Resistors

1. Install three resistors for the LEDs. These components are non-polarized and therefore have no orientation requirements.
2. Apply solder to one pad, place the resistor in position, and reflow the solder to secure it. Then proceed to solder the remaining pad.
## (Optional) ESD Protection

1. Install the capacitor and resistor for ESD protection. There are two available mounting positions, and either component (capacitor or resistor) may be placed in either location. Both are non-polarized.
2. As with previous components, apply solder to one pad, position the part, and reflow the solder to secure it. Then proceed to solder the remaining pad.
## Diodes

1. Orientation is critical: align the diode’s polarity marking with the silkscreen.
2. Due to limited space (ULP switches share space originally intended for LEDs), apply a **minimal solder amount**, centered between pads.
> [!TIP]
> After soldering, temporarily place the switch above the diode to confirm there is no interference. and testing!
## Switches

This is often the most time-consuming step.
1. If castellated holes were not ordered, the through-holes may be damaged or deformed. Carefully trim protruding copper with a knife or nippers. Take care not to peel off the copper entirely.
2. Apply a small amount of solder to one pad.
3. Position the switch and reflow to tack it in place.
4. Solder the opposite pad, then the remaining corners (usually four points are sufficient).


Flip the board to solder the switch contact points:
- Ensure good contact between the switch terminals and the through-hole walls.
- Use flux and controlled heat so solder bonds properly to both.
> [!TIP]
> Above each switch are two small test pads. Use a multimeter in diode mode to confirm continuity (flow direction: right → left).
## MCU Controller

1. **Flash firmware first** to verify the MCU is functional.
2. Position the MCU. If needed, insert header pins in the top-right and bottom-left corners for stability. (Remove after soldering)
3. Solder the castellated edges of the XIAO to the PCB pads.
⚠️ When soldering along the **outer edge (left side of the left PCB)**:
- Apply only minimal solder.
- Avoid bridges that may contact the aluminum case.

4. On the PCB backside, solder the 2 additional connection points. (Battery and Reset)
5. As with the switches, ensure solder bonds to both the XIAO and PCB.

6. (Optional) If you intend to use the LED, solder the additional pin located below.
## Battery

> [!CAUTION]
> Confirm the power switch is **OFF** before beginning.
> [!WARNING]
> Lithium-polymer (LiPo) batteries are hazardous. Even minor damage can lead to thermal runaway. Prevent shorts, punctures, or impacts. Mishandling can cause severe injury or damage to components.
1. This design does not use JST or Molex connectors. Wires are soldered directly.
2. Trim wires to length. Strip 1–2 mm of insulation and tin the exposed ends.
3. Double-check polarity (red = positive, black = negative).
4. Insulate the positive terminal with RTV silicone, Kapton tape, or another reliable method.
## (Optional) Magnet

Install magnets so that the polarity between the left and right cases is **aligned correctly**. ensuring they attract each other when closed.
Secure the magnets in place using **silicone adhesive** or **cyanoacrylate (instant glue)**.
## Case Assembly

1. Tilt the case slightly backward.
2. Align the rear ports first, then lower the front into place.

3. Fasten the PCB to the case using screws. Tightening should be firm but not excessive.
4. If using a cover plate, place it before fastening screws.
## Finish!

Your build is now complete!
## /docs/GETTING_STARTED.md
# Getting Started
Please read this document carefully before beginning your build.
It may be long and tedious, but every section is written with only the most essential information in mind.
## Step 1: Choosing Your Switches
This keyboard supports **Cherry MX ULP** or **Kailh PG1316S** switches.

### Cherry MX ULP
Developed by Cherry, available in both clicky and tactile versions.
- Actuation force: 65 gf (relatively heavy)
- Availability: very limited. both switches and compatible keycaps are difficult to source
#### Where to Buy
- Large distributors such as Mouser (very expensive)
- Geonworks (appears to be restricted to the Korean domestic market)
- Or, harvesting parts by desoldering from some commercial products. More details [here](https://github.com/pashutk/Cherry_MX_ULP).
### Kailh PG1316s
Developed by Kailh, with specifications and mechanism very similar to Cherry MX ULP.
- Actuation force: 35 gf, 65 gf
- Easier to source than Cherry MX ULP
- Often sold together with compatible keycaps
#### Where to Buy *(unverified)*
- Modulo Industries (US)
- Holykeebs (US)
- Keycapsss (EU)
### Which Should You Choose?
It largely depends on availability. Due to market scarcity, the **best switch is usually the one you can actually get** at the time of building. and don't forget the acuation force.
## Keycaps
The DELTA OMEGA uses **Choc spacing (18 × 17 mm)**.
- Standard ULP keycaps are **16 × 16 mm**. Using them will leave visible gaps between keys. Functionally this is fine, but low height and little wider gaps with higher quality. Refer to [Dell's Stock Cherry ULP Keycap Image](./../gallery/doo4.webp) and [Custom printed Keycap Image](./../gallery/d2.webp).
#### Suggested Approach
- Consider custom-printed ULP keycaps. Be aware: due to thin walls, 3D printed ULP keycaps can be fragile and prone to printing issues.
- You can loot keycaps from repair modules or broken parts of Dell laptop keyboards that use some Cherry MX ULP switches. Check [here](https://github.com/pashutk/Cherry_MX_ULP?tab=readme-ov-file#where-to-source) for reference.
- Removing ULP keycaps is difficult; my chosen method is to use FDM-printed keycaps and destroy them (cut with a soldering iron or nippers) when replacements are needed.
> [!TIP]
> [@mikeholscher’s notes on removing keycaps](https://github.com/mikeholscher/zmk-config-mikecinq?tab=readme-ov-file#about-removing-keycaps) may be helpful.

#### Height Considerations
The DELTA OMEGA prioritizes portability, so the case is slightly taller than the switches.
- Ideally, the keycap should sit just below the case edge (≈0.3 mm).
- Some users may find this uncomfortable. consider high-profile keycaps as an alternative.
## Soldering
Both switch types are SMT by default, designed for hot plate or reflow soldering.
To make the board more approachable, footprints were modified for **hand soldering**. This still requires moderate skills.
## PCB
### Main PCB
The PCB is **non-reversible** — you will need a left and right pair.
Two ordering options:
1. A single Gerber including both left and right PCBs
2. Separate left and right PCB files
**Why?**
Ordering both together requires mouse-bites or V-cuts to split, leaving rough edges. Since DELTA OMEGA leaves the bottom PCB exposed, rough edges and tight tolerances can cause issues.
Cost difference is negligible (1~2 USD), so choose based on preference.
### PCB Thickness

Options:
- Single 1.6mm PCB
- Combination of 0.8mm main PCB + 0.8mm bottom cover
If not an issue, you can freely choose thickness.
> [!TIP]
> The cover can be countersunk for a flat bottom. Note that 0.8mm is too thin for a perfect countersink, and the lower right corner (on the left half) is especially challenging.
> [!TIP]
> Customize your cover with some designs.
## Case
The case is recommended to be **CNC aluminum**.
Due to the thin and portability focus, a rigid case material ensures durability.
### Cost
CNC machining is often the largest concern.
- With JLC CNC (Aluminum A6061, bead blasting + anodizing):
Approx. **32 USD per side**
- Prices may vary, and should only be considered a rough reference
> [!TIP]
> Ordering multiple units (e.g., with friends) significantly reduces cost — as low as 30 USD per side. Coupons and alternative CNC shops can further reduce expenses.
Combined PCB + CNC costs are generally around **80–100 USD (excluding shipping/tax)**.
### Magnets
Three magnets can be installed inside the case to allow the halves to snap together for portability.
- This is optional; if you’re concerned about scratches, consider alternative storage solutions.
- Refer to the BOM for recommended magnet specifications (tested values).
### CNC Experience with JLC
For prototyping, I placed around six CNC orders from JLCCNC. Overall, the quality was acceptable: some uneven chamfering and minor surface scratches (barely noticeable) were present. But one piece arrived slightly warped(deformation), which is understandable given the hollow structure and thin sidewalls. so it carries an inherent risk of deformation. In my case, about 0.3 mm of tolerance shift occurred, requiring some manual adjustment with hand tools.
If you encounter similar issues, it would be a good idea to discuss them directly with JLC and work out possible solutions.
## LED Indicator

The design utilizes three individual LEDs as an indirect glow indicator. The color may be chosen according to user preference; however, the default configuration is Red, Green, and Blue. Refer to the [zmk-rgbled-widget](https://github.com/caksoylar/zmk-rgbled-widget) documentation to adjust the settings according to your preference.
When operating LEDs at 3.3 V, it is recommended to install appropriate resistors. Using resistors with lower resistance values will increase brightness, but also result in higher battery consumption and, to a lesser extent, greater load on the MCU. Note that even when identical resistor values are used, brightness may vary by LED color. Consider these factors when selecting resistor values. If uncertain, a 220Ω resistor is generally a safe and effective choice.
## Battery
You can use a 3.7V Li-Po battery. The size must fit within **25.2 mm × 17.7 mm × 4.2 mm**.
However, the commonly available **401725** model may not fit properly. This is because typical specifications often exclude the size of the protection circuit, and lithium polymer batteries tend to have significant packaging tolerances.
Be sure to check the actual dimensions before purchasing. Do not force the battery into place.
---
## Next Steps
- [Bill of Materials](./BOM.md)
- [Build Guides](./BUILD_GUIDES.md)
## /docs/images/back_ports.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/back_ports.png
## /docs/images/battery.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/battery.png
## /docs/images/case_assembly.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/case_assembly.png
## /docs/images/case_mounts.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/case_mounts.png
## /docs/images/dimension.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/dimension.png
## /docs/images/diodes.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/diodes.png
## /docs/images/esd_rc.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/esd_rc.png
## /docs/images/footer.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/footer.png
## /docs/images/keycapandcase.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/keycapandcase.png
## /docs/images/layout.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/layout.png
## /docs/images/led.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/led.png
## /docs/images/led_indicator.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/led_indicator.png
## /docs/images/led_resistors.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/led_resistors.png
## /docs/images/magnets.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/magnets.png
## /docs/images/pcb_stack.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/pcb_stack.png
## /docs/images/powerswitch.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/powerswitch.png
## /docs/images/resetswitch.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/resetswitch.png
## /docs/images/sw_back_cherry.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/sw_back_cherry.png
## /docs/images/sw_back_kailh.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/sw_back_kailh.png
## /docs/images/switch.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/switch.png
## /docs/images/two_switch.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/two_switch.png
## /docs/images/xiao_back.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/xiao_back.png
## /docs/images/xiao_back2.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/xiao_back2.png
## /docs/images/xiao_summary.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/docs/images/xiao_summary.png
## /gallery/README.md


















## /gallery/d1.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d1.webp
## /gallery/d10.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d10.webp
## /gallery/d11.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d11.webp
## /gallery/d2.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d2.webp
## /gallery/d3.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d3.webp
## /gallery/d4.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d4.webp
## /gallery/d5.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d5.webp
## /gallery/d7.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d7.webp
## /gallery/d8.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d8.webp
## /gallery/d9.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/d9.webp
## /gallery/doo1.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/doo1.webp
## /gallery/doo2.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/doo2.webp
## /gallery/doo3.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/doo3.webp
## /gallery/doo4.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/doo4.webp
## /gallery/doo5.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/doo5.webp
## /gallery/doo6.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/doo6.webp
## /gallery/doo7.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/doo7.webp
## /gallery/doo8.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/doo8.webp
## /gallery/header.png
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/gallery/header.png
## /images/README.md










## /images/do1.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do1.webp
## /images/do10.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do10.webp
## /images/do2.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do2.webp
## /images/do3.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do3.webp
## /images/do4.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do4.webp
## /images/do5.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do5.webp
## /images/do6.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do6.webp
## /images/do7.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do7.webp
## /images/do8.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do8.webp
## /images/do9.webp
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/images/do9.webp
## /pcb/README.md
# PCB
> [!TIP]
> If this is your first visit, please read the [Getting Started guide](./../docs/GETTING_STARTED.md) first.
---
## PCB List
| File | Description | Note |
|---|---|---|
| `delta-omega-rev4-handsolder-both` | Main Left & Right PCB with mouse-bite connection | MB Not tested. |
| `delta-omega-rev4-handsolder-left` | Main Left PCB | |
| `delta-omega-rev4-handsolder-right` | Main Right PCB | |
| `delta_omega_bottom_cover` | Bottom cover PCB plate | Reversible |
---
## How to Order
This guide is written based on **[JLCPCB](https://jlcpcb.com)**. While other PCB manufacturers may differ slightly, most ordering steps are very similar.
To place an order, you will need the **Gerber archive**. Simply upload the ZIP file found in [./gerbers/](./gerbers/) to the JLCPCB order page.
> [!NOTE]
> In JLCPCB’s Gerber Viewer, the edge cuts for hand-soldering switch may not appear. This is a known JLCPCB viewer issue and does **not** affect the actual manufacturing.
---
### Recommended Options
| Specification | Recommended | Notes |
|-------------------|--------------------------------------|----------------------------------------------------------------------|
| Base Material | FR-4 | Standard PCB substrate material |
| Layers | 2 | Two-layer board |
| PCB Quantity | As many as needed | |
| Product Type | Industrial / Consumer Electronics | |
| Different Designs | 1 | If uploading a combined left & right PCB Gerber, select **2**.[^1] |
| PCB Thickness | 0.8 mm or 1.6 mm | See [Getting Started](./../docs/GETTING_STARTED.md) for details |
| PCB Color | Your preference | |
| Surface Finish | Your preference | |
| Mark on PCB | Remove Mark | Recommended for a cleaner finish |
[^1]: If not selected, JLCPCB will automatically review your order and guide you to the correct option.
## /pcb/gerbers/delta-omega-rev4-handsolder-both.zip
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/pcb/gerbers/delta-omega-rev4-handsolder-both.zip
## /pcb/gerbers/delta-omega-rev4-handsolder-left.zip
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/pcb/gerbers/delta-omega-rev4-handsolder-left.zip
## /pcb/gerbers/delta-omega-rev4-handsolder-right.zip
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/pcb/gerbers/delta-omega-rev4-handsolder-right.zip
## /pcb/gerbers/delta_omega_bottom_cover.zip
Binary file available at https://raw.githubusercontent.com/unspecworks/delta-omega/refs/heads/main/pcb/gerbers/delta_omega_bottom_cover.zip
The content has been capped at 50000 tokens. The user could consider applying other filters to refine the result. The better and more specific the context, the better the LLM can follow instructions. If the context seems verbose, the user can refine the filter using uithub. Thank you for using https://uithub.com - Perfect LLM context for any GitHub repo.