If the keyboard / roving-ux didnt change the focus, how can this library get the update so it's state can match the new state. could just be exporting active() for users to call themselves? Would also be nice to not have focus called too, so an extra parameter would be nice.
todo: