Your websocket viewer is excellent, however I cannot find any explanation of what the values in the various arrays mean and how they're derived.
As a developer, I suppose I could trial and error and experiment all day, but then I don't really know if I'm detecting enough edge conditions. It'd be much more useful if you explained what those values are and a bit of info on how they're derived. For example, when you provide a value, is it already normalized to the display resolution of the user's computer?
A more specific example: in palmNormal, there are three numeric values returned. What are those values and what are their max and min values to be expected, and how do they pertain to placement on the user's display?
Same question for most of the data returned by WebSocket.
TLDR: where is the documenation for the datatypes in websockets?