fix: replace long-press lock trigger with back_btn.isPressed() check

Long press detection on back_btn was unreliable — the release generated
a spurious CLICK that cancelled the sequence. Now the Enter click handler
checks back_btn.isPressed() directly: holding Back and clicking Enter 3×
within 3 seconds locks/unlocks the screen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-05-17 10:09:54 +02:00
co-authored by Claude Sonnet 4.6
parent ef0241b5f3
commit 43f3621fdc
2 changed files with 31 additions and 47 deletions
+3 -4
View File
@@ -35,9 +35,8 @@ class UITask : public AbstractUITask {
NodePrefs* _node_prefs;
bool _locked;
unsigned long _lock_wake_until; // when to blank screen again after locked wake (5s)
int _lock_seq; // 0=idle, 1=active (long-Back pressed, awaiting Enters)
int _lock_seq_count; // Enter presses so far in current sequence
unsigned long _lock_seq_ms; // millis() when sequence started
int _lock_seq_count; // Enter presses while Back held (lock/unlock sequence)
unsigned long _lock_seq_ms; // millis() of last lock-sequence press (for timeout)
char _alert[80];
char _notif_mel_buf[220]; // persistent RTTTL buffer for custom notification melodies
unsigned long _alert_expiry;
@@ -93,7 +92,7 @@ public:
_msgcount = _room_unread = 0;
_locked = false;
_lock_wake_until = 0;
_lock_seq = 0; _lock_seq_count = 0; _lock_seq_ms = 0;
_lock_seq_count = 0; _lock_seq_ms = 0;
_last_notif_ch_idx = -1;
_last_notif_dm_valid = false;
memset(_last_notif_dm_prefix, 0, sizeof(_last_notif_dm_prefix));