CHOP Joystick should react to new or waking devices

Hi,

I’d like CHOP Joystick to be smart enough to make use of a previously configured joystick device, if that device is connected or wakes up AFTER the TD process has started running.

PROBLEM

CHOP Joystick lets you choose from connected input devices. This setting is saved between sessions. If the device is not connected or awake when TD starts then CHOP Joystick switches to the Default value. In some cases this is not desirable. When the originally configured device is woken up CHOP Joystick doesn’t see this event and sticks with the Default value.

EXPECTED BEHAVIOR

CHOP Joystick notices that the originally configured device is now available and starts using it.

WHY THIS IS A PROBLEM

I have a wireless Xbox controller on Windows. This controller will go to sleep after 5 minutes of not being used. If TD is started up at this time and runs a script that makes use of CHOP Joystick then the Xbox controller will not appear in the list of Joystick Sources (THIS IS EXPECTED, though the original setting could be shown greyed-out).

If the joystick is turned on and connects to Windows the existing CHOP Joystick can not see it.

I can get round this by closing TD and starting it again while the Xbox controller is awake. Having to do this is not good.

I can also get round this by deleting the existing CHOP Joystick and creating a new one. Now the Xbox controller is displayed in the drop down. Having to do this is also not a good thing.

Hm, I don’t see this behaviour on my system – I am using the wireless xbox one controller under Windows. Here’s what I did:

-Selected Player 1 as input with controller on
-Saved file and exited
-Powered down controller
-Reloaded the saved TOE
-Turned controller back on

At that point, my controller values are selected as expected.

One other not you probably know: you can assign a channel name to the “connected” param in the CHOP and use that to react to when the controller comes online and offline (CHOP exec, etc)

Can you confirm which TD version and Windows version you are running? Maybe there is a version-specific issue.

I’m using 2020.25380 on Widows 8.1

I tried your approach and the controller was not recognised after I reloaded the saved TOE and turned the controller back on. The results were the same regardless of the controller name selected.

If I turn on the controller and THEN reload the TOE then the controller is recognised as Default/Player1/Xbox, so these names would seem to be synonymous. The Xbox dropdown value only appears if the controller is on BEFORE the TOE is reloaded.

I also tried the following workaround, while the Xbox controller is on, which isn’t ideal:

CHOP Joystick -> CHOP Null -> rest of network…

I can then delete the CHOP Joystick, ensuring that there are no other CHOP Joysticks in the network. I can then add a new CHOP Joystick and join it to the Null and carry on.

I’ve determined that if I have a CHOP Joystick in the network that isn’t recognising the Xbox controller then I need to delete ALL CHOP Joystick objects first, before adding a new one. If I just add a new CHOP Joystick and THEN delete the original one, then the new one also does not recognise the Xbox controller. So you have to nuke all instances of CHOP Joystick in order for TD/Windows to see the working Xbox controller.

My intuition says it’s related to Win 8.1, or maybe you have some special drivers installed? I know there was more xbox controller integration into the OS back then.

Also you might try only having one instance of the Joystick CHOP in the network and using a Select CHOP to reference the master one. That could also be an issue.

The original problem showed up in a network with only one CHOP Joystick. I’m willing to bet that my setup is sufficiently odd to cause problems, and the fix is possibly to just upgrade to Widows 10, but I’ll save that for another day.