Now everything works exactly as it should. All motions and buttons are captured and reverse axis corrected etc.
Here's the Java source code.
Of most interest, are the decodeValues and shift methods in the SpaceNavigator class. I had to use a char in Java since that's an unsigned byte (bytes are from -127-128 and can't be unsigned... grrr)