// ==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";
});