feat: add Android support#49
Open
Farori wants to merge 2 commits into
Open
Conversation
Add support for IME composition input (Chinese, Japanese, Korean, etc.): - Add TextInputImeState component to track preedit composition state - Add ImePreedit and ImeCommit action types - Add ime_focus_system to enable/disable IME and position candidate box - Add ime_event_system to route Bevy Ime messages to text inputs - Add ime_cleanup_on_unfocus_system to cancel preedit on focus loss - Suppress keyboard input during IME composition to prevent double input - Render preedit underline beneath composing text (color follows TextColor by default, configurable via TextInputStyle) - Use selection-based preedit removal for robustness
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.
Overview
Adds Android platform support for text input, as a workaround until
winit provides proper virtual keyboard support upstream.
What changed and why
Clipboard:
arboarddoes not support Android, so it is now excludedfrom Android targets. Clipboard operations return
ClipboardNotSupportedon Android — copy/paste is not available for now.
Virtual keyboard input: Since winit currently does not expose virtual
keyboard events on Android (even though bevy_winit has some internal
handling, it still relies on winit), text input is wired directly to
android-activitywith thegame-activitybackend.Duplicate input signals: Virtual keyboard on Android can produce
duplicate input events.
enqueue_text_diffis used to suppress most ofthese. In rare cases a duplicate may still slip through — since this is a
temporary workaround until winit gains proper Android support, it was not
investigated further. Should be sufficient for practical use.
Opening the virtual keyboard on tap:
on_text_input_pressed_androidobserver is registered for each text input entity. This handles the case
where a field is already focused — in that situation the normal
focus-change mechanism does not trigger the keyboard to open, so it needs
to be handled separately.