I’ve been a Twitch streamer for six months now. Isn’t that weird? I’ve noticed that a lot of the really fancy streamers use an elgato Stream Deck as part of their setup. This is essentially a “macropad” – a little programmable keyboard that you can set up so that clicking a button kicks off a series of actions. People use them for adding sounds and graphics to their streams, replying to comments, even controlling lighting and cameras. They’re not cheap though, and as much as I coveted one, I didn’t think I’d use it enough to justify the expense.

Then somehow I found out about the duckyPad. This is an Open Source “do-it-yourself” mechanical macropad, and all up the components come to about half the cost of the Stream Deck. It has a very simple little scripting language you use to program each key, and it has a little screen that shows what each one does. You can have 32 different “profiles” (set of 15 keys), which means up to 480 different key actions. And it also lights up! I decided to order one and explore what I could do with it.

Here’s what it looks like straight from the box if you order the standard components:

duckyPad unassembled

Putting it together was actually very simple following the instructions in the Assembly Guide. Man, those tiny 2mm standoffs are awfully small though, even for my hands! The only difficulty I had was getting the keyboard switches inserted. They required a little more pressure than I expected, and I was really paranoid that I’d break one or bend one of the pins. As it turns out, when I had the thing together and turned it on, one of the keys was indeed dead. I pulled it off and saw that, yep, I’d bent one of the pins flat. Luckily the Snook whipped out a pair of pliers and managed to straighten it out, and once reinserted it worked fine. So yeah, the instructions say over and over to be careful for bent pins, and now I understand why!

duckyPad

The duckyPad comes pre-programmed with a couple different profiles, but most of them were Windows-specific. I installed the Configurator app and used the provided USB card reader to plug in the SD card. Then I was able to start creating new profiles and scripts.

duckyPad configurator

The duckyPad is literally just sending off key presses, just like you’re typing on your normal keyboard. So anything you can do via keyboard shortcut, you can trigger with the duckyPad. The critical thing for Mac users is invoking Spotlight with “COMMAND SPACE”. That’s what you use to open apps and change focus. I also found that often the duckyPad is too fast and I needed to insert a DELAY before subsequent key presses (like between opening the browser and typing in a URL).

One annoyance is that some apps’ keyboard shortcuts only work while the app is in focus. If you’re using Windows, there’s an “Auto-switcher app” that will automatically switch profiles based on which app is foregrounded. There’s currently no Mac version (someone is working on it), so I’ve found it helpful to have a dedicated key that switches focus back to the desired app (especially when presenting or streaming).

I’ve spent a few weeks now tweaking and refining my setup, and I keep finding new things to automate. With some of these, I just cannot remember the keyboard shortcut so having a button helps. With others, I’m finding that I already have the muscle memory for the keyboard shortcut so I may not need the macro. The ones that get the most use by far are volume control (much better than the stupid Touchbar on my Mac) and the “mute” shortcut (used to invoke Mutify and turn on/off my microphone), so I’ve reproduced those as the bottom row of keys across multiple profiles.  But read on to see what I’ve got so far…

And if you have any suggestions for things to add, please let me know!

P1: mac (most commonly used actions)

  • “firefox” – open Firefox
    • COMMAND SPACE
      STRING firefox
      ENTER
      GOTO_PROFILE 3 (switches to the dedicated Firefox profile)
  • “chat” – open work chat apps
    • COMMAND SPACE
      STRING slack
      ENTER
      DELAY 1000
      COMMAND SPACE
      STRING chime
      ENTER
  • “vpn” – open work VPN app
    • COMMAND SPACE
      STRING cisco
      ENTER
      DELAY 1000
      ENTER
  • “twitter” – open Tweetdeck in Firefox
    • COMMAND SPACE
      STRING firefox
      ENTER
      DELAY 800
      COMMAND T
      STRING https://tweetdeck.twitter.com/
      ENTER
      GOTO_PROFILE 3
  • “email” – open Outlook and switch to email view
    • COMMAND SPACE
      STRING outlook
      ENTER
      DELAY 800
      COMMAND 1
  • “cal” – open Outlook and switch to calendar view
    • COMMAND SPACE
      STRING outlook
      ENTER
      DELAY 800
      COMMAND 2
      DELAY 800
      COMMAND T
  • “notes” – open the Notes app
    • COMMAND SPACE
      STRING notes
      ENTER
  • “loop” – open the Notes app with my template for conducting a candidate interview
    • COMMAND SPACE
      STRING template: Loop
      DELAY 600
      ENTER
  • “workdoc” – open my Workdocs folder in Firefox
    • COMMAND SPACE
      STRING firefox
      ENTER
      DELAY 800
      COMMAND T
      STRING [url redacted]
      ENTER
      GOTO_PROFILE 3
  • “desktop” – open Desktop folder in Finder
    • COMMAND SPACE
      STRING finder
      ENTER
      SHIFT COMMAND D
  • “screen” – take a screenshot
    • SHIFT COMMAND 3
  • “window” – take a screenshot of an arbitrary part of the screen
    • SHIFT COMMAND 4
  • “vol -” – turn down the volume
    • MK_VOLDOWN
  • “mute” – invoke shortcut for Mutify to turn my microphone off/on
    • SHIFT COMMAND 0
  • “vol +” – turn up the volume
    • MK_VOLUP

P2: mac2 (less used actions)

  • “euro” – type € symbol
    • ALT SHIFT 2
  • “pounds” – type £ symbol
    • ALT 3
  • “emoji” – open the Mac emoji picker
    • CTRL COMMAND SPACE
  • “dock” – hide/reveal the dock
    • ALT COMMAND D
  • “fullsc” – make current app fullscreen (or turn off fullscreen)
    • CTRL COMMAND F
  • “powerpt” – open Powerpoint
    • COMMAND SPACE
      STRING powerpoint
      ENTER
      DELAY 800
      GOTO_PROFILE 5 (switches to the dedicated Powerpoint profile)
  • “keynote” – open Keynote
    • COMMAND SPACE
      STRING keynote
      ENTER
      DELAY 800
      GOTO_PROFILE 6 (switches to the dedicated Keynote profile)
  • “stream” – get everything open and ready for my knitting stream
    • COMMAND SPACE
      STRING killall (invokes an Applescript I’ve set up to close all open apps)
      ENTER
      DELAY 2000
      COMMAND SPACE
      STRING obs
      ENTER
      DELAY 1000
      COMMAND SPACE
      STRING firefox
      ENTER
      DELAY 1000
      COMMAND SHIFT W
      COMMAND N
      COMMAND L
      STRING https://dashboard.twitch.tv/u/knitting_with_kris/stream-manager
      ENTER
      GOTO_PROFILE 4 (switches to dedicated OBS profile)

I repeat the last six buttons from the P1: mac profile here as well.

P3: firefox

  • “zoom -” – zoom out
    • COMMAND –
  • “tabres” – restore last closed tab
    • SHIFT COMMAND t
  • “zoom +” – zoom in
    • COMMAND +
  • “prev” – move to previous tab
    • CONTROL PAGEUP
  • “winres” – restore last closed window
    • SHIFT COMMAND n
  • “next” – move to next tab
    • CONTROL PAGEDOWN
  • “track” – open my dedicated document for tracking work activities
    • COMMAND T
      STRING [url redacted]
      ENTER
  • “twitter” – open Tweetdeck
    • COMMAND t
      STRING https://tweetdeck.twitter.com/
      ENTER
  • “contact” – shortcut for custom Applescript that scrapes a LinkedIn page and adds contact’s details to my Address Book
    • SHIFT COMMAND .

Then I repeat the last six buttons from the P1: mac profile here as well.

P4: obs (invoking custom keyboard shortcuts I’ve setup within OBS Studio)

  • “stream” – start streaming
    • SHIFT CONTROL COMMAND T
  • “start” – switch to “starting soon” scene
    • SHIFT CONTROL COMMAND 0
  • “back” – switch to “I’ll be right back” scene
    • SHIFT CONTROL COMMAND 9
  • “scene1” – switch to 1st configured scene
    • SHIFT CONTROL COMMAND 1
  • “scene2″….
  • “focus” – switch focus back to OBS (in case I’ve been typing in the browser)
    • COMMAND SPACE
      STRING obs
      ENTER
  • “music” – turn the music channel on/off
    • SHIFT CONTROL COMMAND P
  • “mute” – turn my microphone channel on/off
    • SHIFT CONTROL COMMAND M

P5: powerpoint

  • “back” – go back a slide when presenting
    • PAGEUP
  • “present” – open presenter mode
    • COMMAND SHIFT ENTER
  • “next” – go forward a slide when presenting
    • PAGEDOWN
  • “black” – switch to an all black screen
    • STRING B
  • “white” – switch to an all white screen
    • STRING W
  • “main” – switch to “normal” view when editing slide deck
    • COMMAND 1
  • “sorter” – switch to “slide sorter” view when editing slide deck
    • COMMAND 2
  • “master” – switch to editing master slides
    • COMMAND ALT 1
  • “focus” – switch focus back to Powerpoint in case I’ve been demoing something in the browser
    • COMMAND SPACE
      STRING powerpoint
      ENTER

I also repeat the last 3 keys from P1 here too.

p6: keynote

  • “back” – go back a slide when presenting
    • LEFT
  • “present” – open presenter mode
    • COMMAND ALT P
  • “next” – go forward a slide when presenting
    • RIGHT
  • “black” – switch to an all black screen
    • STRING B
  • “white” – switch to an all white screen
    • STRING W
  • “switch” – when presenting with multiple monitors, swap which is presenter view
    • STRING X
  • “notes -” – scroll down in speaker notes
    • STRING D
  • “notes +” – scroll up in speaker notes
    • STRING U
  • “focus” – switch focus back to Powerpoint in case I’ve been demoing something in the browser
    • COMMAND SPACE
      STRING keynote
      ENTER

I also repeat the last 3 keys from P1 here too.