Contact nicknames: TouchPrefsStore nick blob (48 x 38 B), display-only lookups (contactShownName, threadShownName, senderShownName), Contact options > Nickname on the shared text prompt (an empty OK clears it). Control panel restyled in the launcher's tile language, with a Battery saver tile; keyboard tooltips (navSetTip), an amber cursor and touch long-press tooltips (the T-Deck touch read hid them on every poll). T-LoRa Pager: M/C/A/S on Home, H/S tap and hold, Backspace = Back, N = jump to new, held Enter = long press, per-tab focus memory, Power off confirm; LVGL -O2 and IRAM, INT-gated keyboard, idle yield, status-bar setter guards, instant tabs; PagerGps (u-blox software standby for rests, GPS rail cut when off), panel sleep, amp off at boot, power-off parks the radio (NSS held), GPS, panel and keyboard light. Fixes: the DM duplicate check keys on the attempt and a path reset clears it, the direct timeout masks the packed path byte, web remote hops (#636); changelog over http (#638); Lua SDK send budgets and duplicate guard (#606); GPS speed note (#613, CAP_GPS_BAUD_AUTO); emoji chat icon (#640); default wallpaper (#626). Heltec V4: Tetris, 2048 and Breakout unseeded and the built-in Lua stripped of comments (identical bytecode), 27 KB freed; the baked language table is pinned to beta_92's files (scripts/build/lang-pin-beta92) so it still fits. Translations: 39 new keys in 14 languages, language store v24. Site: theme, dark mode, aurora and guide refresh, SDK send limits, nicknames. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
113 lines
4.6 KiB
C++
113 lines
4.6 KiB
C++
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#include <assert.h>
|
|
|
|
#include "helpers/input/PagerKeyboardState.h"
|
|
|
|
int main() {
|
|
PagerKeyboardState keyboard;
|
|
|
|
assert(keyboard.event(0, true, 10) == 'q');
|
|
keyboard.event(0, false, 20);
|
|
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 100);
|
|
assert(keyboard.altHeld());
|
|
assert(keyboard.event(0, true, 110) == '1');
|
|
keyboard.event(0, false, 120);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 130);
|
|
assert(keyboard.event(0, true, 140) == 'q');
|
|
keyboard.event(0, false, 150);
|
|
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 200);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 220);
|
|
assert(keyboard.event(1, true, 230) == '2');
|
|
keyboard.event(1, false, 240);
|
|
assert(keyboard.event(1, true, 250) == 'w');
|
|
keyboard.event(1, false, 260);
|
|
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 300);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 320);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 400);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 420);
|
|
assert(keyboard.event(0, true, 430) == '1');
|
|
keyboard.event(0, false, 440);
|
|
assert(keyboard.event(1, true, 450) == '2');
|
|
keyboard.event(1, false, 460);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 470);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 480);
|
|
assert(keyboard.event(0, true, 490) == 'q');
|
|
keyboard.event(0, false, 500);
|
|
|
|
keyboard.event(PagerKeyboardState::SHIFT_POS, true, 510);
|
|
assert(keyboard.event(0, true, 520) == 'Q');
|
|
keyboard.event(0, false, 530);
|
|
keyboard.event(PagerKeyboardState::SHIFT_POS, false, 540);
|
|
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 600);
|
|
keyboard.event(PagerKeyboardState::SHIFT_POS, true, 610);
|
|
assert(keyboard.consumeAltShiftChord());
|
|
assert(!keyboard.consumeAltShiftChord());
|
|
keyboard.toggleCaps();
|
|
keyboard.event(PagerKeyboardState::SHIFT_POS, false, 620);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 630);
|
|
assert(keyboard.event(0, true, 640) == 'Q');
|
|
keyboard.event(0, false, 650);
|
|
keyboard.toggleCaps();
|
|
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 700);
|
|
assert(keyboard.event(PagerKeyboardState::BACKSPACE_POS, true, 710) == 0);
|
|
assert(keyboard.consumeAltBackspaceChord());
|
|
assert(!keyboard.backspaceHeld());
|
|
keyboard.event(PagerKeyboardState::BACKSPACE_POS, false, 720);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 730);
|
|
assert(keyboard.event(0, true, 740) == 'q');
|
|
keyboard.event(0, false, 750);
|
|
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 800);
|
|
keyboard.discardAlt();
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 810);
|
|
assert(keyboard.event(0, true, 820) == 'q');
|
|
keyboard.event(0, false, 830);
|
|
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 900);
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 920);
|
|
keyboard.markAltUsed(); // no effect without a physical hold
|
|
assert(keyboard.event(PagerKeyboardState::SPACE_POS, true, 930) == ' ');
|
|
assert(keyboard.spaceHeld());
|
|
keyboard.event(PagerKeyboardState::SPACE_POS, false, 940);
|
|
assert(!keyboard.spaceHeld());
|
|
assert(keyboard.event(0, true, 950) == 'q');
|
|
keyboard.event(0, false, 960);
|
|
|
|
keyboard.event(PagerKeyboardState::ALT_POS, true, 1000);
|
|
keyboard.markAltUsed(); // physical Alt+encoder equivalent
|
|
keyboard.event(PagerKeyboardState::ALT_POS, false, 1010);
|
|
assert(keyboard.event(0, true, 1020) == 'q');
|
|
keyboard.event(0, false, 1030);
|
|
assert(!keyboard.letterHeld());
|
|
|
|
// Tap or hold (the Home and Settings shortcuts): the letter's key stays held
|
|
// until its own release, whatever else is released meanwhile.
|
|
const uint8_t s_key = PagerKeyboardState::COLS + 1;
|
|
assert(keyboard.event(s_key, true, 1100) == 's');
|
|
assert(keyboard.letterHeld());
|
|
keyboard.event(0, false, 1110);
|
|
assert(keyboard.letterHeld());
|
|
keyboard.event(s_key, false, 1500);
|
|
assert(!keyboard.letterHeld());
|
|
// A later letter takes over: the earlier key's release no longer counts.
|
|
assert(keyboard.event(s_key, true, 1600) == 's');
|
|
assert(keyboard.event(0, true, 1610) == 'q');
|
|
keyboard.event(s_key, false, 1620);
|
|
assert(keyboard.letterHeld());
|
|
keyboard.event(0, false, 1630);
|
|
assert(!keyboard.letterHeld());
|
|
// Space and Backspace keep their own hold state and are not letters.
|
|
assert(keyboard.event(PagerKeyboardState::SPACE_POS, true, 1700) == ' ');
|
|
assert(!keyboard.letterHeld());
|
|
keyboard.event(PagerKeyboardState::SPACE_POS, false, 1710);
|
|
assert(keyboard.event(PagerKeyboardState::BACKSPACE_POS, true, 1720) == '\b');
|
|
assert(!keyboard.letterHeld());
|
|
keyboard.event(PagerKeyboardState::BACKSPACE_POS, false, 1730);
|
|
return 0;
|
|
} |