ANAVI Macro Pad 2

Open source, programmable two-key mechanical keypad with backlighting

Jul 30, 2024

Project update 14 of 14

Field Report: Mini Desktop Media Control

by Henrik N

My Hunt for a Small, Simple, Media Control Device

It all started with my need to control media playback at work. Since I work on different computers using a KVM solution, it takes time for me to switch over to the right system and pause the music whenever a co-worker comes over for a chat. I quickly decided that I need to control this directly without having to add a full keyboard to my desk.

Since an office desk is always at risk of becoming too cluttered, I started chasing down some kind of hardware that was small and could solve my problem. After a lot of Googling, I found a media control device from Amazon which, surprise surprise, didn’t work as expected! Then I found some programmable micro-keyboards (with a few buttons) from China but this felt sketchy, so I kept searching and eventually stumbled upon the ANAVI Macro Pads.

After some investigation (and not really caring about processors, etc.), I decided the two-button device called Macro Pad 2 would be enough for my needs as I planned to have one button for "play/pause" and the other button for "next song". The Macro Pad 2 arrived in the mail and I started tinkering and following the documentation to get it up to speed.

It turned out the Macro Pad 2 was no longer supported in QKM, so I had to install an older version of the software. However, it still didn’t work (here somewhere my own knowledge about programming met it limits but my stubbornness made me keep at it). After a few hours of troubleshooting, I reached out on Reddit and, later, to Mr. Leon Anavi himself. It turned out I had to install older version of QMK while also doing some tweaks to Python3-PIP (this is now all documented in the updated guide in GitHub) to get it to run. After I got it to compile, I started tweaking the code to better suit my needs. I even got the LEDs to light up when the buttons have media playback control of my choice.

Here is the code I used to get the function I needed:

#include QMK_KEYBOARD_H

void keyboard_post_init_user(void) {
// Set backlight to the low brightness with 1. Can also be set to max with 2.
backlight_level(1);
}

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT(
    KC_MEDIA_PLAY_PAUSE,  KC_MEDIA_NEXT_TRACK
  )
};

After using it for a while, I added a custom keycap for fun. (I’m currently waiting for a second custom keycap.) It adds a bit of weight to the Macro Pad 2 (which is quite light). A cool bonus is that the red LED makes the sleeping unicorn look a bit evil!

The current setup is that the left button with the volume sticker on it is the "play/pause" media-button. I used the volume-sticker since in my brain this made sense as a "volume on/off button" (it was the best I could find in the included sticker kit)! The unicorn button is "next song".

Here is the GitHub repo with the Macro Pad 2 documentation and code I used for installation: https://github.com/AnaviTechnology/anavi-docs/blob/main/anavi-macro-pad-2/anavi-macro-pad-2.md. (This section was updated after my input.)

I now have what I needed from the start while also learning a lot during the whole process. As an added bonus I could also support a crowd-funded, open source project! Yay!


Sign up to receive future updates for ANAVI Macro Pad 2.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects