Foxed the code so that we can now read the input reports (which are not reported correctly).
I also left the debugging code as comments (might be useful to someone with a similar model).
I refactored a bit of code and moved the mapping stuff out into a screen manager, so it'll be easier to handle multiple monitors, etc later on.