Если я правильно понял задачу, чтобы основная кнопка мыши имитировала нажатие
W
, а вторая кнопка мыши -
пробел
с автоповтором:
const buttonChars = {
1: 'W', // левая (основная) кнопка мыши
2: ' ', // правая (второстепенная) кнопка
};
/* коды кнопок см. в https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
0 : No button or un-initialized
1 : Primary button (usually the left button)
2 : Secondary button (usually the right button)
4 : Auxilary button (usually the mouse wheel button or middle button)
8 : 4th button (typically the "Browser Back" button)
16 : 5th button (typically the "Browser Forward" button)
Могут быть нажаты одновременно несколько кнопок мыши - их коды суммируются.
*/
let timer;
const clearTimer = () => {if (timer) clearInterval(timer);}
const root = window;
root.addEventListener("mousedown", e => {
if (buttonChars.hasOwnProperty(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);