fix(heltec): joystick press drives Enter, PRG becomes Back

Swaps which physical input plays which role on the Heltec V3/V4 wired
joystick: the stick's own fifth "press" contact now drives Enter (your
thumb's already on the stick when you'd confirm something), and the
onboard PRG button -- previously Enter -- becomes Back instead, so it
no longer needs a separate wired button of its own.

Pure pin reassignment in the solo_dual envs, no UITask.cpp changes:
PIN_USER_BTN (Enter) is undef'd and redefined from the base env's PRG
default to the joystick's press pin, and PIN_BACK_BTN takes PRG's old
GPIO0. Scoped to just these two envs -- Wio Tracker L1/GAT562/MeshTiny
share the same UI_HAS_JOYSTICK code path with PRG already correctly
wired as their one true physical button, so their behaviour is
untouched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
MarekZegare4
2026-08-12 23:36:34 +02:00
co-authored by Claude Sonnet 5
parent e47233f557
commit 3290fa2f57
4 changed files with 38 additions and 23 deletions
+13 -6
View File
@@ -198,10 +198,13 @@ lib_deps =
; Pair it with Settings > Keyboard > Ext. KB = Compact, which is designed to
; need no joystick at all. The same bus is scanned for environment sensors.
;
; * Wired joystick: four direction pins plus a separate Back button -- the UI
; uses Back unconditionally once UI_HAS_JOYSTICK is set, so it isn't optional.
; PIN_USER_BTN (PRG) stays the centre/Enter press. Each contact just shorts
; its pin to GND; target.cpp enables the internal pull-ups. Drop
; * Wired joystick: four direction pins plus a fifth "press" contact. The
; press contact drives Enter (your thumb's already on the stick) via
; PIN_USER_BTN -- overridden below (-U/-D) from the PRG-button default
; the base env sets, since PRG's GPIO0 can't be moved to the stick. PRG
; becomes Back instead (PIN_BACK_BTN), so it no longer needs its own
; separately-wired button. Each contact just shorts its pin to GND;
; target.cpp enables the internal pull-ups. Drop
; UI_HAS_JOYSTICK_UPDOWN for a left/right-only stick. JOYSTICK_ROTATION (0-3)
; rotates the mapping if the stick is mounted sideways -- it's also a runtime
; setting, so leave it out unless you want a different default.
@@ -237,14 +240,18 @@ build_flags =
; CardKB on the second I2C bus. Harmless with nothing plugged in.
-D ENV_PIN_SDA=3
-D ENV_PIN_SCL=4
; Wired joystick — comment the block out for a CardKB-only build.
; Wired joystick — comment the block out for a CardKB-only build. The
; press contact (Enter) overrides PIN_USER_BTN from its PRG default;
; PRG becomes Back (PIN_BACK_BTN) instead.
-D UI_HAS_JOYSTICK=1
-D UI_HAS_JOYSTICK_UPDOWN=1
-D JOYSTICK_UP=23
-D JOYSTICK_DOWN=6
-D JOYSTICK_LEFT=47
-D JOYSTICK_RIGHT=48
-D PIN_BACK_BTN=33
-D PIN_BACK_BTN=0 ; PRG button
-U PIN_USER_BTN
-D PIN_USER_BTN=33 ; joystick press contact -- Enter
; -D PIN_BUZZER=<gpio>
build_src_filter = ${Heltec_lora32_v3.build_src_filter}
+<helpers/ui/SSD1306Display.cpp>
+13 -6
View File
@@ -247,10 +247,13 @@ lib_deps =
; SCL 4, one says the reverse. 3/4 is the pair either way; swap them if the
; keyboard doesn't answer.)
;
; * Wired joystick: four direction pins plus a separate Back button -- the UI
; uses Back unconditionally once UI_HAS_JOYSTICK is set, so it isn't optional.
; PIN_USER_BTN (PRG) stays the centre/Enter press. Each contact just shorts
; its pin to GND; target.cpp enables the internal pull-ups. Drop
; * Wired joystick: four direction pins plus a fifth "press" contact. The
; press contact drives Enter (your thumb's already on the stick) via
; PIN_USER_BTN -- overridden below (-U/-D) from the PRG-button default
; the base env sets, since PRG's GPIO0 can't be moved to the stick. PRG
; becomes Back instead (PIN_BACK_BTN), so it no longer needs its own
; separately-wired button. Each contact just shorts its pin to GND;
; target.cpp enables the internal pull-ups. Drop
; UI_HAS_JOYSTICK_UPDOWN for a left/right-only stick. JOYSTICK_ROTATION (0-3)
; rotates the mapping if the stick is mounted sideways -- it's also a runtime
; setting, so leave it out unless you want a different default.
@@ -287,14 +290,18 @@ build_flags =
; CardKB on the second I2C bus. Harmless with nothing plugged in.
-D ENV_PIN_SDA=3
-D ENV_PIN_SCL=4
; Wired joystick — comment the block out for a CardKB-only build.
; Wired joystick — comment the block out for a CardKB-only build. The
; press contact (Enter) overrides PIN_USER_BTN from its PRG default;
; PRG becomes Back (PIN_BACK_BTN) instead.
-D UI_HAS_JOYSTICK=1
-D UI_HAS_JOYSTICK_UPDOWN=1
-D JOYSTICK_UP=23
-D JOYSTICK_DOWN=6
-D JOYSTICK_LEFT=47
-D JOYSTICK_RIGHT=48
-D PIN_BACK_BTN=33
-D PIN_BACK_BTN=0 ; PRG button
-U PIN_USER_BTN
-D PIN_USER_BTN=33 ; joystick press contact -- Enter
; -D PIN_BUZZER=<gpio>
build_src_filter = ${heltec_v4_oled.build_src_filter}
+<helpers/ui/SSD1306Display.cpp>