Ie instead of sending a "home_button_clicked" event, it has to work with: button_click=none -> button_click=home -> delay() -> button_click=none. Just a ridiculous architecture.
Obvious thing is to make it completely event based where certain events change state, ie discrete event=home_button_clicked which has the side-effect of setting event_last_button_clicked when that event is triggered.
They've done it completely the wrong way around and it annoys the hecky out of me.