Let LVGL decide a tap on the Guition: release inside the tile counts (0.2.33)

A firm press on Studio 1 that drifted 73 px was still refused by the touch
guard's movement limit. On a capacitive panel that limit has no job left:
the edge swipe consumes its own tap, sliders capture their own drag, and
LVGL already drops the click when the finger leaves the tile. The guard's
limit can now be 0 (no limit); the Guition profile sets it so, the CYD
keeps 56 px because its resistive panel jumps. Firmware 0.2.28 for both
boards; the app only moves its target version.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Max Gramser
2026-09-14 13:15:09 +02:00
parent b9e1dfbd95
commit e3efbbaa06
12 changed files with 73 additions and 18 deletions
+12
View File
@@ -76,6 +76,18 @@ int main() {
wide.begin(3200, 200, 200, 3);
assert(!wide.accept(3260, 2)); // same tile within 600 ms
assert(wide.reason() == "dezelfde knop binnen de dendertijd");
// No movement limit (0): a capacitive board leaves the drift decision to LVGL's press-lost.
cyd::TouchGuard free;
free.configure(0, 20);
free.begin(100, 200, 200, 3);
free.update(205, 200, 3); free.update(205, 200, 3); free.update(205, 200, 3); // settled
free.update(400, 260, 3);
assert(free.distance() > 200);
assert(free.accept(180, 1)); // 200 px of drift, still a tap
free.begin(1000, 200, 200, 3);
free.update(205, 200, 3); free.update(205, 200, 3); free.update(205, 200, 3);
free.update(400, 200, 3);
assert(free.accept_repeat(1060, 7)); // -/+ keys follow the same rule
cyd::TouchGuard resistive;
resistive.configure(56, 60);
resistive.begin(100, 50, 50);