Отследить одновременное нажатие
важность: 5
Создайте функцию runOnKeys(func, code1, code2, ... code_n)
, которая запускает func
при одновременном нажатии клавиш с кодами code1
, code2
, …, code_n
.
Например, код ниже выведет alert
при одновременном нажатии клавиш "Q"
и "W"
(в любом регистре, в любой раскладке)
runOnKeys(
() => alert("Привет!"),
"KeyQ",
"KeyW"
);
Необходимо использовать два обработчика событий: document.onkeydown
и document.onkeyup
.
Создадим множество pressed = new Set()
, в которое будем записывать клавиши, нажатые в данный момент.
В первом обработчике будем добавлять в него значения, а во втором удалять. Каждый раз, как отрабатывает keydown
, будем проверять – все ли нужные клавиши нажаты, и, если да – выводить сообщение.