Как отлавливать события клавиатуры в Cycle.js?

Я пытаюсь заполучить, когда пользователь нажимает клавишу Escape с открытым приложением (поэтому не обязательно с фокусированным полем ввода). Однако до сих пор я застрял на перехвате событий клавиатуры вообще. Вот что я сейчас пытаюсь:

drivers.DOM.select(':root')
.events('keypress')
// .filter(ev => ev.keyCode === 27)
.map(ev => true)

Я пытался поймать вечера на body а также html как хорошо, но оба безрезультатно...

1 ответ

Решение

Просто создайте однострочный драйвер клавиатуры:

Cycle.run(main, {
  DOM: makeDOMDriver(containerElement),
  Keypress: () => Rx.Observable.fromEvent(document, 'keypress'); // <=====
});

Проверьте этот пример: https://github.com/cyclejs/examples/blob/master/animated-letters/src/main.js#L110

Другие вопросы по тегам