назад до уроку

Розширені комбінації гарячих клавіш

важливість: 5

Створіть функцію runOnKeys(func, code1, code2, ... code_n), яка запускає func при одночасному натисканні клавіш із кодами code1, code2, …, code_n.

Наприклад, код нижче показує alert, коли "Q" та "W" натискаються разом (будь-якою мовою, з або без CapsLock)

runOnKeys(
  () => alert("Привіт!"),
  "KeyQ",
  "KeyW"
);

Демонстрація в новому вікні

Ми повинні використовувати два обробники: document.onkeydown і document.onkeyup.

Давайте створимо набір pressed = new Set(), щоб зберегти поточні натиснуті клавіші.

Перший обробник додає до нього, а другий видаляє. Кожного разу при keydown ми перевіряємо, чи достатньо натиснутих клавіш, і запускаємо функцію, якщо це так.

Відкрити рішення в пісочниці.