libsixdof provides C and C interfaces to 6 degrees of freedom devices. The library is intended to be very unobtrusive to an application, allowing support to be implemented without great effort. For example, an application might only need to issue 3-4 API calls to tell libsixdof about Xwindow objects that it should monitor.
Apart from those setup calls, functions that are useful for controllers should be registered with libsixdof. The configuration of the device (how its axis movements map to these registered functions) is then taken care of completely by libsixdof. The application doesn't really need to care what 6dof device is attached, where it is attached (USB, etc.), what its name is, or if there is more than one.
Product's homepage