Jump to content

[Windows] Cannot set joystick rotation controls


Recommended Posts

I just bought a Logitech extreme 3D pro as my first joystick so that I could use it for KSP, a game that i am relatively new to, but is quickly becoming one of my favorites. My issue is that under the Flight option in the input settings the movement of the joystick does not register as a command. Each of the buttons on the joystick work, just not the directionals. This is the case for the rotation, translation, throttle and other settings. Am I doing something wrong or is there a bigger problem to this?

Link to comment
Share on other sites

Hi Penguinator, the screen is split between key/button bindings on the left, and analogue input/axis bindings on the right, please make sure you are using the axis bindings when setting up pitch, roll, yaw, throttle or the hat switch on your controller.

Hope this helps.

jRtGlf7.png

Link to comment
Share on other sites

@sal_vager

Hi. Sorry to bug with this, but I've run into similiar issues related to the Joystick. I assume it would not be necessary to launch another thread.

So far, all had been calibrated in Windows 7. Although, I must note that this is a Thrustmaster USB (Joystick) and Win7 seems to recognize it as a Game Controller. 

 

In KSP, I have both tried the standard axis setup and also the Advanced Fly-By-Wire 1.2.x workaround, with no success.  In flight, no matter what is set, pitch and roll axes will just max out when the joystick is at rest. Recalibration and such has not worked :(.

Link to comment
Share on other sites

Hi, so far I do see response in the options and AFBW mod. I must say that there a long while ago, I did use a usb game pad for entirely something else, now that I think about it.

If that is an issue, I am not sure how to 'delete game controller' in win7. :(

 

Edit

Oh. Device manager. I will see if this does anything.

Edited by Spraki
Link to comment
Share on other sites

7 hours ago, Spraki said:

Hi, so far I do see response in the options and AFBW mod. I must say that there a long while ago, I did use a usb game pad for entirely something else, now that I think about it.

If that is an issue, I am not sure how to 'delete game controller' in win7. :(

 

It should only matter if there's other controllers attached currently, so having used an old pad won't be an issue if it's not attached while you are using the Thrustmaster with KSP.

Have you tried increasing the deadzones? Also how old is this stick?

Link to comment
Share on other sites

Technically put, I bought it last year - literally a year ago and it was still boxed up until I have recently decided to use it.

I have increased deadzone to 40% and such but the result remained the same.

I spotted other responses from you and other posters saying that unity code is that feasible when it comes to joysticks? And that it does not handle oldschool negative values input?

I fear this cannot be solved.

Link to comment
Share on other sites

This might not be connected to your issue, but here is something to consider. Ever since 1.2 I had to fiddle with joystick settings a lot. I even had to throw out one particular stick that would give me wrong input (like twitches to full tilt etc) no matter what deadzone/sensitivity settings I tried, and the stick actually works perfectly fine as per the windows calibration thing. I should try it again on older versions of KSP. Even though I never spotted anything in the changelog, I believe there is some difference somewhere now.

Link to comment
Share on other sites

1 hour ago, Spraki said:

Technically put, I bought it last year - literally a year ago and it was still boxed up until I have recently decided to use it.

I have increased deadzone to 40% and such but the result remained the same.

I spotted other responses from you and other posters saying that unity code is that feasible when it comes to joysticks? And that it does not handle oldschool negative values input?

I fear this cannot be solved.

I was expecting it to be older, what you describe sounds an awful lot like wear and tear causing the sensor to max out with a small movement, usually to reduce to normal values as the stick is moved away from the center, though most joysticks use hall effect sensors now so there's not supposed to be any contact between the parts.

My Logitech Wingman Extreme still needed cleaning to work properly but it is over 10 years old, and the rudder isn't 100% reliable (jumps to full left rudder at the slightest touch).

Unity joystick code is poor, there's no denying that, and the Unity forums have plenty of complaints from developers who are trying to support anything more complex than a 2D platformer, unfortunately some sticks will refuse to be detected, I have a set of CH pedals here that Unity cannot see.

As far as values are concerned, it uses whatever Xinput is returning on Windows, and rawinput on Linux and OSX, and it uses the value returned by the stick when KSP starts as the center, which is why you need to start KSP on Linux with the throttle at 50%, as even that axis is treated like a 2 way analogue input.

Can you try moving the stick through the full range of the axis when binding it?

Link to comment
Share on other sites

12 minutes ago, sal_vager said:

Unity joystick code is poor, there's no denying that, and the Unity forums have plenty of complaints from developers who are trying to support anything more complex than a 2D platformer, unfortunately some sticks will refuse to be detected, I have a set of CH pedals here that Unity cannot see.

As far as values are concerned, it uses whatever Xinput is returning on Windows, and rawinput on Linux and OSX, and it uses the value returned by the stick when KSP starts as the center, which is why you need to start KSP on Linux with the throttle at 50%, as even that axis is treated like a 2 way analogue input.

That is a very nice piece of insightful information. Thank you. But it's sad to hear that the problem originates from Unity itself, and thus might take a long while to be fixed and implemented.

Nevertheless, the bit about rawinput vs Xinput is news to me. Thanks for sharing.

Link to comment
Share on other sites

2 minutes ago, Dafni said:

That is a very nice piece of insightful information. Thank you. But it's sad to hear that the problem originates from Unity itself, and thus might take a long while to be fixed and implemented.

Nevertheless, the bit about rawinput vs Xinput is news to me. Thanks for sharing.

Well each developer has to implement their own controller handling beyond the basics, you can set up Unity projects to treat all sticks the same quite easily as you can see here.

You can set up different axis for each stick, and either have presets that the player has to manually select or try to detect the sticks name, but that doesn't work if the stick has no hardware name that Unity can detect.

And some just flat out don't work, at all, like with the CH pedals I mentioned, I don't know why though, as a guess maybe Unity can't handle controllers that don't have buttons.

Another way to handle sticks in Unity is to set up all controllers in Unity with all their axis and buttons defined, then translate the users bindings to the built-in values, that lets you have stuff like custom controls for any (working) joystick.

But there's still some Unity limitations, for a start no more than 20 buttons per stick, Unity crashes if you use too many buttons, supposedly there's also a 20 axis limit but I've never seen that tested or stated officially, also Unity doesn't support hot swapping, sticks are enumerated when the engine starts.

Raw verses Xinput isn't new, it's been that way since day 1 as far as I know.

But for simple joysticks it should 'just work', a Thrustmaster USB is just a 3 axis, 4 button stick, there isn't a reason that I can think of that it shouldn't be working fine.

Link to comment
Share on other sites

In windows' usb controller test, the sensor is fine. Unless there is a difference between windows and unity (which does seem to be the case).

I guess I must play further with keyboard or see that I get a more compatible joystick like logitech types?

Link to comment
Share on other sites

9 minutes ago, Spraki said:

In windows' usb controller test, the sensor is fine. Unless there is a difference between windows and unity (which does seem to be the case).

I guess I must play further with keyboard or see that I get a more compatible joystick like logitech types?

Honestly it should be the same, Xinput replaced DirectInput from DirectX8, and was introduced specifically to support the Xbox gamepads, so it looks like Unity is using an Xbox pad driver for all joysticks on Windows, yet Unity doesn't support the thing directly, just generic joysticks.

What's also crazy is there's nothing in the Unity docs to say it's using Xinput, the only way to learn that is via the logs Unity creates.

Logitechs seem to work okay, I have the Wingman as I mentioned, but it's worn out with age, I also have a Logitech Extreme 3D Pro which works fine but is a bit worn as it's a refurbished stick, and I hear the Force Pro has issues.

Here, this is old but should help.

Link to comment
Share on other sites

On 1/4/2017 at 3:34 PM, sal_vager said:

Well each developer has to implement their own controller handling beyond the basics, you can set up Unity projects to treat all sticks the same quite easily as you can see here.

You can set up different axis for each stick, and either have presets that the player has to manually select or try to detect the sticks name, but that doesn't work if the stick has no hardware name that Unity can detect.

And some just flat out don't work, at all, like with the CH pedals I mentioned, I don't know why though, as a guess maybe Unity can't handle controllers that don't have buttons.

Another way to handle sticks in Unity is to set up all controllers in Unity with all their axis and buttons defined, then translate the users bindings to the built-in values, that lets you have stuff like custom controls for any (working) joystick.

But there's still some Unity limitations, for a start no more than 20 buttons per stick, Unity crashes if you use too many buttons, supposedly there's also a 20 axis limit but I've never seen that tested or stated officially, also Unity doesn't support hot swapping, sticks are enumerated when the engine starts.

Raw verses Xinput isn't new, it's been that way since day 1 as far as I know.

But for simple joysticks it should 'just work', a Thrustmaster USB is just a 3 axis, 4 button stick, there isn't a reason that I can think of that it shouldn't be working fine.

@sal_vager do you happen to know what the in-game settings of deadzone and sensitivity actually do to the input values?

Link to comment
Share on other sites

11 hours ago, Dafni said:

@sal_vager do you happen to know what the in-game settings of deadzone and sensitivity actually do to the input values?

To the values directly? That'd be revealing code stuff and I'd have to ask the producer if I can share it, but I can say it increases the distance you need to deflect the stick before KSP starts applying the movement to the vessel, but of course that won't help with a worn out joystick as it can spike to a high value with a small movement.

Decreasing the sensitivity will change the input curve, the default value is pretty flat (linear), lower values will cause your control surfaces to move a little less at smaller joystick deflections, increasing to full when you've moved the stick all the way.

Link to comment
Share on other sites

2 hours ago, sal_vager said:

To the values directly? That'd be revealing code stuff and I'd have to ask the producer if I can share it, but I can say it increases the distance you need to deflect the stick before KSP starts applying the movement to the vessel, but of course that won't help with a worn out joystick as it can spike to a high value with a small movement.

Decreasing the sensitivity will change the input curve, the default value is pretty flat (linear), lower values will cause your control surfaces to move a little less at smaller joystick deflections, increasing to full when you've moved the stick all the way.

Thank you @sal_vager. I see, makes sense. I never knew what they call sensitivity is the actual exponential value of the curve. Interesting, and helpful to know.

Another one for you, Sal, what would you change when you have a stick where the input indicator needle wont return to the dead center after you let the stick go? Assume the stick is brand new, literally, has only the tiniest of deadzones (undetectable by hand) and overall a very convincing build quality (Thrustmaster Warthog stick). Would you set the deadzone to almost zero? (i.e. would you go below the default value?)

Thanks again for your time, I appreciate it

Link to comment
Share on other sites

28 minutes ago, Dafni said:

Thank you @sal_vager. I see, makes sense. I never knew what they call sensitivity is the actual exponential value of the curve. Interesting, and helpful to know.

Another one for you, Sal, what would you change when you have a stick where the input indicator needle wont return to the dead center after you let the stick go? Assume the stick is brand new, literally, has only the tiniest of deadzones (undetectable by hand) and overall a very convincing build quality (Thrustmaster Warthog stick). Would you set the deadzone to almost zero? (i.e. would you go below the default value?)

Thanks again for your time, I appreciate it

Personally I'd replace the entire controller input system with Rewired from the asset store, but until that happens (I am pestering for it) I'd recalibrate my stick as that seems to help on Linux.

Failing that, try increasing the deadzone a little.

Link to comment
Share on other sites

On 12.1.2017 at 3:05 PM, sal_vager said:

Personally I'd replace the entire controller input system with Rewired from the asset store, but until that happens (I am pestering for it) I'd recalibrate my stick as that seems to help on Linux.

Failing that, try increasing the deadzone a little.

thank you. That "Rewired" sounds intriguing... "intelligent hot-plugging", "named controlls" ??? Hmmm, sounds interesting indeed. Thanks for sharing, I'll look into it.

Link to comment
Share on other sites

FW

On 1/3/2017 at 3:05 PM, Spraki said:

@sal_vager

Hi. Sorry to bug with this, but I've run into similiar issues related to the Joystick. I assume it would not be necessary to launch another thread.

So far, all had been calibrated in Windows 7. Although, I must note that this is a Thrustmaster USB (Joystick) and Win7 seems to recognize it as a Game Controller. 

 

In KSP, I have both tried the standard axis setup and also the Advanced Fly-By-Wire 1.2.x workaround, with no success.  In flight, no matter what is set, pitch and roll axes will just max out when the joystick is at rest. Recalibration and such has not worked :(.

I also have a thrust master joystick I got after Xmas, and its not working in KSP - well, If I hold roll halfway, and pitch halfway, I can just about get the control inputs zero'd on the tarmac.

The controller works fine for ArmA - but in that one to set it up, the game seems to associate something like X- with pitch down, X+ with pitch up, Y- with roll left, Y+ with roll right, Z- with decrease throttle, Z+ with increase throttle.

I wonder if its only seeing half the axis, and thinks the middle of the throw range is the zero point?

On the other hand... the saitek rudder pedals I just got are working fine in KSP

Link to comment
Share on other sites

  • 2 years later...
This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...