USB Footswitch

I made a USB Footswitch. Someone got in touch with me and wanted a button that could work with QLab and that they could easily trigger with their foot. I designed and printed an enclosure and I made it pretty darn solid. I’ve stood on it and it hasn’t broken yet.

You can find this USB Footswitch on Etsy if you want or need one. It can be programmed to do pretty much anything you could do with a computer keyboard, and it can alternately work as a USB MIDI device. Which, as long as you need only one button, might be useful!

Here’s a shoe for scale. It’s a shoe that belongs to my wife. I asked her if I could borrow a shoe and she didn’t even want to know what I was using it for. Anyway, it shows how you might trigger the button with your foot.

There’s a port for a Micro USB cable, and you’ll get a 6 foot USB cable with it. You could use a 10 or 15 foot cable if you have one, or use a pair of USB over Ethernet if you want to go even further. Maybe your computer is in another room, or another part of the building. Maybe it’s in the control room and you’re in the booth. I don’t know.

Those rubber feet on the bottom should prevent it from sliding around. It’s also fairly heavy for its size, so that should help it from sliding around. Stay put, footswitch!

Here’s a computerized rendering of the device. I model everything I 3D print using OpenSCAD because I love it.


A Real USB Knob and Virtual Knobs

Back in 2021 I built this USB controller featuring a rotary encoder that can turn endlessly in both directions. I sell the S1 Controller on Etsy.

If it’s programmed as a USB device it can act like a mouse scroll wheel, which I discovered some people love for controlling analog-style knobs on-screen. Typically someone will have a DAW with a bunch of dial in the interface where they can adjust them by putting their mouse pointer over one and then using the mouse scroll wheel. But some people really like the feel of turning an actual know… So we can do that!

With the S1 Controller you just put your mouse over a control and then turn the knob on the S1 Controller and the knob on-screen changes value. Along the way people would ask if the S1 Controller would work with their software, so I made this for people to test things:

Basically if you can control that knob with your mouse scroll wheel, we can program the S1 Controller to work for you. It’s that simple. (I’m a huge fan of simple devices.)

The S1 Controller can also be programmed as a USB MIDI device. Some people use it to control specific parameters in their DAW. Typically we set the knob to output MIDI CC3 (from 0 to 127), and the button to send 127 on CC9. (But we can use any CC number, or noteOn/noteOff, etc. Anything MIDI really.)

I’ve been pleased that so many people have wanted a physical control for an on-screen UI element. As much as we love what computers can do for us and the capabilities they provide, it’s still nice that the analog world (or the desire to emulate it) hasn’t completely disappeared.

(Oh, the code for the virtual knob can be found here: It uses the JavaScript pure-knob from Andre Plötze)


S3 Game Controller

Here’s another custom controller that was requested by someone. They were interested in the S1 Rotary Controller but wanted three knobs, and wanted potentiometers instead of encoders. No problem!

The main edit to the S1 was to widen the device to accommodate three knobs instead of one.

Here’s a photo of the device in use that I got from the customer. It’s attached to his larger game controller with some 3M double sided tape and it controls the X,Y,Z axes for the flight simulation game IL-2 Sturmovik.

Enjoy the renders below.


1/2/3 USB Controller

Here’s the story on this one. A local tradeshow company bought some of my controllers about six years ago. Since that time I’ve worked with them on other projects where I was the client, and I’ve worked for them (in various capacities) on other occasions.

Back in December the owner got in touch with me to purchase a few controllers and I got them built and programmed that night, and delivered the next day. Tradeshow exhibits can change on a dime, so he then texted a day after that with a more custom request. We texted around 5pm and by 9pm I had a device built and programmed and ready to be dropped off the next morning so they could get it installed over the weekend.

It’s not the prettiest thing I’ve built lately, but speed of delivery was the primary goal with this one. I also took some photos and wrote up a small manual to describe the operation and installation of it. Below are some of the notes from the docs.

The 1/2/3 USB Input Device consists of three buttons (with wires) and one controller box with a USB cable connected to it.

Each button connects with wires to the solderless snap connectors on the box. All of the black wires go into the large connector, and then the yellow wire(s) from buttons 1, 2, and 3 each go into the corresponding numbered connector.

The snap connectors have orange levers that open to insert the wire, and then close to lock the wire in place. Make sure the wire is inserted all the way. Once you lock the lever in place give the wire a light tug. If it comes out it was not inserted all the way. Open the lever and try again.

If longer wires are needed just strip the ends so you have bare wire, and twist them securely onto the ends of the wires connected to the buttons and wrap with tape. Then strip the other end and insert into the solderless connectors.

Note: The wires connected to the buttons do not have polarity, but one is black and one is yellow to simplify making the connections to the box. As long as one wire from a button goes to ground, and the other goes to a numbered connection, it will work. Color coding was implemented so that making the connections is easier.

If a longer (or shorter) USB cable is desired, the enclosure can be opened and a new Micro USB cable can be swapped for the existing one. Note that strain relief was added to the USB cable to prevent damage to the controller board.

A few more notes: I just happened to have this plastic enclosure in the shop which was handy. It’s been sitting on a shelf for years and it saved me the trouble of building a custom enclosure. (I often 3D print or laser cut an enclosure, but this was enough of a rush job I didn’t want to spend time doing that.)

The connectors I used are not Wago connectors but “Glutoad” connectors. They are cheaper and not as good, but I had a bunch in the shop so I used them. I know the tradeshow company has used Wago connectors before so I figured this would be familiar to them.

I tend to write documentation like this not just for the client, but for myself. Chances are they might want another one in the future and the docs help me remember exactly what I built. In a previous life I built exhibits that needed to be supported for five years or more, so some documentation was always required. Reading the docs now I realize they are not great, but again, this was a rush project so I figures something was better than nothing.


JoyToKey with USB Buttons

As you might know (or might not) I build custom USB (and MIDI) controllers. You can find them on Etsy.

Anyway, a (potential) customer got in touch with me and asked if we could make a button work with JoyToKey which is a Windows application that can map joystick input to key commands. It’s been a while since I programmed a joystick but it was fairly simple, and I had it all working in no time.

So add that to the list for future development if you ever need a button to emulate a joystick so it can send key commands. (Hey, we do what people ask!)

Here’s what JoyToKey looks like. The line highlighted in yellow is what happens when the button is pressed.When released it goes back to not being highlighted. Cheers!