Thanks for your quick reply.
I am on PowerBookPro (intel) running Mac OS 10.4.7.
1- ConnexionControl(kConnexionCtlSetLEDState, 0, &result) doesn't work as expected here. After fiddling around with it for a while I found out that I have to provide a param value of -15 (decimal) to turn the LED on and a param value of -1 to turn it off (I think any negative number except -15 would work, though).
2 - I am getting a 1 when I press the left button and I am getting a 2 when I am pressing the right button. When there's no button pressed I am getting a 0. This goes for both the button state field AND button ID field. There's no difference between the two on my machine.
3 - I am not sure I understand what you mean when you say "when you're called". I am programming in C and my data structure is not global to the HandleMessage function. So the HandleMessage callback gets called everytime there's an event from the device. But I have no access inside that function. The HandleMessage function is prototyped as:
void HandleMessage(io_connect_t connection, natural_t messageType, void *messageArgument);
I need to pass a pointer referencing my Data Structure to the HandleMessage function if I want to save the axis values in my DS. Or am I overlooking something ?
4 - In the 3Dconnexion driver is the sensitivity implemented in software by just scaling the ranges of the axes values, or is it actually changing a sensor parameter at the hardware level ?
5 - What is the bit resolution of each of the axis values?