I was inspired by a similar project called "Mitosis," but opted to try to shove an optical sensor into my split keyboard - which has turned out quite well, all things considered!
I originally did a write-up on Imgur, but decided to move stuff over to here to enter the Human Interface challenge! If you want to read the original write-up on Imgur, see here:
Here's the low-down, and I'll get into more details as I have time:
Dichotomy is based around the nrf51822 Nordic Wireless Transceiver chip (bluetooth-capable, but I'm not using it). It has 24 mechanical switches, 1 optical encoder, and a switched rotary encoder on each keyboard half. These are all wired directly, since the uC had enough pins. The firmware mostly waits for a hardware interrupt from one of the switches, does some debouncing, then sends the keystates (on or off) in a compact, 3-byte blob (plus 4 more bytes for optical encoder status, rotary encoder status, and the switch on the rotary encoder) to a receiver module.
The receiver consists of an arduino pro micro with an NRF hat. The arduino runs QMK, a (fantastic, open-source) keyboard firmware derivative of TMK. The NRF receives the signals, concatenates them, and sends them via UART to the arduino, where QMK picks up the rest.
The circuit boards are many-function: first, you can break off the part to which the switch actually solders, and use it as a "plate" to hold all the switches mechanically. Second, it's mirrorable - so it's used for the left and the right halves. Finally, it contains a break-away receiver PCB underneath the battery holder: so it's all combined into a single PCB order.
The batteries should (haven't actually got there yet with active use) last 6+ months, so we'll see how that goes. The whole assembly is hot glued to a laser-cut acrylic base that slides pretty well on a standard neoprene deskmat (or just a desk). The base also holds a silicone wrist-rest to get a little bit of tactility when moving Dichotomy around.
Version 2 is currently in the works with some minor PCB updates and some software clean-up.