Wacom ExpressKey Remote & Linux

published: 2023-05-03
tags: hardware linux

I've had a "Wacom Intuos M" for around three or four years. I enjoy drawing as a hobby and it's useful for other things sometimes too, like photo editing. It has four shortcut keys at the top which are nice but I always have to have my keyboard sitting somewhere awkward near me to use it for hitting shortcuts which is fine, though not ideal.


I had a look around for a while for something similar but found surprisingly few options to be honest. XP Pen make a one that it is much cheaper at around €34 and looks sort of like a numpad with a scroll wheel on top. Another one that looks similar to the Wacom one is from XENCELABS, though it's more expensive at around €110.

The XP Pen remote looks quite chunky and only has nine buttons. The XENCELABS remote has a scroll wheel at the top and a neat little screen in the middle of it to label the buttons, though it has only has eight buttons you can swap the functions. The Wacom remote has a touchpad at the top, has the seventeen buttons and most importantly, even though I don't have any reason to think the other options wouldn't work on linux, I know for a fact this one would.

I'd decided on the Wacom one but held off getting it because it seemed very expensive for what it was, but two-ish weeks ago I thought "fuck it", I don't really buy that much very often so I just picked it up.

Initial Thoughts

It arrived last week, though it was the day after before I got a chance to play with it properly. It's been a few days now and I love it!

The remote is nice and slim, it has a rubbery back so it doesn't slide around and, of course, has plenty of buttons. It also has little bumps and indentations so you can feel which buttons your fingers are on more easily. The difference between using a keyboard and using this remote is indescribable in terms of comfort and even speed, though the speed part is very much secondary for me.

Drawing aside, it is also very good for general use. I've also played around with it as an OBS controller which it works quite nicely for and could be used instead of something like a Stream Deck.

Really, the only negative thing I have to say is that the button in the middle of the touchpad doesn't function like it does on Windows or MacOS. By default it functions as a scroll wheel and the middle button is supposed to change it's function, like switching to changing brush size for example, and it changes the LED indicator to show what mode it's on. I haven't been able to find a way to check what mode it's set to, which would have made scripting it easier.

It's worth mentioning that while the remote is wireless, it uses a dongle with no bluetooth option, which might be an annoyance or a deal breaker for some people.


To configure it I'm using xsetwacom which is simple enough to use and easily scriptable.

First, you'll want to get the name of your device(s) by running xsetwacom --list devices which will give you something like this:

Wacom Express Key Remote Pad pad    id: 22  type: PAD

You'll want to note down either the device name (including the odd extra "pad" part) or the ID number here since that's what you'll use to configure it. I prefer using the name because the ID can change between sessions.

A little quirk of the remote being connected via a dongle is that, unlike other devices like my tablet for example, is always listed even if the remote isn't actually onso you can configure it while it's off too.

Next, you can get a list of everything you can change using xsetwacom --list parameters which will list out the parameters for all Wacom devices and oddly, doesn't have an option to only show what's actually applicable to the connected devices but whatever.

For the remote the most important parameters are Button, AbsWheelDown and AbsWheelUp. The last two let you change what the touchpad does when move around it clockwise or anti-clockwise respectively.

Now the fun the part, actually setting what each button does, because aside from the touchpad being a scroll wheel, nothing else does anything by default. You set a button with the following command:

xsetwacom set "Wacom Express Key Remote Pad pad" "Button" "[NUM]" "[KEYS]"

Replace [NUM] and [KEYS] as required. You can also change the set to get and omit the last parameter to see what the button is assigned to. The touchpad can be configured by replacing Button with either AbsWheelUp or AbsWheelDown and setting your keys in the next parameter.

I spent a bit of time figuring out what number represented each button and made a little reference image available here. I made this one in Inkscape but I did original make a very messy one while I was figuring it out which you can see here if you're curious for whatever reason.

When setting the key you want to assign to each button you'll probably want to start it with the key keyword followed by a letter or modifier. You can get a list of how special keys are represented by running xsetwacom --list modifiers. Here's a couple of examples of how to configure a key:

xsetwacom set "Wacom Express Key Remote Pad pad" "Button" "12" "key insert"
xsetwacom set "Wacom Express Key Remote Pad pad" "Button" "13" "key PgUp"
xsetwacom set "Wacom Express Key Remote Pad pad" "Button" "14" "key b"
xsetwacom set "Wacom Express Key Remote Pad pad" "Button" "15" "key +shift del"
xsetwacom set "Wacom Express Key Remote Pad pad" "AbsWheelUp" "key ["

Putting a + or - in front of a modifier or a letter means it will hold down or release a key, not using these mean it will act as if you pressed and released it. If you leave the [KEYS] parameter empty it will revert to its default state, which is nothing for most things but it's an easy way to set the touchpad back to it's scrolling function. Setting [KEYS] to 0 will disable them.

I made a script that lets me swap between multiple modes. I'm not good at bash, so it's definitely hacky. If you want to use it, it should be run on startup to get the initial mode set then you'll need to bind a button that runs a script from your system's keybinds because unfortunately xsetwacom doesn't let you run scripts directly. If you have any suggestions for it feel free to tell me.

You can find my script on my git, which also has the reference image in PNG and SVG format.

I haven't finished deciding on my setup just yet, I'll probably update it as I go.

In the end, I'm happy with my new remote and been having fun with it, thanks for reading~