2017-01-02 17:38 - Making
Here's the probably final prototype of my Remapcro project. I don't think I've mentioned it (here in writing) before, so: long ago I had a Gateway Anykey keyboard. It had an extra row of Function keys down the left, plus a "Record Macro" button in the top right. Tap record, any target key, then any series of keys (and finish by tapping record again) and the macro is recorded. Tap the target key and now it replays the whole series that you typed the first time. It's a small thing, but it can help to iron out tons of small tedious tasks. For example, while I was working on this schematic I had a need to rename a couple dozen items to add a "k" in front of the name. It was several keypresses to do so, but I used the prototype itself to record a macro, then it was just one keypress, and some pointing with the mouse, all done!
Anyway, I'm working on recreating that same functionality with a piece of hardware. This is easy with software, but the extra row of keys from the Anykey is what makes it really useful, somewhere to put the macros. All the keys on my keyboard already do something! In the picture above at the bottom left is an Arduino Pro Micro, which already has the ability to masquerade as a USB keyboard when hooked to the computer. I'm pairing it with a USB Host Shield, top right in the picture, to read USB keyboard input, and pass it to the Arduino. Normally it is passed through unchanged, but when the record macro button is pressed they're also stored, so that they can be replayed. The chip on the bottom right is the flash storage for that.
This is actually the second breadboard prototype. The first was on a full size Arduino Leonardo, with full size USB shield. It was easy to work with, and the hardware was specifically for that prototype. The array of (six) buttons was going to stand in for the extra keyboard keys, but I'd have to do something unusual to access the extra I/O ports on the host shield, which I'm using for the buttons, and I'd like to leave that bit of hardware free for the real thing, so I've skipped that. I did in fact discover several small things (or maybe, one thing and extra things I created in my confusion, trying to find and fix that one thing ...) but now everything else is working here, so I'm confident enough to spend the time and money to put together the final version with real keys and all.
One of the things I got wrong was setting my logic analyzer to too slow a sampling rate. That made so many things look to be completely wrong, and sent me on several wild goose chases. Never again! I hope ... I also broke out the 8-SOIC socket, to hold the flash chip, for the first time. Very nice, to put this surface mount part on a breadboard. I'll have to get more shapes and sizes of those.