The Wren is a split ergonomic "system keyboard". It takes heavy inspiration from the Lily58, Afternoon Labs' Breeze, and SplitKB's Kyria, in addition to employing a case similar to the Corne's.
My primary keyboard for the last few years has been Prime Keyboards' prime_o, before which I used a handwired Planck. On both I made pretty heavy use of the numpad. I grew to appreciate the prime_o's physical one, though, mostly because I spend a lot of time in Excel at my day job and like using the mouse and numpad simultaneously. I've been wanting to switch to ergo for a while, but I was annoyed by the thought of having to use a separate numpad to recreate that experience. This project was an attempt to solve that problem.
My original design simply incorporated a southpaw numpad. After some feedback, though, I decided to reinvent it as a "system keyboard" modeled after the old system cameras. The repository includes a universal PCB (incorporating break-away tabs) and plates to make four boards, each reversible:
Each of these boards (besides the macropad) can be combined with the others in a split setup, so users can take their pick of a right or left nav cluster/numpad, or combine both in the same board. You could even just use two of the basic boards together for a more traditional layout, though I'm sure there are more elegant designs out there for that.
The Wren uses a Pro Micro-compatible footprint, but is designed around the Elite-C's extra I/O pins on the numpad board. With just a Pro Micro, the outer column won't work. I think you could get a Nice!Nano to full compatibility with some creative soldering from the mid-board I/O pins to the appropriate pins on the Elite-C footprint, but I haven't spent any time on this myself.
The PCB uses reversible, MX-compatible footprints. There isn't hot-swap support yet, in large part because I didn't want to deal with the structural considerations of those sockets. If someone else wanted to make a pull request for a hotswap version, though, I'd be happy to merge it in.
The PCB is also specifically designed around rotary encoders with a diameter less than 0.5". I'm using Kilo 50 sized knobs, but others in a similar size class will work well, too.
This repository includes a top and bottom plate designed around M2 screws and standoffs. The bottom plate can be manufactured out of FR4 PCB material by any manufacturer; this will likely be the most cost-effective option. The top plate cannot be manufactured by my preferred PCB fabricator, JLCPCB, but your milage may vary. Instead, I used the .eps files included in the Case folder to have my top plates manufactured in stainless steel by SendCutSend. In my experience these plates are an extremely tight fit around Kailh Box switches, but considering these aren't hot-swap that's an acceptable trade-off for me.
To make a complete case, you'll need 7 M2 spacers (5 for the plain board), a top plate, and a bottom plate.
Additionally, I've planned a 3D printed outer case. This design wraps the PCB and top plate in a printed outer layer, and provides a bit more protection.
Tested code for this board is in the main QMK repository. Thanks so much to noroadsleft for getting QMK configurator working! To build a hex file with the default keymap, use the following code after setting up your QMK build environment:
qmk compile -kb wren -km default
This can be flashed to your keyboard in the usual way. The push-button below the microcontroler will put the keyboard into DFU mode.
When customizing your keymap, note that the matrix includes all keys that would be present in a numpad-numpad pair. In other words, even if the left side of your physical keyboard lacks a numpad, your keymap.c file will include those keys. Feel free to either mark all those keys with a KC_NO keycode or leave them as-is--it's not like you can press them anyway :). As well, if you'd like to plug your USB cable into the right half instead of the default left, add the following to your config.h:
#define MASTER_RIGHT
If you end up implementing something for this board in ZMK please don't hesitate to let me know or submit a pull request--I'd be happy to include documentation of that here, as well.
It should be relatively affordable to have these boards manufactured. Here are my costs for my PCB components at JLCPCB in USD as of September 2021:
And for my plates from SendCutSend:
The repository should include up-to-date zipped Gerber files, which can be used to have PCBs fabbed at your manufacturer of choice. I'm partial to JLCPCB (which consistently has very low prices and now offers aluminum PCB options for plates), but OSHPark is a good option if you're in the US and like purple or want single boards. For best compatibility, please have both plates and cases manufactured with a 1.6mm or 1.5mm thickness.
(I'm currently not planning on offering these boards as a kit. It should be cost-competitive to source the cases and plates yourself, and getting comfortable with ordering PCBs is a great first step to designing your own custom board. If you are interested in stocking this keyboard, though, please feel free to reach out and I'll be happy to provide any help I can.)
To assemble a numpad half, you'll need these parts:
To assemble a nav cluster half, you'll need these parts:
To assemble a nav cluster half, you'll need these parts:
To assemble an egg with a broken-off piece of a main board, you'll need these parts:
Please note that this build guide refers to the "top" or "bottom" of the PCB. Since the PCB is reversible, these terms are relative to the final orientation of the board, not anything absolute. For example, the top of the right hand board would be the bottom of the left-hand board.
TIP: Use needle-nose pliers to assist in bending diodes, as shown below.
Using the tape to ensure the headers remain straight, tack solder a pin on each strip.
Remove any remaining tape and solder the remaining pins.
Clean off any excess flux using isopropyl alchohol.
Using the standoffs, attach the rear plate to the board.