ea0b423fab
The touch guard dropped a tap as soon as the finger drifted more than 18 px (under 3 mm) from its very first contact point, on both boards and regardless of the page-swipe setting; LVGL itself never cancelled these clicks (no scrollable ancestors, gestures do not suppress clicks). A finger that flattens or rolls while pressing was enough, and the tap vanished without a trace in the log. The limit is now about one centimetre per board (TOUCH_MOVE_LIMIT_PX: Guition 67 px, CYD 56 px), measured from a reference that settles over the first four samples; only the contact that started the touch is followed, so a second finger no longer counts as movement; the minimum contact time is per board too (TOUCH_MIN_PRESS_MS: 60 ms resistive, 20 ms capacitive). Every refused tap is logged on INFO with its reason (moved, too short, already used, bounce). Firmware 0.2.23 for CYD and Guition. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Testresultaten app 0.2.28 / firmware 0.2.23 (2026-09-14)
Alleen firmware: tikken die verloren gingen doordat de vinger tijdens het drukken iets verschoof. De app verandert alleen de doelversie.
Diagnose vooraf (waarom tikken wegvielen)
cyd::TouchGuard::update()markeerde een aanraking als "verplaatst" zodra x of y meer dan 18 px van het allereerste contactpunt afweek (Guition ≈ 2,7 mm, CYD ≈ 3,2 mm);accept()weigerde daarna stil, zonder logregel. LVGL 9.5 zelf annuleert een klik alleen bij scrollen (alle containers staan opscrollable: false) of bij een ander object onder de vinger (press lost); een gesture (50 px, snelheid 3 px/meting) onderdrukt geen klik. De blokkade zat dus in de eigen guard, ver onder de veegdrempel en ook met "Vegen tussen pagina's" uit.- Bijzaken: elk contactpunt (ook een tweede vinger) voedde de guard; de 60 ms minimumduur voor contactdender gold ook op de capacitieve Guition.
Wat veranderde
- Per bord
TOUCH_MOVE_LIMIT_PX(Guition 67, CYD 56: circa 1 cm) enTOUCH_MIN_PRESS_MS(CYD 60, Guition 20), viaconfigure()inon_boot. - Verplaatsing is nu de afstand tot een referentiepunt dat over de eerste vier metingen (≈ 60 ms bij 20 ms polling) settelt; een snelle veeg wordt daardoor pas op de vijfde meting herkend, een langzame drift onder 1 cm blijft een tik.
- Alleen het contact-id waarmee de aanraking begon telt (
touch.id). reason()enruntime_tiles::allowed(): elke geweigerde tik op tegel, kaartknop of bediening staat op INFO in het log met tagtouch.
Geautomatiseerd
- C++ (clang++ -std=c++17 -Wall -Wextra -Werror): 11/11 PASS.
test_cyd_uidekt de nieuwe grenzen: 55 px drift geaccepteerd, veeg van 180 px geweigerd met redenverplaatst, tweede vinger genegeerd, 10 ms te kort op de Guition,al verwerkt, dendertijd, CYD-sprong van 30 px geaccepteerd en 70 px geweigerd; de oude standaardwaarden (18 px, 60 ms) gelden nog zonderconfigure(). - Python: 84 tests OK (
FIRMWARE_VERSION0.2.23 gelijk aan beide bordprofielen en pakketten).tools/generate_packages.py --checkgroen; de bench-kopieën in.esphome/easy-*-package.yamlopnieuw gegenereerd. - ESPHome 2026.6.2 compile:
easy-guition-device.yamlSUCCESS in 43 s (RAM 31,9%, flash 18,3%),easy-cyd-device.yamlSUCCESS in 41 s (RAM 30,9%, flash 76,0%); geen nieuwe waarschuwingen incyd_ui.hofruntime_tiles.h.
Nog niet geverifieerd
- Fysiek tikken met een bewegende vinger op beide borden; de bench-borden hingen
tijdens deze ronde niet aan USB en reageerden niet op de API, dus geen flash en
geen logcontrole van de nieuwe
touch-regels. Max werkt de schermen bij via Bijwerken en kijkt in het ESPHome-log of geweigerde tikken nu een reden geven.