From 79583188db9fda876df2fb93c42f8d94a6e7fdda Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Thu, 9 Jun 2011 09:25:47 -0700 Subject: [PATCH] Experimental working touch-based mouse. --- src/main/resources/mouse.js | 73 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/src/main/resources/mouse.js b/src/main/resources/mouse.js index fb86005..745b50c 100644 --- a/src/main/resources/mouse.js +++ b/src/main/resources/mouse.js @@ -46,15 +46,10 @@ function GuacamoleMouse(element) { } - // Block context menu so right-click gets sent properly - element.oncontextmenu = function(e) {return false;}; - - element.onmousemove = function(e) { - - e.stopPropagation(); + function moveMouse(pageX, pageY) { - absoluteMouseX = e.pageX; - absoluteMouseY = e.pageY; + absoluteMouseX = pageX; + absoluteMouseY = pageY; mouseX = absoluteMouseX - element.offsetLeft; mouseY = absoluteMouseY - element.offsetTop; @@ -70,6 +65,68 @@ function GuacamoleMouse(element) { } movementHandler(getMouseState(0, 0)); + + } + + + // Block context menu so right-click gets sent properly + element.oncontextmenu = function(e) {return false;}; + + element.onmousemove = function(e) { + + e.stopPropagation(); + + moveMouse(e.pageX, e.pageY); + + }; + + element.ontouchend = function(e) { + + e.stopPropagation(); + e.preventDefault(); + + // Release all buttons (FIXME: for now...) + if (mouseLeftButton || mouseMiddleButton || mouseRightButton) { + mouseLeftButton = 0; + mouseMiddleButton = 0; + mouseRightButton = 0; + + buttonReleasedHandler(getMouseState(0, 0)); + } + + } + + element.ontouchstart = function(e) { + + e.stopPropagation(); + e.preventDefault(); + + if (e.touches.length == 1) + element.ontouchmove(e); + + else { + + var button = e.touches[0]; + var pointer = e.touches[1]; + + if (pointer.pageX < button.pageX) + mouseLeftButton = 1; + else + mouseRightButton = 1; + + buttonPressedHandler(getMouseState(0, 0)); + } + + }; + + element.ontouchmove = function(e) { + + e.stopPropagation(); + e.preventDefault(); + + var touch = e.touches[0]; + moveMouse(touch.pageX, touch.pageY); + }; -- 1.7.10.4