File size: 3,234 Bytes
364eb96 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | (function () {
console.log("%c Monkeytype Cheat Initiated (Static Buffer Mode) ", "background: #222; color: #bada55; font-size: 20px");
const keyMap = {
' ': { code: 'Space', keyCode: 32 },
'\n': { code: 'Enter', keyCode: 13 },
};
function typeChar(char) {
const target = document.activeElement || document.body;
let key = char;
let code, keyCode;
// Basic char code fallback
if (keyMap[char]) {
code = keyMap[char].code;
keyCode = keyMap[char].keyCode;
} else {
code = `Key${char.toUpperCase()}`;
keyCode = char.toUpperCase().charCodeAt(0);
}
const eventOptions = {
key: key,
code: code,
keyCode: keyCode,
which: keyCode,
bubbles: true,
cancelable: true,
isTrusted: true
};
target.dispatchEvent(new KeyboardEvent('keydown', eventOptions));
target.dispatchEvent(new KeyboardEvent('keypress', eventOptions));
const inputEvent = new InputEvent('input', {
data: char,
inputType: 'insertText',
bubbles: true,
cancelable: true
});
target.dispatchEvent(inputEvent);
target.dispatchEvent(new KeyboardEvent('keyup', eventOptions));
}
function getDelay() {
return 100 + (Math.random() * 60 - 30); // ~100-120ms
}
async function cheat(textToType) {
console.log(`Cheat triggered. Typing ${textToType.length} chars...`);
for (let i = 0; i < textToType.length; i++) {
typeChar(textToType[i]);
await new Promise(r => setTimeout(r, getDelay()));
}
console.log("Done.");
}
// 1. Identify whole words FIRST (as requested)
function getFullText() {
const words = document.querySelectorAll('#words .word');
let fullBuffer = "";
words.forEach((word, index) => {
const letters = word.querySelectorAll('letter');
letters.forEach(l => fullBuffer += l.textContent);
// Add space between words, but NOT after the last word
if (index < words.length - 1) {
fullBuffer += " ";
}
});
return fullBuffer;
}
const triggerHandler = (e) => {
// Only trigger on single char keys
if (e.key.length === 1 && !e.ctrlKey && !e.altKey && !e.metaKey) {
const targetText = getFullText();
const firstChar = targetText[0];
if (firstChar && e.key === firstChar) {
window.removeEventListener('keydown', triggerHandler);
// User typed the first char. We type the rest.
const remainingText = targetText.substring(1);
console.log("Triggered! Taking over in 150ms...");
setTimeout(() => cheat(remainingText), 150);
}
}
};
window.addEventListener('keydown', triggerHandler);
console.log("READY: Static Buffer Mode. Words identified. Type first letter.");
})(); |