Как повесить событие на вде одновременно зажатые клавиши клавиатуры?
Искал по СОФ подобный вопрос но находил решение только для Питона. Есть простая задача, выполнить определенное действие при зажатии (именно зажатии!) 2 клавишь. Пример кода:
window.onkeydown = function(e){
if (e.shiftKey && e.keyCode === 83) {
delete_storage();
}
}
Но если я хочу повесить событие на 2 клавиши и не одна из них не является Альтом, Шифтом или Энтером? Например, клавиши S и D? Тогда код должен выглядеть вот так:
window.onkeydown = function(e){
if (e.keyCode === 68 && e.keyCode === 83) {
delete_storage();
}
}
Но он не работает XD. Почему? И как это можно реализовать?
Ответы (1 шт):
Автор решения: Denis640Kb
→ Ссылка
function pressKeys(doFunc, ...keys) {
let clicked = new Set();
document.addEventListener('keydown', function(e) {
clicked.add(e.code);
for (let key of keys) {
if (!clicked.has(key)) {
return;
}
}
clicked.clear();
doFunc();
});
document.addEventListener('keyup', function(e) {
clicked.delete(e.code);
});
}
pressKeys(()=>console.log('Нажаты S и D'),"KeyS", "KeyD");