// the find
AkiChase/scrcpy-mask
A Scrcpy client in Rust, Bevy and React, aimed at providing mouse and key mapping to control Android device, similar to a game emulator
A desktop client for scrcpy that adds game-emulator-style key and mouse mapping on top of Android screen mirroring. Built on Bevy (the game engine) for the input/rendering layer and React for the configuration UI, which is an unusual but functional split. The target audience is people who want to play mobile games on a PC with keyboard/mouse controls without rooting the device.
The Bevy migration in v0.7 is a solid architectural call — using a game engine for something that needs frame-accurate input handling and custom rendering (YUV shader in assets/shaders/yuv_video.wgsl) makes more sense than fighting a general-purpose UI framework. The mapping system is genuinely thorough: direction pads, FPS fire modes, cast-spell controls, multi-tap, and randomized touch offsets to avoid pattern detection are all first-class features, not afterthoughts. External control via HTTP API and WebSocket is a nice escape hatch for automation. The custom scrcpy-mask-server fork shows the author understands the protocol well enough to extend it rather than just wrapping it.
Documentation is explicitly listed as a missing checkbox in the README, which tracks — the scripting system (scripts-help.md) and build process (build-help.md) are documented, but there's no explanation of the overall architecture or how Bevy and React actually communicate. The tech stack is a maintenance liability: Rust + Bevy + React + a forked server binary means four things to keep in sync, and Bevy's own API stability between minor versions is notoriously disruptive. Game controller support is gated behind sponsorship, which is a reasonable personal project boundary but limits adoption for anyone who wanted a full emulator replacement. The original Tauri+Vue branch being abandoned without migration guidance leaves early adopters stranded.