Keypad:GO!

Keypads: cool but tedious. Let me fix that.

A green circuit board nestled between a keyboard's arrow keys and its insert/delete cluster.

There’s nothing quite like the feel of a chunky physical keypad, like on an old phone or ATM. It adds a certain feel, a certain groundedness, to a project’s user interface.

Interfacing with a keypad isn’t hard, but it can be tedious and requires a bunch of pins. Once you get the keypad in your hands, you’ve still got to

If you were trying to build something that includes a keypad, all this work on the keypad itself can seem like a lot. If your project needs to run some code on that microcontroller…well, having to also scan a keypad can add a lot of complexity.

I got tired of all that, so I built this widget. It’s called Keypad Go, because that’s what it do: make keypad go.

Keypad Go does the tedious stuff so you don’t have to

Keypad Go is a tiny backpack you slap on the back of a typical keypad (or wire up to a more elaborate system of your choice). You provide a USB-to-serial cable (or old-school serial port), and Keypad Go will have you up and running within two minutes, even if you don’t know anything about the keypad.

Seriously. Keypad Go will:

  1. Figure out how the keypad is wired for you. You’ll have to help by pressing keys, but it’ll do the rest.
  2. Determine an efficient configuration for scanning the keypad at a high rate. (And show it to you, in case you’re curious.)
  3. Save the results so it survives power loss.
  4. Turn keypresses into serial data at 19,200 baud – easy to feed to anything from an Arduino on up.

If you ever need to change the settings – or move it to a different keypad – there’s a SETUP button that will restart the process. Easy. No software required beyond your usual way of talking to a serial port.

Tech specs

Documentation and Support

There are two versions of Keypad:GO! in the wild: version 1 (green board) and version 2/3 (black board).

Both versions use the same open source Rust code.

Version 1:

Version 2/3: