A compact, simple-to-use, reliable and powerful event-driven button library, with proper debouncing and fine grained event structure. Supported events are TRANSITION, EACH_CLICK, DONE_CLICKING, SINGLE_CLICK, DOUBLE_CLICK, LONG_PRESS_START, DURING_LONG_PRESS and LONG_PRESS_END. Unneeded features can be disabled in compile-time to minimize footprint. All the timings can be easily configured.