@bravenel Sorry if you are not the right person to ask this:
I am currently going around my home and adding devices to Hubitat and also implementing a 2 way sync to ST to minimise disruption the house and also so that we have a working app. This Driver is the first one that I have ported. I have implemented one thing a bit strangely - and I wanted to find out what the "correct way" to do it is:
When a button event is fired the state of the button device seems to keep the last event. This caused problems because it wasn't always easy to determine if a new event had fired if the same button was operated in the same way.
To get around this I added a button push / hold / double click with value 0 which fires 1 second after the actual event - to reset the state to a default / neutral state.
This is working well for what I need right now - but would be good to understand the correct thing to do
Buttons don't really have state, or at least you shouldn't be thinking in those terms nor your code. All they have are events. What you see in the state display on the device page is only the shadow of the last event, not state. Your driver should be driven entirely from events.
I won't be doing any further updates to this driver (I don't think anymore is required anyway) - because I am replacing all my Wall Controllers with a battery-less solution. If anyone here is interested in all my old wall controllers that are compatible with this driver the pm me as I'll be selling them when I'm done