Skip to content

Instantly share code, notes, and snippets.

@kyzsuukii
Last active November 23, 2024 16:26
Show Gist options
  • Save kyzsuukii/7bcd4a246f327d0cf4ce4b8d3fb03237 to your computer and use it in GitHub Desktop.
Save kyzsuukii/7bcd4a246f327d0cf4ce4b8d3fb03237 to your computer and use it in GitHub Desktop.
typing test hack
// ==UserScript==
// @name 10fastfingers hack
// @namespace http://tampermonkey.net/
// @version 1.6
// @description Simulate typing and auto correct
// @license MIT
// @author kyzsuki
// @match https://10fastfingers.com/typing-test/*
// @match https://typingtop.com/*/typing-test
// @grant none
// ==/UserScript==
(function () {
"use strict";
var word_idx = 0;
var letter_idx = 0;
var interval_per_word = 250;
var maxTypoCount = Math.floor(Math.random() * (16 - 7 + 1)) + 7;
var currentTypoCount = 0;
var typingInterval;
var word;
var isTyping = false;
function typing() {
var interval_per_letter = Math.floor(Math.random() * (130 - 110 + 1)) + 110;
if (countdown <= 0) {
clearTimeout(typingInterval);
isTyping = false;
// word_idx = 0;
return;
}
if (word_idx < words.length) {
word = words[word_idx];
if (letter_idx < word.length) {
var letter = word[letter_idx];
if (Math.random() < 0.1 && currentTypoCount < maxTypoCount) {
letter = String.fromCharCode(97 + Math.floor(Math.random() * 26));
currentTypoCount++;
}
$("#inputfield").val($("#inputfield").val() + letter);
letter_idx++;
typingInterval = setTimeout(typing, interval_per_letter);
} else {
var keyup = jQuery.Event("keyup");
keyup.which = 32;
$("#inputfield").trigger(keyup);
word_idx++;
letter_idx = 0;
if (word_idx < words.length) {
typingInterval = setTimeout(typing, interval_per_word);
}
}
}
}
function autoCorrect() {
if (word_idx < words.length) {
word = words[word_idx];
if (letter_idx < word.length) {
var letter = word[letter_idx];
if (Math.random() < 0.1 && currentTypoCount < maxTypoCount) {
letter = String.fromCharCode(97 + Math.floor(Math.random() * 26));
currentTypoCount++;
}
$("#inputfield").val($("#inputfield").val() + letter);
letter_idx++;
} else {
var keyup = jQuery.Event("keyup");
keyup.which = 32;
$("#inputfield").trigger(keyup);
word_idx++;
letter_idx = 0;
}
}
}
$(document).on("keydown", function (event) {
event.preventDefault();
if (!isTyping) {
isTyping = true;
autoCorrect();
isTyping = false;
}
});
document.addEventListener("keydown", function (e) {
if (isTyping) {
e.preventDefault();
}
});
$("#inputfield").on("focus mouseover", function (e) {
if (isTyping) {
e.preventDefault();
}
});
document.addEventListener("keydown", function (e) {
if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.code === "KeyZ") {
isTyping = true;
typingInterval = setTimeout(typing, interval_per_word);
}
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment