0.6 patch from Ricky Curtice
    - untested support for more devices
    - dynamic determination of the number of axes
    - cleanups