An adjustable, compact, event-driven button library that handles debouncing and dispatches events to a user-defined event handler.
Supported events are Pressed, Released, Clicked, DoubleClicked, LongPressed, and RepeatPressed. Timing parameters, event activation, and event suppression can be configured at compile-time or run-time. Optimized for compact memory consumption. Supports buttons connected directly to digital pins, multiple buttons connected to digital pins through a binary encoder, or multiple buttons connected to analog pins through a resistor ladder.