The extra callback is just a callback to get a Vector6 on EV_SYN, I'm pretty sure its a bad way of implementing it but i got the idea from the vector3moved or whatever its called.
I use it as a replacement for my mouse when im playing with physics simulations and such, i have a pretty hard time coming up with a functional game for the SpaceNav but I'm sure its possible

3Dconnexion recommends it to be used in your left hand with your mouse in your right when modelling in 3D, soon blender supports the spacenav too.
I'm pretty sure its possible to change the mouse class instead but doesn't it use XInput on Linux? That would (too me atleast) be much more complicated to implement then to just access it the same way as a joystick. But something that I came up with on my second or third attempt to make it work is that there should be an eventdevice class that the joystick class can inherit from... or maybe that just makes sense in linux? I know OIS i mainly aimed at game input but I still think it should support as much as possible, maybe even haptic devices in the future, like the Novint falcon (or whatever its called).
What values the spacenav generates? You get REL_X(...) and REL_RX(...), integers from both if i remeber correctly, the raw data is generally somewhere in the range -300 - 300 (but it was a while i messed with it).
And leds, have to have leds, my spacenav looks soo sad when it stands on my desktop without its shiny blue light

Oh and if anyone is planning on making their own patch, remeber that the 3dconnexion linux drivers does something ugly so after having run the drivers you have to unplug/replug the device for the event device to register.
And finally, sorry for this post, im tired and have had a little bit of alcohol.