// TODO: better logic that doesn't poll all the time sclass JSSendMouseEventsToWebSocket { int interval = 100; // 0 for continuous bool verbose; S html() { ret hjs(js()); } S js() { O[] params = litparams(+interval, +verbose); if (interval == 0) ret replaceDollarVars([[ console.log("Note: Streaming mouse events to web socket."); var mouseVerbose = $verbose; var mouseX = -1, mouseY = -1; function wsSendMouse() { if (wsReady) { var msg = JSON.stringify({"mouse": [mouseX, mouseY]}); if (mouseVerbose) console.log(msg); ws.send(msg); } } $("body").mousemove(function(e) { mouseX = e.pageX; mouseY = e.pageY; wsSendMouse(); }); ]], params); ret replaceDollarVars([[ var mouseInterval = $interval; var mouseX = -1, mouseY = -1; $("body").mousemove(function(e) { mouseX = e.pageX; mouseY = e.pageY; }); function wsSendMouse() { if (wsReady) ws.send(JSON.stringify({"mouse": [mouseX, mouseY]})); } setTimeout(function sendMouse, mouseInterval); ]], params); } }