Комментарии 17
В данном примере недостает только «мульти-перевыбора».
Как в файловых менеджерах.
1+shift+6 выбирает с 1 по 6. Если после нажать shift+4 то должны стать выбранными только 1-4. В данном же примере ничего не произойдет, нужно «отщелкнуть» и сделать новый мультивыбор.
Да ок)) это был фан ради фана. Я вообще ще делаю потихоньку либу для реактивного keyboard shortcut построенного полность на Rx.Типа такого github.com/ccampbell/mousetrap. По вашему вопросу, можно добавить такой подход. Я вообще хочу сделать норм пример с React или Yolk.
Не подумайте, это не критика. Я посчитал что этот код вы используете в рабочих проектах и поделился мнением, как пользователь, для улучшения юзабилити.
Технологии это конечно круто, но мне как экс-радиолюбителю ничего не удалось передать. Вернее ваша софтина не смогла расшифровать. Учли ли вы, что тире в три раза длиннее точки?
да, там чуток упростил логику) наверное вы не выждали паузу между буквами. Дождидесь когда буква появится на экране, только потом набирайте следующую. Длительность точки брал относительно (на глаз до 400 мс). Все что больше 400 мс — будет тире)
Я так понял что длительность точки захардкожена на 400мс.

Следущим шагом можно сделать динамическую подстройку скорости передачи. За последние несколько секунд — собирать статистику по длинне сигналов и пауз. И, соответственно, устанавливать порог различия между точкой и тире.
Да, думал об этом, идею можно развивать дальше. Это был просто самый простой вариант для демо.
После этого необходимо возвращать разницу во времени между keydown и keyup. Создадим для этого отдельный стрим.

А почему вы просто не взяли window с закрытием окон по отпусканию ключа? Тогда длительностью сигнала была бы разница между первым событием окна и последним (и заодно можно было бы не отсеивать повторяющиеся keyDown).
Я помню этот доклад на ВебКампе2015 в Одессе, для Хабра вполнен годно! :)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.