Skip to content

Android: keyboard play without the on-screen keyboard, two crash fixes, debug switches - #617

Merged
peiikai merged 5 commits into
beta_6from
android-keyboard
Nov 7, 2026
Merged

peiikai merged 5 commits into
beta_6from
android-keyboard

Conversation

@peiikai

@peiikai peiikai commented Nov 7, 2026

Copy link
Copy Markdown
Owner

Follow-up to #614, from play-testing the Android build in the emulator. Desktop builds are unchanged; everything here is Android only except one rename.

  • No on-screen keyboard when the menu opens. The menu turns text input on while it is open, so its fields take typing. On Android that also brings up the on-screen keyboard, which covers half the screen and takes the hardware keyboard's keys. There, text input is now on only while something takes text: a focused text field in the menu, or the game's name entry.
  • No crash going into the game. That check asked ImGui for its IO between the start screen and the game, when there is no ImGui context, and aborted. It now asks only while there is one.
  • No crash at a start sent to the background. A surface lost while the swapchain was being made stopped the app with a FATAL. The surface is now made again there too, as during play, or the swapchain waits for the window to come back.
  • Debug switches on Android. The activity copies any LARECOMP_* extra of its launch into the environment, e.g. adb shell am start -n com.lasrecomp.android/com.lasrecomp.LASRecompActivity --es LARECOMP_LOG_SKIPS 1.
  • docs/android.md covers the switches, and why the emulator can't draw the game world: its Vulkan goes through gfxstream and MoltenVK, whose shader translation to Metal fails ("call to 'fmin' is ambiguous"). A phone's GPU compiles the shaders directly.

Tested on the arm64 Android 15 emulator:

  • keyboard play works, and F1 opens the menu without the on-screen keyboard
  • Play goes into the game with no crash (Marin and Tarin's house, 60 fps, saves work)

The Mac build compiles.

🤖 Generated with Claude Code

peiikai and others added 5 commits November 7, 2026 16:58
The menu turns text input on whenever it is open (typing into its fields).
On Android that also brings up the on-screen keyboard, which covers half the
screen and takes the hardware keyboard's keys. There, text input is now on
only while something takes text: a focused text field in the menu, or the
game's own name entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…kground

- menu.mm: the on-screen keyboard check asked ImGui for its IO between the
  start screen and the game, when there is no ImGui context (an abort in
  ImGui::GetIO); asked only while there is one.
- device.c: a surface lost while the swapchain is made (the app sent to the
  background at start) stopped the app (FATAL in
  vkGetPhysicalDeviceSurfaceCapabilitiesKHR); the surface is made again
  there too, or the swapchain waits until the window is back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was no way to set the debug and test switches (docs/debug-hooks.md)
on Android. The activity now copies any LARECOMP_* extra of its launch into
the environment, e.g.
  adb shell am start -n com.lasrecomp.android/com.lasrecomp.LASRecompActivity --es LARECOMP_LOG_SKIPS 1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@peiikai
peiikai merged commit d576216 into beta_6 Nov 7, 2026
6 checks passed
@peiikai
peiikai deleted the android-keyboard branch November 7, 2026 23:32
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