const ENTER_KEY_CODE = 13 const MAX_INTERVAL_BETWEEN_EVENTS_IN_MS = 50 const keyCode$ = Rx.Observable.fromEvent(document, "keypress") .pluck('keyCode') const keyCodesBuffer$ = keyCode$ .buffer(keyCode$.debounce(MAX_INTERVAL_BETWEEN_EVENTS_IN_MS)) .filter(isFromScan) function isFromScan(keyCodes) { return keyCodes.length > 1 && keyCodes[keyCodes.length - 1] === ENTER_KEY_CODE } function fillInputWith(keyCodes) { // … } keyCodesBuffer$.subscribe(fillInputWith)