Mouse Rocking

By Ricky C Last update Apr 17, 2008 — Installed 443 times. Daily Installs: 4, 3, 5, 1, 2, 1, 4, 1, 0, 1, 2, 10, 0, 2, 1, 0, 2, 1, 0, 1, 1, 3, 0, 0, 1, 2, 6, 1, 3, 1, 7, 1
// ==UserScript==
// @name           Mouse Rocking
// @namespace      http://rickyc.org
// @include        *
// ==/UserScript==

var leftBtnDown = false;
var rightBtnDown = false;
var BTN_LEFT = 0;
var BTN_RIGHT = 2;
var goAfterMouseup = 0;
var preventContextMenu = true;

function mrMouseDown(e)
{
	if(e.button == BTN_LEFT)
		leftBtnDown = true;
	else if(e.button == BTN_RIGHT)
		rightBtnDown = true;
		
	if(goAfterMouseup == 0)
	{
		if(e.button == BTN_LEFT && rightBtnDown)
			goAfterMouseup = -1;
		else if(e.button == BTN_RIGHT && leftBtnDown)
			goAfterMouseup = 1;
	}
}
window.addEventListener("mousedown",mrMouseDown,true);

function mrMouseUp(e)
{
	if(e.button == BTN_RIGHT && goAfterMouseup == 0)
		preventContextMenu = false;

	if(e.button == BTN_LEFT)
		leftBtnDown = false;
	else if(e.button == BTN_RIGHT)
		rightBtnDown = false;
		
	if(goAfterMouseup != 0 && !leftBtnDown && !rightBtnDown)
	{
		leftBtnDown = false;
		rightBtnDown = false;
		var tempGo = goAfterMouseup;
		goAfterMouseup = 0;
		history.go(tempGo);
	}
}
window.addEventListener("mouseup",mrMouseUp,true);

function mrContextMenu(e)
{
	if(goAfterMouseup != 0 || preventContextMenu)
		e.preventDefault();
	preventContextMenu = true;
	
}
window.addEventListener("contextmenu",mrContextMenu,true);