Now everything works exactly as it should. All motions and buttons are captured and reverse axis corrected etc.
Here's the Java source code.
SpaceNavigator class
Visualizer class
@cherrybomb
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)