Опубликованный на Гитхабе список изменений позволяет уверенно огласить вот что: важнейшим из достоинств новой версии стала возможность ловить события не только во всём окне в целом, но и для одного или нескольких отдельных элементов DOM. Теперь и при программировании различающихся реакций у различных элементов
![[Keypress]](https://habrastorage.org/r/w1560/getpro/habr/post_images/c73/6a8/82b/c736a882b60fcfbcc8c964c911544e1a.png)
Возможности же эти вот каковы:
- Реакция на нажатие и отпускание одной или нескольких клавиш. Поддерживаются синонимы
кросс-платформенные (например, "meta" означает "cmd"или "ctrl" в зависимости от системы) и шифтовые (например, "@" означает сочетание Shift и двойки).
Программируемые сочетания клавиш могут включать в себя не только классические модификаторы ("meta", "alt", "option", "ctrl", "shift", "cmd"), но и какие угодно другие клавиши. Например, программируя WASD-управление пошаговою бродилкою, нетрудно достигнуть того, чтобы нажатие и отпусканиеклавиши «W» означало шаг вперёд,но «W» и «D» совместно — шаг по диагоналивперёд+направо.
- Возможно указание сочетаний клавиш, состоящих не из одновременных,
а из последовательных нажатий клавиш. Это такие сочетания, каккод Конами, например.
- Специальные «считающие» комбинации позволяют программировать такие ситуации, в которых нажатие основной клавиши обнуляет некоторый счётчик, а каждое нажатие дополнительной клавиши (при удержании основной) увеличивает этот счётчик на единицу. David Mauro (автор Keypress) приводит в пример такое сочетание
Tab+Space, при котором нажатие Tab тотчас же открывает первую вкладку в некотором наборе вкладок, а каждое нажатие на пробел (при удержании Tab) перебрасывает на следующую вкладку — на вторую, на третью, на четвёртую…
Для каждой одиночной клавиши (или для комбинации) возможны дополнительные настройки. Эти настройки позволяют при необходимости сделать вот что:
- Предотвращать реакцию на системный автоповтор нажатий клавиши, удерживаемой в нажатом состоянии.
- Прибавить к обработке ещё и перехват события, то есть вызов метода
event.preventDefault().
- Управлять специфичностью событий — например, предотвращать
срабатывание "s" при нажатии комбинации"shift s", если реакция на эту комбинацию была запрограммирована отдельно.
- Отключать требование строгого порядка клавиш. Например, обеспечить срабатывание
"shift s" даже в тех случаях, когда сперва нажали клавишу «S», и лишь после неё — «Shift».
- Предотвращать срабатывание клавиши (или комбинации клавиш) в том случае, когда одновременно с этими клавишами были нажаты
какие-либо другие (посторонние) клавиши (одна или несколько).
Сознавая пользу такой гибкости определений и настроек, я намерен в дальнейшем библиотекою Keypress воспользоваться, и вам желаю того же.

