JSFiddle - React, Tailwind, and code Playground

by Sergei Sokolov

HTML

<textarea cols="80" rows="5"></textarea>

JavaScript

/**
 * для вопроса https://toster.ru/q/645012
 * Как переписать данный скрипт?
 */
const buttonChars = {
	1: 'W',
  2: ' ',
};

let timer;
const clearTimer = () => {if (timer) clearInterval(timer);}
const root = window;

root.addEventListener("mousedown", e => {
  if (buttonChars.hasOwnProperty(e.buttons)) {
    console.log(buttonChars[e.buttons]);
  	const func = () => e.target.dispatchEvent(
      new KeyboardEvent('keydown',{
        'key': buttonChars[e.buttons],
        'bubbles': true,
        'cancellable': true,
      })
    );
    
    func();
    clearTimer();
    timer = setInterval(func, 80);
  };
});

root.addEventListener("mouseup", clearTimer);


// Testing
const input = document.querySelector("textarea");
document.body.addEventListener("keydown", e => input.value += e.key);