您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Counts mouse movement in inches, scroll events, key presses, mouse clicks (left and right), and displays the top 5 keys pressed along with their counts.
- // ==UserScript==
- // @name Useless Things Series: Mouse and Keyboard Event Counters
- // @version 1.3
- // @description Counts mouse movement in inches, scroll events, key presses, mouse clicks (left and right), and displays the top 5 keys pressed along with their counts.
- // @match *://*/*
- // @grant none
- // @license MIT
- // @namespace https://greasyfork.org/users/1126616
- // ==/UserScript==
- (function() {
- var mouseInches = 0;
- var scrollCount = 0;
- var letterCount = 0;
- var leftClickCount = 0;
- var rightClickCount = 0;
- var keyPressCount = {};
- var countersDiv = document.createElement('div');
- countersDiv.style.position = 'fixed';
- countersDiv.style.left = '10px';
- countersDiv.style.top = '10px';
- countersDiv.style.padding = '10px';
- countersDiv.style.border = '2px solid #fff';
- countersDiv.style.borderRadius = '5px';
- countersDiv.style.transition = 'background-color 0.3s, opacity 0.3s';
- countersDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
- countersDiv.style.color = '#fff';
- countersDiv.style.cursor = 'move';
- countersDiv.style.userSelect = 'none';
- countersDiv.style.display = 'none';
- countersDiv.style.opacity = '0';
- document.body.appendChild(countersDiv);
- var mouseCounter = createCounter('Mouse Inches');
- var scrollCounter = createCounter('Scrolls');
- var letterCounter = createCounter('Letters Pressed');
- var leftClickCounter = createCounter('Left Clicks');
- var rightClickCounter = createCounter('Right Clicks');
- var topKeysCounter = createCounter('Top 5 Keys');
- countersDiv.appendChild(mouseCounter);
- countersDiv.appendChild(scrollCounter);
- countersDiv.appendChild(letterCounter);
- countersDiv.appendChild(leftClickCounter);
- countersDiv.appendChild(rightClickCounter);
- countersDiv.appendChild(topKeysCounter);
- var timeout;
- var lastScrollTime = new Date().getTime();
- var isDragging = false;
- var offsetX, offsetY;
- countersDiv.addEventListener('mousedown', function(e) {
- isDragging = true;
- offsetX = e.clientX - countersDiv.getBoundingClientRect().left;
- offsetY = e.clientY - countersDiv.getBoundingClientRect().top;
- });
- document.addEventListener('mousemove', function(e) {
- if (isDragging) {
- countersDiv.style.left = e.clientX - offsetX + 'px';
- countersDiv.style.top = e.clientY - offsetY + 'px';
- }
- });
- document.addEventListener('mouseup', function() {
- isDragging = false;
- });
- document.addEventListener('mousemove', function(event) {
- clearTimeout(timeout);
- var deltaX = event.movementX || 0;
- var deltaY = event.movementY || 0;
- mouseInches += Math.sqrt(deltaX * deltaX + deltaY * deltaY) / 96;
- updateCounters();
- timeout = setTimeout(function() {
- countersDiv.style.opacity = '0';
- setTimeout(function() {
- countersDiv.style.display = 'none';
- }, 300);
- }, 3000);
- });
- document.addEventListener('wheel', function(event) {
- var currentTime = new Date().getTime();
- if (currentTime - lastScrollTime > 100) {
- scrollCount++;
- lastScrollTime = currentTime;
- }
- updateCounters();
- });
- document.addEventListener('keydown', function(event) {
- letterCount++;
- var key = event.key.toUpperCase();
- keyPressCount[key] = (keyPressCount[key] || 0) + 1;
- updateCounters();
- });
- document.addEventListener('mousedown', function(event) {
- if (event.button === 0) {
- leftClickCount++;
- } else if (event.button === 2) {
- rightClickCount++;
- }
- updateCounters();
- });
- function updateCounters() {
- mouseCounter.textContent = 'Mouse Inches: ' + mouseInches.toFixed(2) + ' in';
- scrollCounter.textContent = 'Scrolls: ' + scrollCount;
- letterCounter.textContent = 'Letters Pressed: ' + letterCount;
- leftClickCounter.textContent = 'Left Clicks: ' + leftClickCount;
- rightClickCounter.textContent = 'Right Clicks: ' + rightClickCount;
- // Display top 5 keys pressed in a column
- var sortedKeys = Object.keys(keyPressCount).sort(function(a, b) {
- return keyPressCount[b] - keyPressCount[a];
- });
- var topKeysText = 'Top 5 Keys:<br>';
- for (var i = 0; i < Math.min(5, sortedKeys.length); i++) {
- var key = sortedKeys[i];
- topKeysText += key + ': ' + keyPressCount[key] + '<br>';
- }
- topKeysCounter.innerHTML = topKeysText;
- countersDiv.style.display = 'block';
- countersDiv.style.opacity = '1';
- }
- function createCounter(label) {
- var counter = document.createElement('div');
- counter.style.marginBottom = '8px';
- counter.textContent = label + ': 0';
- counter.style.color = '#fff';
- return counter;
- }
- })();