Axis values always -1 prior to input

Hi,
I use LWJGL, but I can’t find any sign of this being related to LWJGL.
I have an Xbox 360 Controller (at some point I’ll try this with an ancient Sidewinder FF Pro that’s over at my mom’s place), and prior to other input on the controller all axes return -1.

Is this a problem with the DirectInput driver?
It seems it actually got worse after I changed to XBCD+, which is a DirectX wrapper for XInput devices giving access to all features of Xbox controllers in DirectX.
Now an axis returns -1 until the axis value changes once.
I guess this is an indication of there being a problem with DirectX drivers.

But in the Windows control panel, DirectX games and the XBCD configuration tool, I’ve never seen anything like this though.

If there is some default value that is used prior to events in DirectX, couldn’t the default value be either 0 (expect centered when not in use) or NaN (indicate it’s not yet in use).

Could it be deadzone value??
I’ve never used other stuff than keyboard and mouse with JInput, I have how ever used it in a C++ app. In my case the game pad always returned like 0.2 so my character would spin with out me using the controll. I know that JInput has a getDeadZone(). by prior to input you mean before you actualy use the controll, the you get god values?

oh, I totaly iverted the meaning of Dead Zone :stuck_out_tongue: dead zone is the amount of thrust the controll can take with out registeting the input.
Anyways, what I mean is that I had to compensate for the false inut that the conotroll gave off by default, most likly becaus it was old, like the ancient Sidewinder yo mentioned.

You wouldn’t happen to have the same problem with mouse input?

Hi,

I’m also experiencing the same problem, with LWJGL. I’m going to rewrite my program to use jinput instead and I’ll tell you if it helps.
If it doesn’t, err… I’m stuck.

If you know what’s the problem, wouldn’t it be easy to code a fix?

boolean polled = false;
boolean moved = false;
float value = 0;
if(!polled)
{ value = controller.getAxis().getValue(); polled = true; }
else if(!moved)
moved = controller.getAxis().getValue() != value;
else
value = controller.getAxis().getValue();

if(moved)
player.moveIt(value)

Hi

We pass up from JInput what the OS gives us (unless there is a bug I’ve not seen). One simple solution might be to use the event interface, this way, you don’t need to store values, so don’t need to make it up. You can just react to device changes.

HTH

Endolf