Resolution of Hid controllers different on MacOS and Windows?
Under MacOS, the values coming from the Saitek P880 gamepad trough
the hi object suggest that the messages are 8-bits encoded.
However, under Windows, it seems the resolution is much higher (16 or
32 bits).
The Space Navigator seems tu confirm this.
Is it specific to these devices or is it a general rule for HId
implementation in MacOS?
Roald Baudoux
You've left out what I'd think would
be the single most important thing to
check - the drivers for the device on
the different platforms. How do those
compare? [I can guess....]
I have been researching this a little (Salut Roald!) on the Saitek P880 gamepad in Win XP, at least.
I have not installed a Saitek driver in Windows: Max recognises the HI device anyway (maybe I should try a driver?) The Space Navigator had to have a driver installed to do anything.
The resolution in Windows is interesting.
If you scale the XP joystick from 0 - 64999 to the Mac 0 - 255 then you get the same dither that is observed at the joystick centre (resting) position. If you look at the actual joystick value it seems stable at 32767 or similar.
It seems you can't get a value of 0 in XP, the minimum is 255 and max is 64998
I printed out the joystick positions as I moved it slowly and copied them all into Excel. It looks like the low half of movement is resolved into steps of 256 and 512 alternately, and the second half of movement (high values past the resting position) are in steps of 520. There may be missing values, but that's what it looks like. I'll have another, more careful go and put the results in a PDF.
I have had an opportunity to compare the situation with and without drivers in Windows. It seems to make no difference to the numeric outputs or channel numbers from the gamepad. The channel numbers (elements - there are 17) are quite different from MacOs.
Without the driver, Max recognises "P880" in the Max window and accepts "P880" as the argument in the hi object. With the driver, Max recognises "Saitek P880 Pad 0", but you have to use "Saitek P880 Pad" in the hi argument.
The main potential benefit from installing the drivers is that you may use the Saitek utility in Control Panel to create dead spots in the centre of joystick movement and at the ends. The Max hi object appears to incorporate these and adapt the resolution accordingly. The Saitek utility enforces it symmetrically.
The values from the joystick appear to be increments of 256 from minimum to mid point and increments of 520 from mid to high point. The situation around the mid point is unclear.
There are interactions between some of the controls: the POV or cross control seems to deflect the centred joystick readings in some circumstances, and some of the buttons do the same. I suspect that the controls are not electronically decoupled and closing a switch causes a little voltage droop: this probably makes little difference for the intended purpose, but makes a difference if you are using the joystick to drive an incrementing output. In view of this, centre dead spots become more attractive.