Trailpad

Trailpad is a controller overlay for OBS that's easy to install and customize, and specialized for fighting game streamers and content creators.


Adding Trailpad to OBS

1. Add a Browser source to your scene.2. Enter this as the URL:
https://chrisdejoya.github.io/Trailpad/
3. That's it!Tip: Alt-dragging the bounding box handles allows you to trim the margins, making it easier to work with in your scene.Tip: Set your controller to XInput/PC mode for best compatibility.


Basic Customization

Right-click on the overlay and select 'Interact' to start customizing. Left or right-click on the buttons and d-pad to activate them for editing.

Double-click on ButtonType to edit button text
Right-click on ButtonSelect colors for background and text
↑↓←→, d-padMove Up/Down/Left/Right
Shift + ↑↓←→Adjust Width/Height
[]Increase/Decrease Corner Roundness
Shift + []Increase/Decrease Font Size
EscReset to Defaults
DelHide the Selected Button
HomeUnhide All Hidden Buttons

Button & Text Colors

Right-click on a button to open the color palette. You can assign colors to both the button background and the font.

Button colors can be customized by setting their background color and text color properties in the Custom CSS field in OBS.Try using this example to give Trailpad a 2XKO-themed color scheme..joystickHead,
.btn[data-btn="A"],
.btn[data-btn="B"],
.btn[data-btn="X"],
.btn[data-btn="Y"],
.btn[data-btn="RB"],
.btn[data-btn="RT"] {
background: #171717 !important;
color: #CEEC73;
outline: 4px solid rgba(255, 255, 255, 0.1);
outline-offset: -4px;
}
.btn[data-btn="View"],
.btn[data-btn="Menu"],
.btn[data-btn="LB"],
.btn[data-btn="LT"],
.btn[data-btn="LS"],
.btn[data-btn="RS"] {
background: #242424 !important;
color: #cccccc;
outline: 4px solid rgba(255, 255, 255, 0.05);
outline-offset: -4px;
}


Light and Dark Arrows

The arrow images can't be change directly but can be swapped out with dark versions..btn[data-btn="Up"] { background-image: url("images/up-dark.svg"); background-size: 80%; }
.btn[data-btn="Down"] { background-image: url("images/down-dark.svg"); background-size: 80%; }
.btn[data-btn="Left"] { background-image: url("images/left-dark.svg"); background-size: 80%; }
.btn[data-btn="Right"] { background-image: url("images/right-dark.svg"); background-size: 80%; }


Recoloring the Trail

Add this line to the Custom CSS using whatever color you want, or set it to transparent to hide the effect.:root { --trail-color: #FF5F1F }
:root { --trail-color: #transparent }


No Joystick Input Display

You can block button inputs from being displayed on the joystick by adding this Custom CSS. Change the background color, width and height to whatever you want:.joystickHead {
background: #202020 !important;
color: transparent !important;
transform: translate(-50%,-50%) scale(1) !important;
width: 80px; height: 80px;
}


Save & Load Layouts

Saving and loading layouts is coming soon!In the meantime, feel free to download and run Trailpad as a local file if you need to have configurations for multiple games.Trailpad is provided as unobfuscated code for personal use. Please respect my rights as a creator!


Custom CSS Object References

Joystick Head.joystickHead { Insert properties here }
Color Trail:root { --trail-color: #yourcolor !important }
A Button.btn[data-btn="A"] { Insert properties here }
Up Button.btn[data-btn="Up"] { Insert properties here }
Down Button.btn[data-btn="Down"] { Insert properties here }
Left Button.btn[data-btn="Left"] { Insert properties here }
Right Button.btn[data-btn="Right"] { Insert properties here }
B Button.btn[data-btn="B"] { Insert properties here }
X Button.btn[data-btn="X"] { Insert properties here }
Y Button.btn[data-btn="Y"] { Insert properties here }
LB Button.btn[data-btn="LB"] { Insert properties here }
RB Button.btn[data-btn="RB"] { Insert properties here }
LT Button.btn[data-btn="LT"] { Insert properties here }
RT Button.btn[data-btn="RT"] { Insert properties here }
LS Button.btn[data-btn="LS"] { Insert properties here }
RS Button.btn[data-btn="RS"] { Insert properties here }
View Button.btn[data-btn="View"] { Insert properties here }
Menu Button.btn[data-btn="Menu"] { Insert properties here }

Feature Roadmap

Saving/Loading PresetsExport and load layouts as .CSS