var guac_mouse = this;
/**
- * The number of pixels a touch must move for it to be considered a scroll
- * wheel event.
+ * The distance a two-finger touch must move per scrollwheel event, relative
+ * to the distance between the two touches.
*/
- this.scrollThreshold = 20;
+ this.scrollThreshold = 0.5;
/**
* The maximum number of milliseconds to wait for a touch to end for the
* The maximum number of pixels to allow a touch to move for the gesture to
* be considered a click.
*/
- this.clickMoveThreshold = 10;
+ this.clickMoveThreshold = 10 * (window.displayPixelRatio || 1);
/**
* The current mouse state. The properties of this state are updated when
var last_touch_y = 0;
var last_touch_time = 0;
var pixels_moved = 0;
+ var touch_distance = 0;
var touch_buttons = {
1: "left",
}
+ else if (e.touches.length == 2) {
+ var diff_x = e.touches[0].screenX - e.touches[1].screenX;
+ var diff_y = e.touches[0].screenY - e.touches[1].screenY;
+ touch_distance = Math.sqrt(diff_x*diff_x + diff_y*diff_y);
+ }
+
}, false);
element.addEventListener("touchmove", function(e) {
}
- // Otherwise, interpret as scrollwheel
- else {
+ // Interpret two-finger touch as scrollwheel
+ else if (touch_count == 2) {
// If change in location passes threshold for scroll
- if (Math.abs(delta_y) >= guac_mouse.scrollThreshold) {
+ if (Math.abs(delta_y) >= touch_distance * guac_mouse.scrollThreshold) {
// Decide button based on Y movement direction
var button;