fix(emulator): make the native macOS runtime usable - #129
Open
UrbanLeopard wants to merge 2 commits into
Open
Conversation
Author
UrbanLeopard
marked this pull request as ready for review
July 25, 2026 19:31
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
Root cause
The macOS target did not compile the native cp0 SDL runtime and instead depended
on a basic LVGL keyboard path. Enabling the runtime exposed Linux-only input
headers, POSIX API differences, a duplicate LVGL keyboard symbol, and lifecycle
assumptions that do not hold on Darwin.
Two additional input issues remained after the runtime built:
the emulator scaled those coordinates a second time, causing clicks to miss
the skin hitboxes.
after APPLaunch was loaded dynamically, so input activity never reached the
active APPLaunch screensaver.
User impact
The native macOS emulator now starts with the same cp0 runtime used by the
desktop build, supports the APPLaunch CLI PTY, accepts physical and on-screen
keyboard input, wakes correctly from the screensaver, and presents the 320×170
LCD at a readable 640×340 default size.
The first click or key press that wakes the screensaver is consumed so it does
not also activate an underlying control.
Validation
ctest --test-dir <clean-build> --output-on-failure— 2/2 passedsh ext_components/cp0_lvgl/tests/run_tests.sh— passedclean directory and ran the same headless smoke command used by CI — passed
screensaver wake behavior, and the readable resizable display on macOS
git diff --check— passedTest-suite note
projects/APPLaunch/tests/run_tests.shbegins successfully on macOS but reachesan existing GNU/BSD
base64command-line incompatibility intest_cardputer_adb.sh. This PR does not change the ADB packaging test harness;the emulator-specific integration coverage and the cp0 component suite pass.