// ==UserScript== // @name Taming.io Keystrokes // @namespace http://tampermonkey.net/ // @version 0.1 // @description A simple script to see visually the keys you have pressed. (Stylish for recording, streaming, etc.) // @author You // @match https://taming.io // @icon https://taming.io/img/item/amber-spear.png // @grant none // @downloadURL none // ==/UserScript== const keystrokes = document.createElement("div"); keystrokes.className = "keystrokes"; keystrokes.innerHTML = `
W
A
S
D
CPS:
CPS:
`; const injectCSS = ` .keystrokes { width:240px; height: 240px; text-align: center; vertical-align: middle; font-family: "Lato", sans-serif; pointer-events: none; user-select: none; position: absolute; bottom: 50%; left: -30px; z-index: 999; opacity: 0.7; animation: rainbow 10s infinite; font-weight: 500; } .w, .a, .s, .d, .space, .lmb, .rmb { position: absolute; font-family: "Lato", sans-serif; transition: 0.3s; background: #000000; border-radius: 5px; } .w, .a, .s, .d { width: 55px; height: 60px; line-height: 60px; font-size: 20px; font-weight: 1000; } .lmb, .rmb { font-size: 14px; line-height: 40px; } .w { left: 100px; top: 15px; } .a { left: 35px; top: 80px; } .s { left: 100px; top: 80px; } .d { left: 165px; top: 80px; } .lmb { width: 87.5px; height: 40px; top: 145px; left: 34.5px; } .rmb { width: 87.5px; height: 40px; top: 145px; left: 132.5px; } .space { width: 185px; height: 40px; top: 195px; left: 35px; } @keyframes rainbow { 0% { color: #ff0000; } 10% { color: #fc7b03; } 20% { color: #fcf803; } 30% { color: #98fc03; } 40% { color: #03fc28; } 50% { color: #03fccf; } 60% { color: #03c2fc; } 70% { color: #033dfc; } 80% { color: #6b03fc; } 90% { color: #e803fc; } 100% { color: #fc031c; } } `; function createVisual() { let s = document.createElement("style"); s.type = "text/css"; s.innerHTML = injectCSS; document.head.appendChild(s); document.body.appendChild(keystrokes); } let seconds = 0; let leftMouseClicks = 0; let rightMouseClicks = 0; let keys = []; window.addEventListener("keydown", function (e) { keys[e.keyCode] = e.type == "keydown"; if (keys[87]) { document.getElementsByClassName("w")[0].style.backgroundColor = "#424242"; } if (keys[65]) { document.getElementsByClassName("a")[0].style.backgroundColor = "#424242"; } if (keys[83]) { document.getElementsByClassName("s")[0].style.backgroundColor = "#424242"; } if (keys[68]) { document.getElementsByClassName("d")[0].style.backgroundColor = "#424242"; } if (keys[32]) { document.getElementsByClassName("space")[0].style.backgroundColor = "#424242"; } }); window.addEventListener("keyup", function (e) { keys[e.keyCode] = e.type == "keydown"; if (e.keyCode != 32) { document.getElementsByClassName(e.key.toLowerCase())[0].style.background = "#000000"; } else { document.getElementsByClassName("space")[0].style.background = "#000000"; } }); window.onload = function () { createVisual(); function cps() { document.onclick = function () { leftMouseClicks++; document.getElementsByClassName("lmb")[0].style.background = "#424242"; }; this.secCounter = setInterval(function () { seconds++; }, 100); this.reset = function () { leftMouseClicks = 0; rightMouseClicks = 0; seconds = 0; }; this.getLeftCps = function () { return Math.ceil((leftMouseClicks / seconds) * 10); }; this.getRightCps = function () { return Math.ceil((rightMouseClicks / seconds) * 10); }; } var counter = new cps(); setInterval(function () { if (counter.getLeftCps) { document.getElementById("lmb").innerHTML = "CPS: " + counter.getLeftCps(); } if (counter.getRightCps) { document.getElementById("rmb").innerHTML = "CPS: " + counter.getRightCps(); } document.getElementsByClassName("lmb")[0].style.background = "#000000"; document.getElementsByClassName("rmb")[0].style.background = "#000000"; counter.reset(); }, 1000); }; document.addEventListener("contextmenu", (event) => { event.preventDefault(); rightMouseClicks++; document.getElementsByClassName("rmb")[0].style.background = "#424242"; });