TGViewer
Катерина | Про Frontend Катерина | Про Frontend @katerina_profrontend · 2.86K subscribers
Post #1544 1.37K
Обработка комбинаций клавиш 🧑‍💻

Комбинация клавиш используют для обычных вещей: сохранить данные, перейти между экранами, ускорить работу. В JavaScript это реализуется довольно просто, если понимать, как работают события клавиатуры.

Немного теории

✔️ Комбинация клавиш — это одно событие keydown, внутри которого мы проверяем:
⏺️ какую клавишу нажали;
⏺️ зажаты ли модификаторы (Ctrl, Shift, Alt, Meta);
✔️ В браузере нет отдельного события “Ctrl+S” — всё делается через условия.

Ключевые свойства события

✔️ event.key — символ или имя клавиши ("a", "Enter");
✔️ event.code — физическая клавиша ("KeyA", "Enter");
✔️ event.ctrlKey, event.shiftKey, event.altKey, event.metaKey — модификаторы.

Простой пример: Ctrl + S


document.addEventListener('keydown', (event) => {
if (event.ctrlKey && event.code === 'KeyS') {
event.preventDefault(); // при необходимости отменяем дефолтное поведение
// наша логика
}
});


На что стоит обратить внимание?

✨ Не перехватывайте хоткеи при вводе текста в input и textarea;
✨ На macOS вместо Ctrl часто используют Meta (Cmd);
✨ Удержание клавиши вызывает повторные события keydown;
✨ Для хоткеев лучше использовать event.code, чтобы не зависеть от раскладки.

И, конечно же, не злоупотребляйте глобальными хоткеями — они должны дополнять интерфейс, а не заменять его. 😁
  • ❤ 14
  • 👍 6
  • 👌 4
More from @katerina_profrontend
  1. Feb 22, 2026Когда height: 100% чуть-чуть поломало вёрстку 🙈 Я делала простую сетку: контейнер display…
  2. Feb 20, 2026Разбираемся с Proxy в JavaScript 👨‍🏫 Proxy — посредник между кодом и объектом. Он перехв…
  3. Feb 17, 2026Compression Streams API — нативный gzip/deflate прямо в браузере 🤔 Недавно снова вспомнил…
  4. Feb 9, 2026Почему бизнес-логику не стоит писать в UI-компонентах 🧐 Часто вижу один и тот же паттерн:…
  5. Feb 6, 2026Как неочевидные импорты превращают проект в клубок зависимостей 😨 На бумаге — простое пра…
  6. Feb 2, 2026«Хочу стиль для p в header, но не хочу повышать специфичность» 😎 Иногда самая тривиальная…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →