diff --git a/README.md b/README.md
index cfdab2fa..64b2742c 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,26 @@ Optionally the system can be operated in semi-automated mode, issuing navigation
See the [wiki](https://github.com/neu-rah/ArduinoMenu/wiki)
+## What's next — OneMenu / HAPI
+
+A successor is in active development, built on **HAPI**, a zero-overhead
+compile-time composition engine (github.com/InternetOfPins/HAPI). Menu
+definitions compile down to code indistinguishable from hand-written C —
+see it for yourself: [Compiler Explorer demo](https://godbolt.org/z/6srTzdTY7).
+
+This isn't a release. The core (**OneMenu**) is solid, and a drop-in
+compatibility layer for existing AM4 sketches is now in progress on the
+**[AM5 branch](https://github.com/neu-rah/ArduinoMenu/tree/AM5)** of this
+repo — real, unmodified AM4 examples (Blink, Button, Confirm so far) already
+build against it with just a library-dependency swap, at roughly the same
+flash/RAM savings as the Compiler Explorer demo above suggests. Still missing
+pieces (masked text-field editing, the idle/suspend API, most device
+drivers) before it covers AM4's full example set. If you're interested in
+the architecture, want to help with the compatibility layer, or just want to
+follow along: github.com/InternetOfPins/HAPI
+
+No migration is required right now. AM4 keeps working exactly as it does today.
+
## Simple Example
```c++
#include
diff --git a/funding.json b/funding.json
new file mode 100644
index 00000000..813c643e
--- /dev/null
+++ b/funding.json
@@ -0,0 +1,64 @@
+{
+ "version": "v1.1.0",
+ "entity": {
+ "type": "individual",
+ "role": "maintainer",
+ "name": "Rui Azevedo",
+ "email": "ruihfazevedo@gmail.com",
+ "phone": "",
+ "description": "Freelance embedded systems engineer with 35+ years of experience, based in the Azores, Portugal. Author of ArduinoMenu and the HAPI (Open Chain Derivation) compile-time composition framework, part of the InternetOfPins open source ecosystem (OneParse, OneMenu, OneChip, and related libraries) aimed at eliminating per-chip-variant fragmentation in embedded/IoT firmware.",
+ "webpageUrl": {
+ "url": "https://r-site.net"
+ }
+ },
+ "projects": [
+ {
+ "guid": "arduinomenu",
+ "name": "ArduinoMenu",
+ "description": "An open source menu/UI library for embedded and IoT devices (AVR, ESP32, STM32, and other MCU targets), used wherever a device needs a navigable on-device UI: buttons, encoders, LCD/OLED/TFT displays, serial terminals, or web interfaces. In production use for over a decade, with 1,000+ GitHub stars and preservation in the GitHub Arctic Code Vault. Funding supports migrating the library onto a newer, zero-overhead compile-time architecture (HAPI, part of the InternetOfPins ecosystem) and resolving a known compiler-diagnostics barrier that discourages less experienced adopters.",
+ "webpageUrl": {
+ "url": "https://github.com/neu-rah/ArduinoMenu"
+ },
+ "repositoryUrl": {
+ "url": "https://github.com/neu-rah/ArduinoMenu"
+ },
+ "licenses": [
+ "spdx:LGPL-2.1"
+ ],
+ "tags": [
+ "embedded",
+ "iot",
+ "arduino",
+ "menu",
+ "ui",
+ "cpp",
+ "avr",
+ "esp32",
+ "stm32"
+ ]
+ }
+ ],
+ "funding": {
+ "channels": [
+ {
+ "guid": "paypal",
+ "type": "payment-provider",
+ "address": "https://www.paypal.com/paypalme/ruihfazevedo",
+ "description": "PayPal.Me"
+ }
+ ],
+ "plans": [
+ {
+ "guid": "one-time",
+ "status": "active",
+ "name": "One-time donation",
+ "description": "Support ongoing development",
+ "amount": 0,
+ "currency": "EUR",
+ "frequency": "one-time",
+ "channels": null
+ }
+ ],
+ "history": []
+ }
+}
diff --git a/library.json b/library.json
index 3e19ae5b..43516f06 100644
--- a/library.json
+++ b/library.json
@@ -1,6 +1,6 @@
{
"name": "ArduinoMenu library",
- "version": "4.21.4",
+ "version": "4.21.5",
"keywords": "menu, display, lcd, tft, buttons, encoder, io, control",
"description": "AVR generic menu/interactivity system",
"repository":
diff --git a/src/menuIO/rotaryEventIn.h b/src/menuIO/rotaryEventIn.h
index 33c667f7..29aa4195 100644
--- a/src/menuIO/rotaryEventIn.h
+++ b/src/menuIO/rotaryEventIn.h
@@ -42,9 +42,14 @@ template constexpr inline T& operator^= (T& a, T b) { return (T&)((int&
BUTTON_DOUBLE_CLICKED = 1 << 1,
BUTTON_LONG_PRESSED = 1 << 2,
- ROTARY_CW = 1 << 3,
+ ROTARY_CW = 1 << 5, // fix for issue #414
ROTARY_CCW = 1 << 4,
};
+/*
+EventType values should be different for codes defined as:
+const navCodesDef Menu::defaultNavCodes (menuBase.cpp file)
+and special cases in textField::parseInput (items.cpp file) function
+*/
EventType config;
EventType events; // we could do a fifo if we miss events