Dusting off the board!

A project log for Contourboarding

Implanting a custom USB brain and TrackPoint in an old Kinesis Advantage Classic contoured PS/2 keyboard

David H. BronkeDavid H. Bronke 08/14/2019 at 00:140 Comments

In December 2011, I started this project because I was fed up with having to use a PS/2-to-USB adapter for my keyboard all the time. (as of this writing, I'm still using an adapter, though at least I found one that could handle the power draw of this keyboard without losing connectivity every so often) I also had a couple of other ideas I wanted to implement: Switchable keymaps that can be managed via USB mass storage, fast response times (sometimes I still end up getting stuck keys with this keyboard because of how fast I type), N-key rollover (which may or may not actually be achievable without replacing the original circuit boards), additional keys (like "media keys", etc.) and a built-in TrackPoint.

The initial idea was to use a PIC18F4550 in order to implement a new USB-capable brain for the keyboard. After letting the project languish for several years only making periodic attempts at poking it, I finally picked it up again. Since I started, though, I've come to realize that PICs tend to require a bit too much legwork to get something working compared to Atmel/Arduino-based boards. I'm now in the process of slowly revisiting my old code and designs, and updating them to no longer require PICs.

I've also realized that I'd like to do a bit more with this board than I initially envisioned. I've had ideas of cutting the board in half and allowing each half to be tilted and positioned independently, connecting them with a cable. (likely I2C) I'd also like to integrate a USB hub, and if possible have the host port be a USB-C port. I'd also like to keep the design extensible so I can come back and do more crazy things in the future. (maybe per-key RGB lighting?)

So I'm finally dusting this project off, just in time for us to start packing to move to a new apartment. Hopefully I'll stick with it and eventually improve my keyboard!

First order of business is going to be choosing hardware. I'm definitely not messing with PICs again for this (although I have plenty of them in tubes at the moment... I just don't relish the idea of how much time it would take to get back up to speed with those, not to mention troubleshooting time) but that doesn't actually narrow things down that much. I have some Arduino Pro Micro clones, Arduino Pro Mini clones, DigiSpark clones, an MSP430G2152, and a few other random parts... but I'm also not opposed to purchasing new pieces if it makes sense.

I'll need at least 2 controllers: One with USB HID support that can be an I2C master to act as the main "brain", and one that can be an I2C slave for the second half of the board. It may even make sense to have both sides have I2C slaves, and have the master only be concerned with USB communication. The controllers that will need to be doing key scanning will need a decent number of I/O pins in order to do their jobs. (I'd say at least 15 pins per side of the keyboard, going from memory) Aside from those requirements, I could probably use just about anything, but I'm leaning toward Atmel or TI parts because of how simple the Arduino/Energia system is to work with.