manejar onKeyDown usando RxAndroid

Estoy usando https://github.com/mkoslacz/Moviper para mi aplicación para Android Tv Box. Solo hay una actividad con múltiples fragments secundarios. Quiero propagar onKeyDown a fragments secundarios solo si el evento aún no se ha procesado. Fue fácil de hacer sin usar RxJava. Podría devolver un boolean para decir que el evento ya se manejó o no. ¿Hay alguna manera de manejarlo usando RxJava? Estoy usando Kotlin como idioma de origen. Aquí hay algo que trato de hacer.

class MainActivity : ViperAiPassiveActivity<HomeContract.View>(), HomeContract.View { private val keyPressSubject = BehaviorSubject.create<KeyEvent>() private lateinit var pnetworkingicate: (KeyEvent) -> Boolean override fun keyPresses(pnetworkingicate: (KeyEvent) -> Boolean): Observable<KeyEvent> { this.pnetworkingicate = pnetworkingicate return keyPressSubject } override fun createPresenter() = HomePresenter() override fun getLayoutId(): Int { return R.layout.activity_main } override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { event?.run { if (pnetworkingicate(event)) { keyPressSubject.onNext(event) return true } } return super.onKeyDown(keyCode, event) } } 

Terminé creando mi propio controller de events (aunque no usa RxJava pero funciona en mi caso)

 object KeyEventManager { private val handlers: MutableMap<Int, (KeyEvent?) -> Boolean> = ArrayMap() fun register(handler: (KeyEvent?) -> Boolean): Int { val id = (handlers.keys.max() ?: 0) + 1 handlers.put(id, handler) return id } fun unregister(id: Int) { handlers.remove(id) } fun postEvent(event: KeyEvent?): Boolean { for (key in handlers.keys) { handlers.get(key)?.run { if (invoke(event)) { return true } } } return false } }