Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR redesigns controller and virtual-control input around a strict HOST/GUEST boundary while preserving the existing universal MIDlet key mapping.
KeyMapper/ProfileModel.keyMappings; keyboard, phone keys and gamepad buttons share one many-to-one mapping model.0–9,*,#, directions, FIRE, Soft Left/Right, GAME A–D, andMfor the runtime MIDlet menu.Mopens the runtime menu through the same KeyMapper contract, while Android Back preserves its established Activity/Back behavior.7/2/9,4/6,1/8/3Virtual-control follow-up
L/Ras the upper-right pair and*/0directly below them, centerFbetween those two rows, and align the D-pad/analog center horizontally withF.Automated coverage
Relevant coverage includes
ControllerLifecycleGateTest,ControllerInputRouterTest,KeyOwnershipLedgerTest,ControllerHostOwnershipLedgerTest,StickProcessorTest,VirtualDpadTest,VirtualAnalogStickTest,VirtualAnalogDirectionAdapterTest,LegacyVirtualKeypadRepeatTest, pointer tests,GameCanvasKeyStateTest,ControllerConfigTest, profile persistence tests, andStandardVirtualControlsLayoutTest.StandardVirtualControlsLayoutTestcovers the screenshot-like wide case (1820×864 with centered MIDlet side gutters), the portrait bottom-deck case, and full-screen fallback bounds.Android instrumentation includes
KeyMapperMappingRulesTest, runtime-menu virtual-control interaction coverage inRuntimeMenuComposeTest, andGamepadInputPreferencesComposeTestfor offline analog selection, controller-gated calibration, and preservation of the legacy template order.Android CI run 1486 completed successfully on head
08dbb56a2aefed8f07ae299fba387abd58f95132. Lint, JVM tests, APK assembly, CI diagnostics, and arm64 emulator debug APK upload all passed.Hardware validation still needed
No physical gamepad is available in the development environment, so this PR does not claim universal hardware certification. A physical smoke matrix is still recommended before release: common buttons/D-pad, remapped
M, all three analog direction modes, reconnect/focus loss, modal isolation, grouped touch-control persistence, template selection, portrait/landscape viewport-aware template reflow, calibration availability, and pointer modes.Implementation details and the current test/hardware boundary are documented in
docs/gamepad-implementation-status.md.