I believe controller support can be done with just two behaviors, this is a description of each.
Joystick- It would be a trigger, and would work somewhat similar to keyboard, and would have to be set like one. (Like pressing a button on the keyboard to assign a key to the behavior)
It would have 2 outputs: Rot and Tilt.
Rot outputs from 1-360, and is based on the direction on which you tilt the stick, while Tilt outputs from 0-100, based on how much it’s tilted.
If you wanted to make the highest you could get with tilt a number, pair it with an expression. (In SB3’s case, the max speed is 8, so you’d multiply the thing by .08, so when the joystick is completely tilted, it would be converted to just 8.
Button: again set like keyboard, and could probably be replaced by keyboard if we really wanted. Note that some joysticks on controllers can be pressed inwards so that should be counted as a button as well.
Check- will output a 0 or a 1 at the beginning of the level, based off if a controller is plugged in or not, can also be inputted manually and will not automatically do so if connected to an output. (Like how a timer will output if nothing is connected to it’s “start”)