Remapcro: A Hardware Keyboard Macro Recorder

2017-01-21 15:39 - Making

The assembled boards, with keys, top view. The assembled boards, with keys, bottom view.

I posted once recently about the prototype of this project, but as of today I've finished the first real one. The name Remapcro is a portmanteau of remap and macro, because that's what it does. It's an array of extra keys onto which macros can be stored, and then replayed at a touch. It works by sitting between your keyboard and computer. Normally key presses are passed straight through, but when recording a macro they are stored and then later replayed.

I made a handful of small errors along the way, but none were fatal. The worst is in the picture on the right, above. There are two PCBs to hold the electronics. On top one holds the key switches and the diodes which help make the keyboard matrix easy to read and error free. Then a second smaller one, holding the "smarts". There are a couple connections between the two of them, and the cross-wise one (top to bottom, at the edge of the smaller board) is off by one space. I ended up mounting the smaller board "upside down" and even though I thought I had the connector perfectly centered, it was off by a tenth of an inch. Thanks to the size of the key caps, there was already some extra room in the case I designed, and cutting a bit of the corner off the smaller board helped squeeze everything in anyway.

There's also one LED tucked into the top-left key (bottom left in the left picture above). It's actually three LEDs (red, green, and blue). And specially designed to fit exactly into these key caps. I could only find it in a lot of 50 from China, and I was too impatient to wait for it to arrive (and carefully check my design against it) before I ordered the PCBs. I ended up needing to put it in backwards, trim off a bit of the bulge that now sticks out rather than into the slot it's designed for, and re-wire the connections a bit.

Fully assembled Remapcro, front side view. Fully assembled Remapcro, rear view. Fully assembled Remapcro, rear side view.

The case the boards fit into was a challenge both to design and to produce with my 3D printer. But (perhaps aside from the screaming orange color, that's what was easily on hand for this first test run) I'm quite happy with it. A couple pieces slot together at the front, then a screw holds the back on, wedging everything together. The only problem was getting the back piece sized correctly, especially with all those holes. It's still not perfect, but it's functional. And if you were curious about the shape and arrangement of keys:

The first Remapcro, in-situ.

Of course, it's designed to look like it belongs, sitting next to a standard PC keyboard. I hope to re-design the case, ideally with more rounded corners and tweaking the alignment of a few things. Plus, supporting the insides better: right now it's only supported at the extreme front and back edge. This is mostly fine, but it can flex when pressing the keys towards the middle, which would be nice to avoid. I'd really like to fit everything onto a single board. That little space between the top and second rows could probably just fit all the electronics, but the problem is the connectors. With all the keys poking holes everywhere, not much room is left to mount the USB in and out ports. Who knows, maybe I'll come up with a brainstorm.

Comments:

Great looking project, is it open source?
2017-01-28 23:08 - Section8

Hi, I'm intrigued by this project being a shim between a normal keyboard and the pc. I've had a project in mind for a while where a hardware box intercepts corded keystrokes and substitutes macros. I do this in software atm, but the job i'm going into won't allow that.

is the project source available? thanks, Carl (aka section8)

Post a comment:

Username
Password
  If you do not have an account to log in to yet, register your own account. You will not enter any personal info and need not supply an email address.
Subject:
Comment:

You may use Markdown syntax in the comment, but no HTML. Hints:

  • An empty line between text will create a paragraph boundary.
  • Use angle braces around a plain URL to auto-link it: <http://www.example.com/>.
  • Use this format to create a link with different text showing: [An Example](http://www.example.com/).
  • Use backticks (``), not leading spaces to enclose a code block.

If you are attempting to contact me, ask me a question, etc, please send me a message through the contact form rather than posting a comment here. Thank you. (If you post a comment anyway when it should be a message to me, I'll probably just delete your comment. I don't like clutter.)