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

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

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

Я тоже пробовал ловить эвенов на body и html, но оба безуспешно ...


person Vincent    schedule 26.03.2016    source источник


Ответы (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.

person André Staltz    schedule 27.03.2016
comment
Имеет смысл, спасибо! (Удивительно, насколько элегантным может быть Cycle, большое спасибо за его создание :)) - person Vincent; 27.03.2016