Skip to content

Navigate the UI with the controller: L1 shortcuts, modal buttons, Shortcuts tab - #275

Open
mathiasm74 wants to merge 8 commits into
dualshock-tools:mainfrom
mathiasm74:feature/controller-shortcuts
Open

mathiasm74 wants to merge 8 commits into
dualshock-tools:mainfrom
mathiasm74:feature/controller-shortcuts

Conversation

@mathiasm74

@mathiasm74 mathiasm74 commented Aug 29, 2026

Copy link
Copy Markdown
Collaborator

What the PR changes

Lets the controller itself drive the UI, so a stick swap or calibration session doesn't need constant trips back to the mouse:

  • L1 combos on the Calibration tab: L1+square / L1+circle step through the stick display modes (10x zoom, circularity check; stepping onto circularity again clears the sampled data), L1+triangle runs the calibration dialogs in sequence (center → range → finetune, skipping what the model doesn't support), and L1+cross saves pending changes.
  • Buttons work inside the modals too: cross starts/continues center calibration, square switches to quick calibrate, circle cancels (only when the matching on-screen button is available, so a running calibration still can't be interrupted); cross clicks Done in range calibration once it unlocks; circle can stop the sequence between steps; cross closes the Quick Test modal when no test is active. Modals swallow controller input while open so presses don't leak into the page behind them.
  • A new Shortcuts tab documents all of it (pinned to the right of the tab bar). It is hidden for VR2 Sense controllers, where the combos are also disabled — a left Sense controller carries L1 together with square and triangle, so they would misfire during normal use.
  • The Debug tab is now hidden by default — it opens after 10 clicks on the empty area right of the tabs. It only holds developer info, and hiding it makes room for the new tab on narrow screens.

mathiasm74 and others added 8 commits August 29, 2026 18:45
New L1 combos on the Calibration tab:
- L1+square / L1+circle step through the display modes (Normal,
  10x zoom, Check circularity) with no wrap-around; L1+circle while
  already on Check circularity clears the sampled data
- L1+triangle runs the calibration dialogs in sequence: stick center,
  range, then finetune (skipped where unsupported), stopping if a
  step is cancelled
- L1+cross saves pending changes, only when there are changes to
  write (mirrors the Save button's enabled state)

The three calibration launchers are refactored into chainable
runCenterCalibration/runRangeCalibration/runFinetune helpers shared
by the buttons and the sequence.

A new Shortcuts tab lists all L1 combos, using the PS button glyphs
from icons.svg. New strings pending translation in lang/*.json.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 91c2ea2)
Pinned flush right with ms-auto, separating the reference tab from
the work tabs. The Debug unlock click area and the VR2 tab hiding
are unaffected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit e829c10)
Cross, square and circle now work in the modals themselves:
- Center calibration: cross starts/continues, square switches to quick
  calibrate, circle cancels - each only when the matching button is
  available, so calibration still can't be canceled mid-run.
- Range calibration: cross clicks Done once it unlocks. The modal now
  consumes all controller input while open, so button presses no longer
  leak to the tab underneath.
- Informational modals (popup, FAQ, donate, Edge notice, welcome):
  cross or circle dismisses; welcome records its acceptance as a click
  on Understood would.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit b95ab98)
The sampling itself cannot be interrupted, but pressing circle while the
auto center calibration modal is up now stops an L1+triangle sequence
from chaining into range calibration. The modal also swallows controller
input while visible, like the other calibration modals.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 30e9960)
Cross still means Fail during a test; in the idle states (before
starting, after the last test) it now mirrors circle and closes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 01e1987)
A left Sense controller carries L1 together with square and triangle,
so L1+triangle would start the calibration sequence during normal use.
Gate the combos off for VR2 and hide the Shortcuts tab via a new
showShortcutsTab UI flag.

Extracted from d69633e.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DVo2fLzyxnPEJWordoQxwZ
Generated with scripts/process_lang.py --auto.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DVo2fLzyxnPEJWordoQxwZ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant