Ascend Merges Unified Joystick Control for QGroundControl with SDL3 Migration
- Michael Pehel
- 2 days ago
- 2 min read
One of our top engineers, Holden Ramsey, who co-leads the QGroundControl (QGC) Maintainers sub-group, has merged a sweeping refactor of the joystick subsystem into QGC's master branch. The update creates a unified joystick stack for QGC and brings QGC's controller support into the modern era, with unified support for the latest gamepad features and a much cleaner codebase under the hood.
A Unified Joystick Stack

Previously, QGC used SDL2 for joystick support on desktop platforms, but Android required a completely separate JNI-based implementation. That split meant maintaining two codepaths and limited what features could be offered consistently across devices. Ramsey's refactor replaces both with a single SDL3-based backend that works the same way on Windows, Linux, macOS, and Android.

The migration also unlocks support for modern controller features: gyroscope and accelerometer sensors, touchpad and trackball input, LED control (including RGB and player indicator LEDs), rumble and trigger haptics, and battery monitoring. Gamepad type detection now provides type-specific button labels, and mapping management has been overhauled.
Android Gets First-Class Support
On Android, the commit replaces the deprecated custom JoystickAndroid class with SDL's own Java layer, drawing on the SDL Android integration libraries. Input events are now forwarded from QGCActivity directly to SDL, so pilots using a Bluetooth gamepad on a tablet get the same controller experience as those on a desktop.
Better Testing, Better Reliability
The refactor ships with comprehensive unit tests for both the Joystick and JoystickManager classes, backed by a new MockJoystick implementation. All 550 tests pass across the CI pipeline, and all platform builds are completed successfully. For a subsystem that previously had no dedicated test coverage, this is a significant improvement in maintainability.
What Pilots Will Notice
The most visible change is an updated joystick indicator in the QGC toolbar that now shows battery level and connection state. The JoystickManager has also been simplified, replacing the old multi-vehicle joystick mode with a cleaner settings-based approach.
The full commit is available at mavlink/qgroundcontrol@3ac880c. Ramsey continues his work on QGroundControl as part of dedicated hours Ascend commits to open source. We happily contribute to PX4, QGC, and MAVLink and MAVROS.
Looking for QGroundControl customization or PX4 development services?
Ascend Engineering builds custom ground control solutions, autopilot integrations, and drone software for commercial and government clients. Get in touch to discuss your project.




Comments