I used a Virtual Device addon “Push Button” instance and a custom rule to fire events when the button was pushed.
Create a custom rule:
Condition: When “named button” is pushed OR [insert other conditions to trigger event]
Action: Perform real action AND reset “named button” to NOT pushed
Basically when the button is pushed an action is triggered. You must reset the button to not-pushed as one of the actions.