Setting Up X-Keys: A Control Surface Companion

Setting Up X-Keys: A Control Surface Companion

June 23, 2015

In this video, contributor Josh Petok shows how to setup the X-Keys XK-24. It's a perfect companion to many colorist control surfaces.


X-Keys In Action: Programmable Buttons For Quicker Grading

This Insight is from Mixing Light contributor Josh Petok. You can find Josh on the web at or on Twitter @joshpetok

Is your post-production software missing a keyboard shortcut or control surface shortcut for common actions?

For instance, in DaVinci Resolve, wouldn’t you love a one-button push that would:

  • Switch you from the Edit tab to the Color tab
  • Switch to the ‘Curves’ interface (even if your Blur interface is active)
  • And then switch to the ‘Hue vs Sat’ curve?

How much time would that save you over the course of a job? A month? Your career? Mixing Light Contributor Josh Petok decided the savings would be significant. He decided to check out X-Keys, from P.I. Engineering—a bit of hardware designed to do just what we described here.

Specifically, Josh wanted to save Stills to Resolve’s Memories without touching the keyboard

The problem: Team DaVinci Resolve hasn’t mapped ‘saving’ and ‘loading’ Stills to the Memories (in the Gallery) to any of the 3rd-party control surfaces. And since those mappings are not user-definable, Josh had to use the keyboard shortcuts if he wanted to use Memories for one-click copying of color grades.

Then Josh heard about X-Keys and decided to try them out.

X-Keys XK-24 programmable button pad
The X-Keys programmable button pad


X-Keys is USB-enabled programmable buttons

You can program an X-Keys button to do anything from changing the color of its backlight, to performing a keyboard shortcut, to executing a pre-determined series of mouse moves, clicks and button actions. P.I. Engineering makes several models of the X-Keys and the model Josh is using in this Insight is the XK-24.

As you probably guessed, the hardware by itself does nothing. You need software to program an X-Key.

P.I. Engineering includes 3rd party software for programming an X-Key device

If you’re on a PC then you’ll be using MacroWorks 3.1 for X-Keys. If you’re on a Mac then you’ll be using X-Keys ControllerMate.

In this Insight Josh will talk about:

  • Why he decided he needed to supplement his control surface when working in DaVinci Resolve
  • On overview of the physical X-Keys hardware
  • A detailed look at X-Keys ControllerMate for OS X

Josh will walk you through using the ControllerMate software to set its initial state. You’ll learn:

  • How to do simple programming, like executing a single keyboard shortcut
  • How to do advanced programming, like moving the mouse and executing mouse clicks

Team Mixing Light has known about X-Keys for a while but Josh got us to finally move on it

Both Robbie and Patrick have ordered an XK-24 to sit alongside our Tangent Elements. We’ll let you know how it works out for us, as well.

Are you using X-Keys or other programmable solution?

Let’s talk about it in the comments!


Homepage Forums Setting Up X-Keys: A Control Surface Companion

Viewing 24 reply threads
    • I nerded out for like 6 hours on ControllerMate and build a pretty cool control surface on a $30 drum pad. ControllerMate also gives you the ability to move the scroll a specified amount so if you position the cursor over the primaries you can set it up to do fine and course adjustments. I hope resolve supports using the arrow keys to increment input values eventually. Unfortunately once you build it it only works for that screen size so its not easily shared.

    • Patrick Inhofer

      That’s cool – using it for fine control of mouse presses. Nice.

      RE: Screen sizes – Yeah, I was thinking that I’d have to do two versions of all my commands – one for the screen size when I’m grading with clients and one for the 1920×1080 screen size when recording trainings. But for most users, I’d think it’s not that big a deal.

      Of course, in apps like FCPx where you can resize the UI as a window, you’d probably be best learning to love working the App at full screen, so those X/Y coordinates are always consistent.

    • RobbieCarman

      I just got mine from good ole Amazon today! Eager to try it out. Josh shows the basics of the mouse clicks thing, but the fine adjustment a .1 here or a .1 there sounds cool.

    • Jason Bowdach

      Perfect timing!!! Was just gonna set my xkey up when I had some time. Many thanks, Josh! Will be learning the included PC app, Macroworks, which is actually developed by the xkey team. Please share your configs, as it would be really cool to see how others are using it. I’m currently planning on using it for printer points (as I can print colored stickers) and tracking functions (which are buried deep in a Wave).

    • JoshPetok

      Very cool! You may remember this DIY control surface that was featured in the Tao Sunday newsletter.

      He also had some very clever ways of using ControllerMate to map the pots.

    • JoshPetok

      Nice! My pleasure, Jason.

    • You can set ControllerMate screen coordinates to refer to any corner of the screen, not just the origin(upper left). This could help because I believe the primaries panel and the curves panel are always the same distance from the bottom left of the screen regardless of resolution. You can also set it to refer to any corner of the current window.

      (I made that walnut DIY control surface you featured in the newsletter, BTW)

    • Verne Mattson

      Nice insight! I have Keyboard Maestro, and it’s mapping function is similar to X Keys. The problem with mapping keyboard macros is that with a program like Davinci, there are already so many keyboard shortcuts, all of the easily remembered ones are taken! So you end up with archaic modifiers. So this keypad looks great!

      I like working on the Elements panel, but my personal Avid Artist panel does have dedicated buttons for memories, which is very nice. It’s something that’s sorely missing (IMHO) on the Elements, but the X Key keypad looks like a nice solution for that missing feature.

    • That is just lovely tutorial!

    • rda

      I use a Novation Launchpad (80 buttons!), programmed with ControllerMate, alongside my Eclipse. My favorite button is the back-it-off-by-half button. It switches to the Key tab, enters “.5” in the output key value and hits return. One tip when using macros is that you can have ControllerMate choose a tab then leave the cursor over a control that can be modified with the scroll wheel. So many possibilities.

    • JoshPetok

      A “split the difference” button is a brilliant idea. Thanks for sharing it!

    • Bill Mpampouras

      Really interesting video, I am a user of X-Keys as well in my NLE. You should upload the video on YouTube as well, there is not much stuff online about ControllerMate etc.

    • Patrick Inhofer

      Agreed. It’s also the perfect one-button push solution to ‘Turning Off’ a node in a Layer… which will allow you to see a bypass of your Layer without deleting the darn thing. Love it.

    • RAMI A


      thanks for the information
      I have a question, is it possible to make multi pages and switch between the pages
      for exp.
      I set in page one in

      B#1 page one/ page two (switcher)
      B#2 node on/off
      B#3 add layer
      B#4 etc….up to B#24

      and i set in page two :

      B#1page one/ page two (switcher)
      B#2 memory 1
      B#3 memory 2
      B#4 etc…up to B#24

      So Is it possible to do that? and if yes could you please make a video and explain how to do it ?
      excuse my bad English 🙂
      thanks again

    • JoshPetok

      Luckily, there is a built in example for exactly what you want to do. If you have Controllermate open, navigate to “help -> Import Example” and choose item #5. It will set it all up for you. Hope this helps!

    • RAMI A

      Thank you very much Josh
      I did it and it’s work very good:)

    • Tom P

      Oh my my I have been wanting something like this but haven’t had the time to figure out how to set it all up. Thank you so much. Grateful! I have a new surge of projects just waiting for this to be in place.

    • Patrick Inhofer


      I’ve been programming my XKey and have the lights defaulting to off like you show BUT…

      When I press the button assigned to Loop, I’d like that button to light up until it’s pressed again. I can’t figure this one out. Any ideas? I’ve got a few ideas on ‘stateful’ button presses where I’d like the button to light up to remind me what mode I’m in, while keeping all the other button lights turned off 100% of the time.

    • Marc V

      Great Insight Josh!

      Does anyone know how to set up a Cursor/Mouse Button Building block on your 2nd display? I normally use Resolve in dual display mode and any mouse clicks that I’m trying to set up for the Powergrades is only applying to my Primary Display, not my 2nd display where it is located.

    • Patrick Inhofer

      Solved it. My first problem is not realizing there are Blue and Red ‘Backlights’ and Blue and Red ‘LEDs’. The LEDs are at the top left of the device. The Backlights are assigned per button. I was toggling the LED on, not the Backlight. I also switched to the ‘Toggle Building Block’ Logic to turn the Backlight On / Off. So now, when I press the button for Loop or Highlight Mode, the button lights up letting me know that mode is active.

      Of course, if I use the control surface or keyboard to deactivate, the button stays lit. But I’m finding it’s really speeding up my Resolve workflow with the Tangent Element. I’m mapping the ‘A’ side of the Multifunction Panel so I can leave that panel on the ‘B’ side 100% of the time.

      I’m also mapping out commands that are useful in several places in Resolve (like the Highlight command) but can only be found in the Secondary menu on the Element. I can’t express how much more precise I’m feeling, now that I’m not toggling out of what I’m doing just to turn Loop off or turn Highlight On… and still keep my hands on the control surface.

      More to come… I’m sure! 🙂

    • JoshPetok

      Sorry for the late reply, Patrick. I love the idea of using the LEDs to give you feedback on which mode is active. I agree, anything that keeps your hands on the surface is a win!

      You can also use a “beep building block” to give you audible feedback as well. I thought it would be a good idea to emulate how grades are stored in Nucoda. If you hold down a button for a couple of seconds, your current grade is stored and there is a slight beep sound. It’s helps let you know that the grade has been saved, but it also gives your client feedback that THEIR look has been saved as well. It gets around the “Did you save that look?” comment from the client 🙂

    • JoshPetok

      Sorry for the late reply, Marc. To get to the 2nd monitor you’ll need to use 2 cursor building blocks. I’ve attached a couple of screenshots to help you out. In the first cursor block, the mouse is moved to the top left corner of the screen. Then I used another cursor building block to move in a “relative” position. In this example, I moved the cursor 500 pixels left and 500 pixels down. Hope this helps!

    • David J

      LOVE THIS!!!! Thanks, Josh!! Just finished setting mine up. It’s a little tricky to do some of the Menu pulldowns, like VIEW –> Show Current Clip with handles. Actually, that one was easy, but the ones that have 3 step pop-outs, like View –> Split Screen –> Selected Clips, those are a little wonky.

      I set a button to go through a set a few of those modes how I like them – REF WIPE MODE –> OFFLINE, Window Outline –> UI ONLY, and Split Screen –> Selected Clips.

      Three things that make it tricky…

      1) Since you don’t enter clicks at each step of the pull-downs, you have to choose BUTTON DOWN instead of click, then move down, then move over, then down again, and then BUTTON UP.

      2) Since the pop outs don’t happen immediately, I had to program little 1/2 sec DELAYS in there to make sure the pop out comes up before the mouse moves.

      3) When you’re in the controller app, the BUTTON DOWN command does not work. It works when the app is not running, so you need to program it, then quit, then test, then open it back up to make any modifications.

      But once I have it figured out, it’s great. I wind up quitting Resolve fairly often, like when I’m popping out to Flame Assist for an FX shot – and it DRIVES ME NUTS that I have to rest those preferences every time I restart Resolve. Now, even with the delays, it gets set to my liking with one button, and about 3 seconds time.

      Thanks again Josh! I owe you a beer at NAB for all the time I’ll save with this!!!

    • John S

      Not sure if this is new, but I noticed they have a white LED version. I was hoping they had a way to have a dim and bright state on the buttons… and they do. I called them and they said there are two white LED’s in each button, so one could have all the LED’s on dim, and have a button bright when active. About to order one—thanks Josh!

      Also, anyone using the 16 Key strip? Looks like it might work nicely right in front of the Element…

    • Mickey M

      EDIT: I pressed a few buttons and clicked a few things and it seems to work now. Just trying to figure out if I can double tap a single button to make something happen.

      Just got the X-keys, I downloaded Patrick’s layout and imported it. Nothing works… and all these dumb LEDs are stuck on. What am I missing? Please help.

Viewing 24 reply threads
  • You must be logged in to reply to this topic.

Hundreds of Free Tutorials

Get full access to our entire library of 900+ color tutorials for an entire week!

Start Your Free Trial