Overview

MacroPads have been a hot topic for years now as part of the tremendous continuing interest in custom keyboards. Search Hackaday for "macropad" and thanks in large part to  you will get pages and pages of blog entries with lots of cool designs (bananas and corn and sunflowers oh my).  A similar search of Instructables returns 27 MacroPad results. With software like QMK or Kaleidoscope to ease the burden of creating and configuring the MacroPad firmware, and cheap microcontrollers like the Arduino Pro Micro or Raspberry Pi RP2040 this shouldn't come as a surprise to anyone.

The reason that I'm jumping into an already very busy category is that I think that a tile based interface solves a couple of shortcomings common to all MacroPads. 

Labels/Legends

If the MacroPad is a simple add-on number pad, then it's easy to find keycaps with the appropriate legends to populate it.

For MacroPads that are meant to be programmed with arbitrary user selected macros, then the legends become a concern.  What does a "Check Inventory" button look like? Most commercial MacroPad offerings skirt the issue by shipping with attractively color coordinated blank keycaps leaving the user to memorize the function of each key.

There are other solutions. For instance, at the high end, from these very pages, "ADAPTIVE MACRO-PAD USES TINY OLED SCREENS AS KEYCAPS".

Cool except for the high per key cost and complexity. 

Another simpler and cheaper solution is Relegendable Keycaps. The clear plastic caps allow you to create and insert printed text or icons.

This is a pretty good solution, but it only works if the number of macros you want is less than or equal to the number of keys on the MacroPad. Which brings us to the second problem.

Many Macros/Few Keys

Once you begin using a MacroPad you start thinking about all the useful macros that you would like to use. You soon run out of keys to map the macros to. Configuration software like QMK solves this problem with layers. Layers allow the user to define multiple sets of macros for the keys available. Typically one key is assigned to switch between layers in one of the following manners:

One problem here is that a layer typically applies to all of the keys on the MacroPad. So when you switch the layer all of the key's macros change. Think of how this really exacerbates the legend issue. The user must remember all of the key macro assignments based on these hidden layers as the keycaps (except for the ones with tiny OLED screens) will be wrong.

So what is the solution?

A Tile Based Interface

My MacroPad has eight keys based on nice Fubata MD-4PCS switches. Beside each key is a slot that can hold a "special" tile which identifies a macro to be associated with that key. To be perfectly clear, all of the available macros will be defined in the firmware in much the same way as with other MacroPads. The tile holds a "simple numeric value" that maps the associated key to a specific internally defined macro sequence when the tile is inserted into the slot (details to follow).

Tiles can be swapped at any time changing the key's macro immediately. I'm a big fan of this tactile based interface. 

It's pretty obvious how this solves the few keys many macros problem. The user can define a large number of macros (I think up to 64 at this point) internally and can activate any eight macros at a time by simply slotting in the appropriate tiles.  

Furthermore the tile's approximately 2U size (necessary for technical reasons) is a great surface for defining meaningful, easy to understand, labels for the macro's action. Of course if you are attached to cool but cryptic icons you can do that too.

If there is any downside, it's that the tiles do take up a fair amount of real estate. I guess in the same space you can have 8 clearly labeled easily changed macro keys or 24 cryptic macro keys. Both have advantages I guess.

Current Progress

I've only been working on this project for a week or so. It's unusual for me in the sense that I already have a fully formed (I think) "shell", and now I just have to make it work. Normally I would be grinding away on the guts and the outside form would be done last. Weird.

My color scheme was inspired by the mauve keycaps that I bought. I think it's one of the nicest looking projects I have ever done.

"Reading" the tiles is based on work I did on my Turing Machine Demonstrator Mark 3 project. It involves inserting small magnets into the tiles (at various depths) and sensing their magnetic field strength with linear hall effect sensors. 

I'll be using an Arduino pro Micro for the brain and a 16 channel analog multiplexor to manage the hall effect sensors I will be using.  I'll be covering all of the technical details via project logs.

I'm going to try and keep the BOM costs down on this project. So no PCB, I'll just "dead bug" wire everything together. No fancy RGB LED light shows or sound effects. KISS is the order of the day. 

Cut Scene

This isn't really a cut scene. At this point given the background and design described above I went ahead and finished my MacroPad. If you are interested in the details of how this happened I would strongly encourage you to have a look at this project's logs for the complete picture. Here is a handy link: Project Logs. Make sure that the SORT BY: is set to Oldest to get a chronological view.

Final Thoughts

Super happy with the final project.  I works well. The tiles are recognized with perfect fidelity. As I have mentioned already, I think that this is the best looking project I have ever done (your mileage may vary). 

The tiles have a nice weight to them. It's hard to articulate how satisfying this tactile interface is to use, at least IMHO.

I think I did a pretty good job of keeping the overall project cost down.  My BOM looks like this:

PartCost (CAD $)Thoughts
Arduino Pro Micro$10.00Paid the Amazon tax for this one. Less than half the price on AliExpress if you have the patience.
8 Keycaps$8.00Paid about a buck a piece. Again Amazon tax but love the color.
8 Fubata MD-4PCS
switches
$4.00These I got at a pretty good price of 50 cents apiece.
CD4067BE 16-Channel Analog Multiplexer$5.00The DIP versions of this part are getting pretty rare. 
16 SS49E Linear Hall Effect Sensors$6.40About 40 cents each.
120 6 mm x 2 mm Neodymium Magnets$10.00Used about 100.
Miscellaneous$2.00Wire, printer filament, etc.
TOTAL$45.40I'm pretty sure with careful shopping one could get this down to $30.00 bucks or so. In US $ this total would be $33.11. 

For a macropad, this one is a little on the large size. The tiles do take up a fair amount of real estate, but as I have already said I think this is partially offset by the clarity of the labels. In truth, because of their size, I find myself occasionally trying to press the tile instead of the button. I'm sure my muscle memory will eventually make the adjustment, but it has gotten me thinking about how I could make the tiles the buttons as well. This would reduce the overall size of the MacroPad. I have a few ideas on how I could make this work. Stay tuned.