// ==UserScript==
// @name Giddy Mouse
// @description The cursor will rotate naturally, following your movements
// @author Ko
// @namespace u/TagProKo
// @license MIT
// @version 2.0
// @icon data:image/png;base64,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
// @include *
// @run-at document-idle
// ==/UserScript==
// I tried my best explaning everything using comments.
(function(){
// Define all supported cursors, their hotspot position, their angle (in radians with respect to ->) and their data uri
// I used the default cursors for Internet Explorer on Windows 7, including an animated 'progress' cursor (animated png)
// The grab, grabbing and both the zoom cursors are those used by chromium/chromeos
// To replicate my process (for example when you want to use Windows 10 cursors), use 'RealWorld Cursor Editor' to convert
// .cur and .ani (found in c:\windows\cursors) to .png and animated .png respectively. Then encode those into a base64 data url.
// A base64 encoder that works for animaged png's: https://onlinepngtools.com/convert-png-to-base64 (remember to select 'create valid url'
var srcs = {
'alias': {x:0,y:0, ang:-1.9634954084936207,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAATCAYAAABPwleqAAABWUlEQVQ4y52UMUvDQBiG3+aS3Tatn/oHhIKDUxdHO/qv/BtuOrk6tQ7FQQhKS5GWFC3SkITWrUqhkPvyOWgktmkafeHgOO55vrvj7gBFASxq4B8xAAAxzgsK5HdTFAThVKCo/XeBokBEpKBAMuECgjSINXiLIA1+ZwXOEcj6YjJgZhbP8wsIVmBmliiKZLlcysv4dcshpuA0uFgsZD6fy3DobhQYSSeOY8RxDGYGM0NrDWZGtVpB77F1mnWRjDxQaw2tNWy7DOf+5kuQipnACej7IWo1G1pr7O4f3eZfNkVBssfR6Fmg6P3y6lrCMBQoakHRWS6cBmFRAwb1Pc8Tx3kQGNTPfVW+H+KwfvIBA01EMwclTLrdJ1QqO0AJk83VFbV/KiaxqAGTBq7rSqdzJzCol4Wa4FkTAMCp0WjmQNF4On2r23YZKCH64z9RPYBJA6i9C1i146wZn7L0Qde4MGg6AAAAAElFTkSuQmCC'},
'context-menu': {x:0,y:0, ang:-1.9634954084936207,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAVCAYAAACkCdXRAAABzklEQVQ4y63UQWsTQRQH8H92theRoibtaHKRiooNtscg9eDB3NRP5ScQTz37DQQFoxAEQVEaqFgWam0bdpJd0xKyZjG48+Z5iFM3S1Zak4GBgWF+/N+bYQAhFRZkDXMYDgDA4PF8QCGV6gQMIRuzg0IqZub5gH+w+YApbHYwg80GTsGIiNtt/z/ADEZEnCQJj0Yj/rq3f0YwhaWhOI55MBjwzo53atCxC2MMjDEgIhARtNYgIpRKl9D69Or+aR52AUIq+tUpT4O01iez2w1Ru/NoFzDncqx3rk1lId/vYGmpCK01lq/cfp05cMvobiVbhTEGixeubzgAJqCbq3d/vHj5BlprAGAAT0BhHRTWp7XDrk/KjKNvZQvBQR2EzfbBx7VxaQ+2YcL1cYel/6+euQAwASXhBwh5uLX1ea1avQEUcAghH4LC5wDwMz6opBPZ/l4urytAyAaEjCZuakHW4Movnudxs/mW4ciWTTYcDjmKIu73+9zr9TgIAlZKMRzpu7YXoFTecbq9IPi+WixeBApI7Nb5xWsq/2nkjlIZrmiAC+/h0FMkvRYc6fePvYotLV3u1ZWacvOxow40qtnU06C/t3mmT14+A3AvZ7f5G0d4upcZeqhZAAAAAElFTkSuQmCC'},
'copy': {x:0,y:0, ang:-1.9634954084936207,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAATCAYAAABPwleqAAABU0lEQVQ4y52TwUrDQBCG/+4md9u0jvoCQsGDp1482qNv5Wt405NXT62H4kEISkuRlhQt0pCG1luVQiE7GQ8SiZqmsQMLy7LfN7PLDKBpCpsa2CIUACDG+XYCTdNpOBNoahcSKAp+wCIihQVZ8EaBouDPSsOFKliXuXAFeTAzi+8HBf7gF8zMEkWRrFYreRm/bhCk4DS4XC5lsVjIcOitFahkE8cx4jgGM4OZYYwBM6NaraD32DrNaiSVBxpjYIyB45Th3t98CVJhJXACBkGIWs2BMQa7+0e3G9szeeNo9CzQ9H55dS1hGAo0taDpLBdOg7CpAUV93/fFdR8Eivq5UxUEIQ7rJx9QaCKauyhh0u0+oVLZAUqYrM+uqf2dMQmbGrBo4HmedDp3AkW9LNQCz5sAAE6dRnMXmsaz2VvdccpACdE/B716AIsG0HsXsGvHWTc+AVFXN89gdYKLAAAAAElFTkSuQmCC'},
'default': {x:0,y:0, ang:-1.9634954084936207,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAATCAYAAACk9eypAAABRElEQVQoz43Tv0/CQBQH8C+9dhcKPvUfMCFxcGJxhNH/in/DTSdXJ3AgDiaNBkIMpESJoWkbcENDQtJ791w8UwG1b7z7fu5d7gegKIFHDRQsBwBg0C6OFCVJOhco6hZDihIRkeLoCxRHOVAMbYD/0Q7AzBJF8S9oAzCzZFkm6/VaXqavO1AO5MOr1UqWy6WMx+EP5FhnjIExBswMZobWGsyMarWCwWOnaS/X+SustYbWGr5fRnB/04RB27XAhuM4Ra3mQ2uN/cOT252nZPc8mTwLFL1fXl1LmqYCRR0oOt8C+TA8asChYRRFEgQPAoeGW681jlMc188+4KCFbBGghFm//4RKZQ8oYfazi6Lu98q2PGrApVEYhtLr3QkcGtgpF7xoAQA41zdbBFA0nc/f6r5fBkrICnyU6hFcGkEdXMCrndrRTzi+LurMQAJ4AAAAAElFTkSuQmCC'},
'grab': {x:10,y:11, ang:-1.5707963267948966,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAABTUlEQVQ4y5VUsWrDMBQ8hQwNBSfZmi1eDN2UP/CneMnesUOg+QN9QcgvdMzWBgwdlS0QY1S6FLpIQ6AeCtehjbCT2HEeCJ4k7nT39CSgXfB/1EanBZCuIIwxCIKAbUg9ibWWWmsPcgXpChIAlVI+L4O6dWzhvcRsNkOappX1OI7bW1ssFgCAKIrOHnBN7egKcrfbMY7jirVDLqWkUorGmEYyuoLc7/ecTqcefExqrfV5p0nWT/cWWZad3ZNSQvQG0G+vlWKXpYky4Hn14nOlFADAbDeQ8q9W6/W6et2uIOfzOQEwSRLmee5tNI2DiIq1h8cnWGsxHo/R7/cvN9y3O9+E5ZNGo7uLapbLpVdUrge11sd90hiDG+E5ytbEZDKB2W5akdjP98pc1Lw1iN6gtZq6JyKGw+FVapq+EXx9ZLXrYRieuBEXPrO6OMH9AiDaFlSyKWy3AAAAAElFTkSuQmCC'},
'grabbing': {x:7,y:7, ang:-1.5707963267948966,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAzElEQVQoz41SsQqDMBB9kQ4tHdStbjq4+wn5lPyZn2S3DkFaXApdkkFohsLrUm3UiD545Ah39x53B6yDPwYRhZKllLSOsI5+A64V0jqi73uUZTl+SikxaxJUxOdwhtY6aK+qKoTs0zou2DTN+CqlaB0ntqmUYtu2weI5ATACQGMM8jxHHMfYAt92aTHLLptqdV0TAMUwzb1IjgIARAQA99t1V5F5PsZYDHaNMRCnZJeav0eRpulutcUBvLrw4l+dRlEUvsN/4N3qGia5X7C9vr8rbzxOAAAAAElFTkSuQmCC'},
'help': {x:0,y:0, ang:-1.9634954084936207,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAYAAADk3wSdAAAB5klEQVQ4y63Vz2sTURAH8G/e29xtfs3ag+BJEDz0ILmIJz1691/owVP/Ba8eCyJ4U1LwIIinVkqIIm61CWFtSYkiXbKLzS1KYMO+eePB7JLWpFqzc5o97OfNzrz3FtAUokh15BgKAGDxMF9YUxhG3wWadvKDNYUiIvnCUzRfeAbNDz6D5gPPQZlZgmCwBHwGZWZJkkTiOJYvX7/9JzyDzoLj8VhGo5EcHvYuDKs0sdbCWgtmBjPDGANmRqVSQufT9p2LHBB1HmiMgTEG5fIKvPevf8P/EE6KpuBgEKFaLcMYg9rlG28WvlmsrsGqR9On2wBaAJ6AT7YATWHaw6OjvkDTj2fPX0gURQJN29B0b/4s3EZj62U24E7HF2i3AU33AU3hLIgi1aGoGwSBeN5HgaLuggEbERFodxOadkVE9ttdgUOfFQAMBhGuXb/1Ewp3kZx4KOC43fZRKl0CCjieW63Ig4Ljcvr51lqYxGQr7mQVZv2iOhw66PV60my2BIo688dcW4cmw8wSx/G0anfzvP37qtlsie/7Ak17i1pwGqTdv2yMyiocOoB2n6JYXVuEet6+vH33QaDJ5PTfqG1AUx+a+lC1jbwu+L3hcChBEJxqkVrWjeMYk8nkzxO1RDy+cvVmlqfJLw4BjTWv/u2tAAAAAElFTkSuQmCC'},
'pointer': {x:6,y:0, ang:-1.5707963267948966,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAWCAYAAAAmaHdCAAABoElEQVQ4y73TvWsUQRjH8e/eGLDRSnbyQkALm4AvTUKwsLARhEAaxdrGv8HGMgf+EVapUgnXnBJIoRbZQO5ENCi2OW8JHFxxeNw+zzwWbu6Sy7Ksh/hrZpr5MM8z88B05ubXcHETFzeZm19jpri4aXlwcXNGxMsE8VLlSI1/kP+EOC9/3+SpnpiZJUnrT5MrgwXIRTDHuLY4E6KqhvPy4eO+TaDpa5YgqmpZlhnOy2AwsL299znkvBx3unbc6Y7rtoKcAsPh0HBe+v2+9Xo9w3mpge0CLC54TNKHRRWGEAghoKqoKv3ed6eqiEj+xLXay6Xl2287P1MArl65/KoMEJHxOkGybgLRztLynQbA7rs3L6oCEwRA09fAysFBm9XVu5WBw9ZniDiKzjztM2DTpLtRBVBVbtxcr5//9ppuAyv7yWElQETAeEIUds7OzgjYWr/3qFEFaH/6AhG/yE7a5wcwv02StEoBVeXx0+d1oFE0xSNg6/6DzXoZoKrjUgAuXfhZmm7j/NcyIIQA4MhO2sUIjMB+xAu3rpePu3073f0GAQcMqewYK3kAAAAASUVORK5CYII='},
'progress': {x:0,y:8, ang:-1.9634954084936207,src:'data:image/png;base64,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'},
'zoom-in': {x:6,y:6, ang:-2.3561944901923450,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcUlEQVQ4y61SWw7AIAhrjfe/cvexmAgoQbf+QWjLi4iQi4kE9ETJ8kmmQiMpTwyFr1AQabviyTlFq7hPo4XCvpnXxJlBw0f0RZsl57kDVha2u0JPFlbCySMtH4oHr6wVj4dLDyK8uJwR4eX5hR8gAHgA+zUnHn8IEI8AAAAASUVORK5CYII='},
'zoom-out': {x:6,y:6, ang:-2.3561944901923450,src:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZUlEQVQ4y8VSQQ7AIAhrF///5e6w7AAoQ11ibxpaKJSIkHsTCeiJkuWTTIXeT3liKHyEgsiFTbDSPZuiDfzarSYNti20aqevM569QjVI3UBxIsrq8Tg5cRDhgm0jwsXdCT9AAHADxlghFHap++oAAAAASUVORK5CYII='},
};
// I find having the cursor switch to a caret over selectable text really breaks this experience, therefore 'auto' can always be the 'default' cursor.
srcs.auto = srcs.default;
// The rotating cursor is an IMG element, the actual cursor will be hidden
var cursor = document.createElement('img');
document.body.appendChild(cursor);
cursor.id = 'cursor';
// Get the computedCursor for the root element.
document.documentElement.computedCursor = getComputedStyle(document.documentElement).cursor;
// All other element's computedCursors will be calculated on the fly and then cached.
// Create a stylesheet for our custom styling.
var style = document.createElement('style');
style.id = 'rotating-cursor'; // Just for anyone wondering what the extra style element is doing in their DOM.
document.head.appendChild(style);
var styleSheet = style.sheet;
// The rotating cursor's styling itsself. Hidden by default, and only shown when it has the .enabled class
styleSheet.insertRule('#cursor { position: fixed; left: 0; top: 0; z-index: 2147483647; pointer-events: none; opacity: 0; }');
styleSheet.insertRule('#cursor.enabled { opacity: 1; }');
// Hide the original cursor on any element
styleSheet.insertRule(':not(.cursorcheck):not(.unsupported) { cursor: none !important; }');
// Values for the rotating simulation
// The position of the 'tail' of the cursor will always be stored, at a set distance (30) from the tip
var tail = 30,
tailX = 0,
tailY = 0,
angle;
// The initial cursor, shown after the first mouse event.
// Just to get the mouse on screen 1 frame earlier, before the computedCursor has been calculated
var src = srcs.auto;
function mousemove(event, skipSimulation) {
// Whether the mouse was enabled or not *before* this mousemove
var enabled = cursor.classList.contains('enabled');
// Get the target's computedCursor (from cache or using the function)
if (event.target.computedCursor) src = srcs[event.target.computedCursor];
else setTimeout(getComputedCursor, null, event);
// Enable or disable our rotating cursor based on whether we support it.
if (src) cursor.classList.add('enabled');
else return cursor.classList.remove('enabled');
// Simulate the rotation
if (skipSimulation) {}
else if (enabled) {
// Regular simulation
var dx = event.clientX - tailX,
dy = event.clientY - tailY;
var distance = Math.sqrt( Math.pow(dx,2) + Math.pow(dy,2) );
if (distance) {
tailX = event.clientX - dx * tail / distance;
tailY = event.clientY - dy * tail / distance;
}
angle = Math.atan2( dy, dx );
} else {
// Reset the angle when entering a supported area again
angle = src.ang;
tailX = event.clientX - tail * Math.cos(angle);
tailY = event.clientY - tail * Math.sin(angle);
}
// After the simulation, the result is applied to the rotating cursor style.
cursor.style.transform =
"translate(calc(" + event.clientX + "px - 50%),calc(" + event.clientY + "px - 50%))" +
"rotate(" + (angle - src.ang) + "rad)" +
"translate(calc(50% - " + src.x + "px), calc(50% - " + src.y + "px))";
// Last but not least, the right image is set.
cursor.src = src.src;
}
var scrolling;
// Events after which the cursor is to be updated.
// When entering an element by moving the mouse, both a mousemove & mouseover event are emitted
// Only when scrolling, the browser can sent a 'mouseover' without a 'mousemove'
document.addEventListener('mousemove', mousemove);
document.addEventListener('mouseover', function(event) { if (scrolling) setTimeout(mousemove,null,event); } );
// To avoid having to run our 'mousemove' function twice,
// we keep track of whether a mouseover is caused by scrolling or moving the mouse.
document.addEventListener('mousemove', function() { scrolling = false; } );
document.addEventListener('scroll', function() { scrolling = true; } );
function getComputedCursor(event) {
// If not cached, the computedCursor is calculated asynchroneously using this function.
// This can take in the order of a frame to be calculated, which will cause a visible hickup if done synchroneously
var element = event.target,
elements = [event.target];
// STEP 1: apply the .cursorcheck class to all ancestors until one has a computedCursor cached.
// This class blocks the globally set "cursor: none;"
element.classList.add('cursorcheck');
do {
element = element.parentElement;
elements.push(element);
element.classList.add('cursorcheck');
}
while (!element.computedCursor);
// STEP 2: The youngest ancestor to have a cached computedCursor will have it's cursor style overwritten to it,
// so that any offspring without a defined cursor style can inherit it.
var org_cursor = element.style.cursor;
element.style.cursor = element.computedCursor;
// STEP 3: Since now all those ancestors have their original cursor style, we can as well cache all of them,
// instead of just the element the cursor hovers over at the moment.
for (var e in elements) {
element = elements[e];
element.computedCursor = getComputedStyle(element).cursor;
if (!srcs[element.computedCursor]) {
element.classList.add('unsupported');
element.style.cursor = event.target.computedCursor;
}
}
// STEP 4: reset the overwritten cursor style, as well as removing all .cursorcheck classes again
// so that the original cursor will once again be hidden everywhere.
element.style.cursor = org_cursor;
for (e in elements) {
elements[e].classList.remove('cursorcheck');
}
// Since the setTimeout will definately run before the next mousemove event,
// we can be sure that the cursor is still in the same position.
// To update the cursor with the newly calculated 'computedCursor', we just call mousemove again.
// This is particullarly useful when moving just 1 pixel in a non-cached element and stopping then.
mousemove(event, true);
}
// Various cases in which the cursor should disappear
document.addEventListener('mouseleave', function() { cursor.classList.remove('enabled'); } );
document.addEventListener('dragstart', function() { cursor.classList.remove('enabled'); } );
// There are three more cases (of which I know) after which the cursor shoul disappear, but I don't know how to detect them:
// 1. When the mouse enter's an iFrame
// 2. When using the middle click to scroll
// 3. When hovering a scrollbar
})();