(async () => {
const targetText = document.getElementById('type_text').value;
const inputArea = document.getElementById('type');
// On vide le champ et on lui donne le focus
inputArea.value = "";
inputArea.focus();
// 160ms = environ 75 WPM (Words Per Minute)
const delay = 160;
console.log("Démarrage du script à 75 WPM...");
for (let i = 0; i < targetText.length; i++) {
let char = targetText[i];
// Gestion du retour chariot spécial du site
let isEnter = (char === '¶');
let key = isEnter ? 'Enter' : char;
let keyCode = isEnter ? 13 : char.charCodeAt(0);
const eventOptions = {
key: key,
keyCode: keyCode,
which: keyCode,
bubbles: true,
cancelable: true
};
// Envoi des événements clavier
inputArea.dispatchEvent(new KeyboardEvent('keydown', eventOptions));
inputArea.dispatchEvent(new KeyboardEvent('keypress', eventOptions));
// Note : Si les lettres ne s'affichent plus du tout,
// décommentez la ligne suivante (enlevez les //) :
// inputArea.value += (isEnter ? '\n' : char);
inputArea.dispatchEvent(new KeyboardEvent('keyup', eventOptions));
// Signal de modification pour les stats du site
inputArea.dispatchEvent(new Event('input', { bubbles: true }));
// Attente pour respecter le rythme de 75 WPM
await new Promise(resolve => setTimeout(resolve, delay));
}
console.log("Terminé ! Score visé : 75 WPM.");
})();