Greasy Fork is available in English.

My Mouse Gestures

A simple mouse gesture script

2014-11-21 या दिनांकाला. सर्वात नवीन आवृत्ती पाहा.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

You will need to install an extension such as Tampermonkey to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name               My Mouse Gestures
// @name:zh-CN         我的鼠标手势
// @name:zh-TW         我的滑鼠手勢
// @description        A simple mouse gesture script
// @description:zh-CN  一个简单的鼠标手势脚本
// @description:zh-TW  一個簡單的滑鼠手勢腳本
// @version            0.1.2
// @include            *
// @run-at             document-start
// @grant              GM_openInTab
// @noframes
// @namespace          https://greasyfork.org/users/4968
// ==/UserScript==


// --- Settings ---
var SENSITIVITY = 3; // 1 ~ 5
var TOLERANCE = 3; // 1 ~ 5
var funcs = {
	'DR': function() {
		window.top.close();
	},
	'U': function() {
		window.scrollTo(0, 0);
	},
	'D': function() {
		window.scrollTo(0, 1073741824);
	},
	'L': function() {
		window.history.back();
	},
	'R': function() {
		window.history.forward();
	},
	'RU': function() {
		GM_openInTab('about:newtab', false);
	},
	'UD': function() {
		window.location.reload();
	}
};
// ----------------

var s = 1 << ((7 - SENSITIVITY) << 1);
var t1 = Math.tan(0.15708 * TOLERANCE), t2 = 1 / t1;

var x, y, path;
var canvas, g;

function createCanvas() {
	canvas = document.createElement('canvas');
	canvas.style.position = 'fixed';
	canvas.style.zIndex = 255;
	canvas.style.top = 0;
	canvas.style.left = 0;
	document.body.appendChild(canvas);
	canvas.width = document.body.clientWidth;
	canvas.height = document.body.clientHeight;
	g = canvas.getContext('2d');
	g.lineWidth = 3;
	g.moveTo(x, y);
}

function tracer(e) {
	var cx = e.clientX,
		cy = e.clientY,
		deltaX = cx - x,
		deltaY = cy - y,
		slope = Math.abs(deltaY / deltaX),
		distance = deltaX * deltaX + deltaY * deltaY,
		direction = '';
	if (distance > s) {
		if (slope > t1) {
			if (deltaY > 0) {
				direction = 'D';
			} else {
				direction = 'U';
			}
		} else if (slope <= t2) {
			if (deltaX > 0) {
				direction = 'R';
			} else {
				direction = 'L';
			}
		}
		if (path.slice(-1) != direction) {
			path += direction;
		}
		x = cx;
		y = cy;
		g.lineTo(x, y);
		g.stroke();
	}
}

window.addEventListener('mousedown', function(e) {
	if (e.which == 3) {
		x = e.clientX;
		y = e.clientY;
		path = '';
		createCanvas();
		window.addEventListener('mousemove', tracer, false);
	}
}, false);

window.addEventListener('contextmenu', function(e) {
	window.removeEventListener('mousemove', tracer, false);
	if (path != '') {
		e.preventDefault();
		if (funcs.hasOwnProperty(path)) {
			funcs[path]();
		}
	}
}, false);

window.addEventListener('mouseup', function(e) {
	if (e.which == 3) {
		canvas.remove();
	}
}, false);