This is exactly the same implementation as DInput, but I'll keep it in mind when I am improving both implementations. Unless we want to do that now of course.