Standalone T9 Predictive Keyboard

Fast, tactile, one-handed typing with a T9 powered macropad. Runs CircuitPython, so you can drag/drop your own custom dictionary.

Similar projects worth following
A T9(ish) predictive-text implementation that lives in the firmware itself!
This means it will work on any machine that accepts USB keyboard input.
Great for quick one-handed typing.
Words are updated "in place" by quickly/strategically injecting backspace characters.

* Runs on any CircuitPython capable device hooked up to a 3 X 4 button matrix. Tested primarily on the RP2040.
* Words are stored in a serialized trie, which can be traversed directly from flash, so dictionary size does not impact program memory.
* Since dictionary lives on flash, it can be updated (drag+dropped, thanks CircuitPython!) independently of source code.
* Supports the other kind old cell phone style input, where you double/triple/quadruple-click a button to get the character you want.
* Can be alternatively booted as a normal number pad or function key matrix.

You remember T9, right?

This was the "predictive text" algorithm used mainly by cell phones in the 90's and 00's that allowed you to type on 12 buttons, while maintaining a keystroke-to-valid-character-input ratio of close to 1.

Basically, T9 searches through the combinations of letters tied to keypad sequences and looks for valid words/prefixes.

So if you typed: 2-3-3-7, the algo would have to search for words in:


If you're lucky, you'll have typed: beer

But if for some reason, that's not what you were going for, you can hit the "cycle" key and the algo will swap out "beer" for "beep", and then maybe "bees".

Here's a clip of me typing the word "actually". You can see the word replacements happening in real-time.

  • Algorithm Walkthrough Video

    Guy Dupont08/30/2021 at 02:23 0 comments

    A high-level explainer on how I implemented the T9 functionality.

  • Library Generator Now Online!

    Guy Dupont07/06/2021 at 14:31 0 comments

    A few updates:

    1. You can now turn any list of words into a library file to be used with the firmware for this project. You can either run it locally, or use the version I have hosted online here.

    2. Added "official" support for the Adafruit QT Py RP2040. My macropad is pin compatible with both the QT Py RP2040 and the Pimoroni Tiny 2040. It should work with the SAMD21 based QT Py as well, but I have not tested it. You're gonna want to use external flash if you go that route.

    3. I got a bunch of parts in!!! Have a modest supply of PCBs, Key caps, switches, and compatible micro's. More on that  soon.

    QT Py RP2040 <- -> Tiny 2040

View all 2 project logs

  • 1
    Connect Raspberry Pi Pico Pins

    Connect wires to pins:
    GP9, GP10, GP11 (These will connect to keypad column pins)
    GP12, GP13, GP14, GP15 (These will connect to keypad row pins)

  • 2
    Connect Keypad Pins

    Looking from the top, the left-most pins are connected to the rows, and are followed by the column pins.

  • 3
    Install CircuitPython on the Pico

    Follow the Adafruit instructions here.

    Make sure you're using a version newer that 6.2.X

View all 5 instructions

Enjoy this project?



dg wrote 08/31/2023 at 12:01 point

As a poor typist I wonder if a list of Python (or other language) words would be a good use for this project? The word list is not massive. I will look at your library generator ans see if there are any issues.

  Are you sure? yes | no

Guy Dupont wrote 09/05/2023 at 14:51 point

I know that folks have used this for programming tasks! Should have plenty of room, especially with V2 of the firmware. The only problem is custom function/class/variable names. Hard to do capitalization with the current version.

  Are you sure? yes | no

dg wrote 08/31/2023 at 11:30 point

I have wanted to do this for years. In fact my old Nokia was the trigger for the idea but real life got in the way so it never happened. Well done you!

  Are you sure? yes | no

Suki Pamungkas wrote 09/01/2021 at 15:51 point

Hello, I'm a visual designer with zero knowledge of electronic and programming but really interested to learn it. I have some questions for this project:

1. Is it possible to add bluetooth function for this macropad? What do i need to add that to the board? Perhaps bluetooth module and battery? If you have some references I'm happy to look through it.

2. Is it possible to add LED display, rotary encoder and RGB light for your PCB and Pimoroni Tiny 2040 like the Adafruit Macropad ( ? Is your Github page here ( has all the files/program to be like the Adafruit?

  Are you sure? yes | no

Guy Dupont wrote 09/01/2021 at 21:03 point

Hi Suki!
1. Not easily. I think it might be possible if you used this:
as your dev board instead of the RP2040 based boards that I tend to use. But A) that won't fit on my macropad PCB and B) would need to write a bit of code to hook the bluetooth keyboard stuff up. I think I have one of these sitting around? I might try it. And yes, you would need a battery as well.

2. I ported the firmware to run on the adafruit macropad!
That link is correct. The code you want is in the file. The lights are a little boring right now, but it works.

  Are you sure? yes | no

Suki Pamungkas wrote 09/02/2021 at 01:38 point

Cool, wired T9 macropad is still a great device!

3. Another question I want to add is, how do I make it as a regular macropad that I can custom each of the key to work on Ipad for example or Windows?

Thank you so much for your help. Really appreciate it!

  Are you sure? yes | no

davedarko wrote 07/25/2021 at 16:58 point

Ahhh what an amazing project :)

  Are you sure? yes | no

sanchit wrote 06/06/2021 at 17:22 point


  Are you sure? yes | no

Leah wrote 06/04/2021 at 17:04 point

This is lovely! Some questions:

1) Will you be selling boards/kits like the ones listed at ?

2) If so, when? I'd like to buy one.

3) In any case... where did you get those fantastic keycaps? Did some googling, found nothing.

  Are you sure? yes | no

Guy Dupont wrote 06/04/2021 at 18:18 point

Thanks! And yes, I hope to sell a kit! The keycaps were designed by a friend, and I got them custom made. I am about to place a pretty big order! Will post here when they're available.

  Are you sure? yes | no

Leah wrote 06/04/2021 at 18:45 point

Exciting! Thank you!

  Are you sure? yes | no

Guy Dupont wrote 07/07/2021 at 13:44 point

I have PCB's and keycaps up on etsy now! I'll be putting fully assembled keypads up soon:

  Are you sure? yes | no

Guy Dupont wrote 05/30/2021 at 20:27 point

If anyone for HAD sees this, I did not mean to submit for the "Rethinking Displays" Challenge :P

  Are you sure? yes | no

kristina panos wrote 05/31/2021 at 22:10 point

Thanks -- I made a note in the spreadsheet. :)

  Are you sure? yes | no

Guy Dupont wrote 05/31/2021 at 22:27 point

thanks Kristina! 

  Are you sure? yes | no

Mike Szczys wrote 05/25/2021 at 18:11 point

Awesome implementation! @Elliot Williams you should see this!

  Are you sure? yes | no

Guy Dupont wrote 05/25/2021 at 18:29 point

Thanks Mike! I have a few other hardware revisions too, including some vintage stuff. Should have a video this weekend.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates