linux-joystick is a Linux C++ server that:
- Creates a virtual gamepad with
/dev/uinput. - Receives controller state over UDP.
- Applies that state to the virtual gamepad.
- Exposes a UDP discovery endpoint so clients can find the server.
The executable built by this repo is virtual_remote_server.
This project includes a graphical user interface built with Qt. Screenshot:
Download the AppImage release in the dist/ folder: dist/GamePad-x86_64.AppImage
- Binary UDP controller input on
9000/udp. - UDP discovery service on
9002/udp. - Virtual gamepad output via
/dev/uinput. - Sender pair-lock with timeout-based unlock.
- Input watchdog that falls back to neutral state on silence.
src/: runtime implementation (server_main, controller engine, UDP receiver, discovery service, virtual gamepad).include/: protocol, mapping, and public headers used by the server sources.docs/demo/: architecture diagrams and demo screenshots.CMakeLists.txt: buildsvirtual_remote_serverwith C++17.
cmake -S . -B build
cmake --build buildsudo ./build/virtual_remote_serversudo (or equivalent permissions) is usually required for /dev/uinput.
On successful start, the server prints its control and discovery ports and then waits for controller traffic.
- Prebuilt AppImage: dist/GamePad-x86_64.AppImage
- Make executable and run:
chmod +x dist/GamePad-x86_64.AppImage
./dist/GamePad-x86_64.AppImage- Checksums and artifacts are in the
dist/folder (see dist/README.md).









