Skip to content

Latest commit

 

History

History
67 lines (44 loc) · 1.97 KB

File metadata and controls

67 lines (44 loc) · 1.97 KB

linux-joystick

linux-joystick is a Linux C++ server that:

  1. Creates a virtual gamepad with /dev/uinput.
  2. Receives controller state over UDP.
  3. Applies that state to the virtual gamepad.
  4. Exposes a UDP discovery endpoint so clients can find the server.

The executable built by this repo is virtual_remote_server.

Virtual Linux Remote 🎮

System Architecture

System Architecture

Server Initialization & Runtime Flow

Server Initialization and Runtime Flow

Discovery Protocol

Discovery Protocol

Demo Screenshots

Demo Screenshot 1 Demo Screenshot 2 Demo Screenshot 3 Demo Screenshot 4 Demo Screenshot 5 Demo Screenshot 6

Key Features

  • 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.

Project Layout

  • 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: builds virtual_remote_server with C++17.

Build

cmake -S . -B build
cmake --build build

Run

sudo ./build/virtual_remote_server

sudo (or equivalent permissions) is usually required for /dev/uinput.

Runtime Output

On successful start, the server prints its control and discovery ports and then waits for controller traffic.