Voice dictation fix for Moonlight Android — the original open-source GameStream client.
Stock Moonlight drops all text from Android IME commitText() calls. This means voice dictation, swipe typing, and autocomplete through Gboard (or any soft keyboard) silently fail — the text never reaches the Windows host.
This fork adds a custom InputConnection that intercepts those IME events and routes them to the remote host via the existing NvConnection.sendUtf8Text() protocol path.
| Input Method | Stock Moonlight | Moonlight Voice |
|---|---|---|
| Hardware keyboard | Works | Works |
| Gboard tap typing | Works | Works |
| Gboard voice dictation | Broken | Fixed |
| Gboard swipe typing | Broken | Fixed |
| Autocomplete suggestions | Broken | Fixed |
- APK (Debug) — installs alongside stock Moonlight
Only 3 files changed (117 lines added):
StreamInputConnection.java(new) — CustomBaseInputConnectionthat routescommitText()→NvConnection.sendUtf8Text()StreamView.java— OverrideonCreateInputConnection()to returnStreamInputConnectionGame.java— PassNvConnectionreference toStreamView
Application ID changed to com.mncompute.artemis so it installs alongside stock Moonlight.
- artemis-voice — Same voice fix applied to Artemis Android (feature-rich Moonlight fork with custom buttons, portrait mode, etc.)
- Upstream issue: moonlight-stream/moonlight-android#1496
- Upstream PR: moonlight-stream/moonlight-android#1556
git clone --recurse-submodules https://github.com/AFK-Automations/moonlight-voice.git
cd moonlight-voice
# Create local.properties with sdk.dir and ndk.dir paths
./gradlew assembleNonRootDebug- Moonlight by Cameron Gutman et al.
- Voice dictation fix by Jon Gutierrez / MN Compute
GPL-3.0-or-later (same as upstream)