The keyboard went back together better then I expected. All the keys still work (for now), so it was time to finish the documentation so a working controller can be programmed. I picked up a couple OSH Park edition Teensy 3.2s with a board order a while back. I figured I'd have a use for them eventually. From what I can tell, it's one of the chosen platforms for custom keyboards, so this should be easy, right?
I started looking into what it takes to load up a custom configuration of QMK and was immediately confused. Maybe it's just me, but it seems it's pretty easy to get working on a supported (or community supported) keyboard, but way less straightforward on an arbitrary layout. First things first though. I needed to model the keyboard. The physical layout was relatively easy to reproduce on keyboard-layout-editor.com.
The keys are updated a bit to fit the current decade. Option is now Alt, and Command is listed as Win - more generically known as the GUI key. Delete and Backspace were flipped compared to current keyboards, so I changed it to match in this layout. Return and Enter will both be mapped to Enter in the programming, although the position of Enter is a bit archaic and I may map it to something else eventually. However, I first need to work out the wiring.
I imported the layout into Keyboard Firmware Builder (kbfirmware.com) to see what it would give me. With the wiring reproduced virtually, here's what we get:
Pretty, isn't it? I understand why some of the decisions were made. An old membrane keyboard doesn't exactly include diodes, so the layout is intended to reduce ghosting. Of course that means the layout in QMK will have to be fully customized, a task I have had a hard time finding information about. QMK appears to be very powerful, but for someone new to the scene, the learning curve seems steep, and I haven't been able to find a good walkthrough.
After a bunch of digging, I think QMK sounds great in theory, but it's kind of a lot. I appreciate the support it provides to the custom keyboard community, but it seems needlessly complicated for my purposes. I've done some embedded programming, and think I can do the same thing, but much simpler. This whole project was supposed to be a learning experience, right?