Linux Joypad Generic Manager
Turn almost any controller into a clean virtual gamepad + optional mouse mode, with mapping and vibration control.
- Modern PyQt6 desktop app with tabbed control center
- Smart controller detection (auto + explicit selection)
- Analog and digital mapping profiles
- Virtual gamepad output through
uinput - Optional mouse mode (left stick pointer + mapped clicks)
- Vibration testing with intensity/duration controls
- Desktop launcher support (
.desktop) with icon - Debian package build script included
.
├── main.py # Main GUI app logic
├── gui_app.py # Lightweight launcher
├── core/ # Input, mapping, virtual pad, vibration
├── gui/ # Mapping wizard
├── config/profile.json # Saved mapping profile
├── assets/ # Icon/image assets
├── packaging/ # Desktop + .deb build files
├── install.sh # One-command setup
└── requirements.txt # Python dependencies
chmod +x install.sh
./install.shThis installs:
- system dependencies (
python3,PyQt6,evdev,uinput, build libs) uinputmodule auto-load on boot- Python virtual environment and packages
- desktop launcher and icon for the current user
.venv/bin/python gui_app.pyor launch from your desktop app menu (LJGM).
chmod +x packaging/build_deb.sh
./packaging/build_deb.shOutput will be created under:
dist/ljgm_<version>_amd64.deb
sudo apt install ./ljgm_1.0.0_amd64.deb- App uses Linux input devices and usually needs proper
uinputpermissions. - If your controller is not detected, reconnect it and use Refresh Controllers.
- Mapping is stored in
config/profile.json.
linux, gamepad, joystick, controller, input-remapper, uinput, evdev, pyqt6, virtual-gamepad, desktop-app, debian, ubuntu, gaming, accessibility, open-source
Suggested GitHub Topics:
linux-gamepad, joystick-mapper, input-remapper, uinput, evdev, pyqt6, debian-package
MIT (LICENSE)
