Beverly Hills BUG

Ride in Your Local Area

Building a Universal USB Button Controller

0 0
Read Time:3 Minute, 49 Second

My previous e-Controller project evolved in a few different directions with new ideas of my own as well as comments I read in reply to my post, some of these comments included:

  • Waterproof version of the e-Controller for those who sweat a lot
  • Cheaper alternatives to scene/stream controllers for streaming software
  • Windows and Mac functionality
  • Di2 Integration?
  • Steering for Zwift without the need for Bluetooth?
Off the shelf Scene Controllers run in to the hundreds of dollars

The basis of the controller in this project would be something that is highly customisable as well as simple enough to be updated regularly without the need to start from scratch each time. For the purpose of having a start and finish to this project I have a list below of what we are trying to achieve building this Universal USB Button Controller:

  • Waterproof Sprint (Power-Up & Elbow Flick) Buttons
  • Scene Controller for OBS Studio
  • Mute/Unmute Discord Chat


COST – $19.95

  • Hard Wired – No Interference
  • Inexpensive – Electronics stores for approximately $20
  • Multiple Inputs – At least 10 inputs (with included wiring)

The next step was working out how to make this work with Zwift and I found these great applications called AntMicro for Windows and *JoyStick Mapper for Mac (*untested, waiting on feedback), which are a graphical programs used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support which works well for this project.




  • Ready Available – On the internet
  • Inexpensive – FREE Download
  • Highly Configurable – Opens possibilities to other projects

The next part of the project was programming, this is very simple, just plug in the controller to a USB port on Laptop or PC then step through and allocate the various keyboard shortcuts for Zwift or OBS that you require to an input you will use (any input you like and any button/trigger type).


  • Button Input 1 – Left Waterproof Button – Space (Power-UP)
  • Button Input 2 – Right Waterproof Button – F1 (Elbow Flick)
  • Button Input 3 – Black Button – Scene 1 OBS – Keyboard x
  • Button Input 4 – Black Button – Scene 2 OBS – Keyboard c
  • Button Input 5 – Black Button – Scene 3 OBS – Keyboard v
  • Button Input 6 – Yellow Button – Mute Discord Chat – Keyboard ;
  • Button Input 7 – Yellow Button – Un-Mute Discord Chat – Keyboard /
  • Button Input 8 – Red Button – Start Stream – Keyboard n
  • Button Input 9 – Red Button – Start Recording – Keyboard b
  • Button Input 10 – White Button – Scene 5 OBS – Keyboard [
  • Button Input 11 – White Button – Scene 5 OBS – Keyboard ]

Button Interfaces

COST – $5 to $20 (all depends on how nice you want it all to look)

The final part of the project was the most fun! building buttons and making it all work.
Sprint Button and Elbow Flick Buttons – IP67 Buttons in small piece of 20mm conduit glued in place. Although picture is shown with cable tie mounting (holes drilled in conduit) I went with velcro strap mounting (shown in other pictures).

Sprint Button and Elbow Flick Buttons – COST $10

OBS Studio and Discord Scene control and mute/unmute button panel is just some inexpensive push buttons soldered to an off the shelf PCB board. To make length more practical I extended the USB Interface supplied cables to approximately 2 metres.

OBS Studio and Discord Mute/Unmute Button Panel – COST $14


I didn’t want to damage the bar tape using zip ties for fixing sprint buttons to drops so I went full McGiver here and went with some seat belt covers to serve a dual purpose, protect the handlebars as well as make attachment and removal of the sprint buttons simple.

I could have made button panel look a lot better however this does the job and next rainy day I can spend some time making up a nice bezel.

Final Notes

There was an outline set out above let’s see how we ended up:

  • Waterproof version of the e-Controller for those who sweat a lot – COMPLETED
  • Cheaper alternatives to scene/stream controllers for streaming – COMPLETED
  • Software Windows and Mac functionality
    Windows – COMPLETED Mac – To Be Tested
  • Di2 Integration?
    Di2 could be integrated as an external button/s much like the sprint buttons without the need to use the shifters
  • Steering for Zwift without the need for Bluetooth?
    This could be implemented using the joystick axis x and y where the longer you held the button the more accelerated the turn would be with return to centre (straight) instantly. The cost would be approximately $40 affordable enough for everyone to implement overnight, would it be feasible for Zwift?

I have more posts coming in following days on my other projects.

Johnny Tselikas

0 %
0 %
0 %
0 %
0 %
0 %
Visit Us On FacebookVisit Us On YoutubeVisit Us On Instagram