Что-то мне подсказывает, что достаточно очереди (для "нажатий") и
спулера. При обратных связях соответствующие одиночные элементы или
последовательности вставляются в очередь, остальное "расталкивая
локтями". Времена для спулера задавать в элементах очереди.