Определение буквы
document.addEventListener('keydown', (e) => {
if (e.key.toLowerCase() === 's' && (e.ctrlKey || e.metaKey)) {
e.preventDefault(); // Ctrl/Cmd + S
save();
}
});Сравнение e.key.toLowerCase() учитывает Shift и Caps Lock. Для игровых элементов управления, которые должны оставаться на одном месте на любой раскладке, сравнивайте e.code ("KeyW", "KeyA", "KeyS", "KeyD").
Поиск keycode для JavaScript
Нажмите любую клавишу и сразу увидите все свойства события клавиатуры, а также готовый к копированию фрагмент keydown для горячих клавиш.