{"id":32048753,"url":"https://github.com/ivan-ayub97/lazyds4","last_synced_at":"2026-07-15T02:33:18.876Z","repository":{"id":307411392,"uuid":"1029329557","full_name":"Ivan-Ayub97/LazyDS4","owner":"Ivan-Ayub97","description":"A controller mapping designed to convert a DualShock 4 to a virtual Xbox 360 controller. ","archived":false,"fork":false,"pushed_at":"2025-10-13T17:53:06.000Z","size":16716,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-18T23:58:23.013Z","etag":null,"topics":["controller","ds4","ds4-controller","ds4windows","dualshock4","game-controller","native-controls","pyqt5","python","vigembus","xinput","xinput-calibrator","xinput-controller","xinput-emulator"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ivan-Ayub97.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-30T22:00:31.000Z","updated_at":"2025-10-13T17:53:09.000Z","dependencies_parsed_at":"2025-07-31T05:48:05.648Z","dependency_job_id":null,"html_url":"https://github.com/Ivan-Ayub97/LazyDS4","commit_stats":null,"previous_names":["ivan-ayub97/lazyds4"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Ivan-Ayub97/LazyDS4","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Ayub97%2FLazyDS4","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Ayub97%2FLazyDS4/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Ayub97%2FLazyDS4/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Ayub97%2FLazyDS4/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ivan-Ayub97","download_url":"https://codeload.github.com/Ivan-Ayub97/LazyDS4/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Ayub97%2FLazyDS4/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35488230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["controller","ds4","ds4-controller","ds4windows","dualshock4","game-controller","native-controls","pyqt5","python","vigembus","xinput","xinput-calibrator","xinput-controller","xinput-emulator"],"created_at":"2025-10-18T01:11:08.336Z","updated_at":"2026-07-15T02:33:18.866Z","avatar_url":"https://github.com/Ivan-Ayub97.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![LazyDS4 Banner](rsc/banner.png)\n\n\u003cdiv align=\"center\"\u003e\n\n### _Direct DualShock 4 to XInput Mapper for Windows_\n\n[![Build Status](https://img.shields.io/badge/build-Stable-blue?style=for-the-badge)](#)\n[![Version](https://img.shields.io/badge/Version-v2.1.0-darkred?style=for-the-badge)](#)\n[![License](https://img.shields.io/badge/License-MIT-purple?style=for-the-badge)](LICENSE)\n[![Downloads](https://img.shields.io/github/downloads/Ivan-Ayub97/LazyDS4/total?style=for-the-badge\u0026color=gold)](https://github.com/Ivan-Ayub97/LazyDS4/releases)\n[![Last Commit](https://img.shields.io/github/last-commit/Ivan-Ayub97/LazyDS4?style=for-the-badge\u0026color=2E8B57\u0026logo=git\u0026logoColor=white)](https://github.com/Ivan-Ayub97/LazyDS4/commits/main)\n[![Platform](https://img.shields.io/badge/Platform-Windows-0078D6?style=for-the-badge\u0026logo=windows\u0026logoColor=white)](#)\n[![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge\u0026logo=python\u0026logoColor=FFD700)](https://www.python.org/)\n[![Issues](https://img.shields.io/github/issues/Ivan-Ayub97/LazyDS4?style=for-the-badge\u0026color=FF4500\u0026logo=github\u0026logoColor=white)](https://github.com/Ivan-Ayub97/LazyDS4/issues)\n\n_\"Transform your DualShock 4 into a native Xbox 360 controller\"_\n\n**LazyDS4** is a controller mapping application designed to convert HID input from a DualShock 4 controller directly to a virtual Xbox 360 controller. Optimized for simplicity and performance, it offers real-time input mapping with a ~1ms (1000Hz) polling rate, modern graphical interface with PyQt5, intelligent drift detection, and enhanced joystick calibration with adaptive algorithms.\n\n---\n\n## 🚀 Download and Installation\n\nGet the latest stable release from any of the following platforms:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\n      \u003ca href=\"https://sourceforge.net/p/lazyds4/\"\u003e\n        \u003cimg alt=\"Download LazyDS4\" src=\"https://sourceforge.net/sflogo.php?type=18\u0026amp;group_id=3898336\" width=200\u003e\u003c/a\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"33%\"\u003e\n      \u003ca href=\"https://github.com/Ivan-Ayub97/LazyDS4/releases/download/v2.1.0/LazyDS42.1.0Setup.zip\"\u003e\n        \u003cimg src=\"rsc/GitHub_Lockup_Light.png\" alt=\"Download from GitHub\" width=\"200\" /\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### Quick Installation\n\n1. Download the installer `LazyDS4-2.1.0-Installer.exe`\n2. Run as administrator (required for ViGEmBus)\n3. Installer will automatically setup ViGEmBus driver\n4. Launch LazyDS4 from start menu or shortcut\n\n---\n\n## 🖼️ Interface Preview\n\n### 💻 Main View\n\n![LazyDS4](rsc/lazyds4.gif)\n\n- **Controller Tab**: Interactive DS4 visualization with real-time status\n- **Battery Monitor**: Visual indicator with level, charging state, and alerts\n- **Controls**: Start/Stop buttons, Bluetooth Pairing, Calibrate\n\n### 🧪 Other Views\n\n- **Log Tab**: Detailed event and error logging\n\n![Screenshot](rsc/Capture2.png)\n\n- **Info Tab**: Developer information, button mapping, and utilities\n\n![Screenshot](rsc/Capture3.png)\n\n- **Calibration Dialog**: Interactive tool to adjust joysticks\n\n![Screenshot](rsc/Capture4.gif)\n\n---\n\n## ✨ Key Features\n\n- ✅ **Direct HID to XInput Mapping** — Optimized real-time translation\n- ✅ **USB and Bluetooth Connection** — Complete support for DS4 v1 and v2\n- ✅ **1000Hz Polling Rate** — Ultra-fast response of ~1ms\n- 🎯 **Smart Drift Detection** — Automatic detection with visual alerts and severity analysis\n- 🎨 **Modern Interface** with dark theme design and visual effects\n- 🔋 **Battery Monitor** with low battery alerts and charging status\n- 🎯 **Enhanced Joystick Calibration** with adaptive deadzone and drift correction\n- 🔧 **Automatic ViGEmBus Installation** and driver management\n- 📱 **Integrated Bluetooth Pairing Assistant**\n- 🎮 **Interactive Controller Visualization** in real-time\n\n---\n\n## 📌 What's New (v2.1.0)\n\n- 🎨 **Visual Overhaul** — Modern, professional interface with gradient backgrounds and advanced styling\n- 📐 **Layout Optimization** — Improved spacing, alignment, and responsiveness\n- 🎉 **Icon Integration** — Consistent use of dynamic SVG icons throughout\n- ⚡ **Enhanced Button Design** — Polished buttons with smooth animations and clear actions\n- 📊 **Responsive Interface** — Adapted for various screen sizes without overlaps\n- 🔔 **Real-time Visual Indicators** — Clear and immediate feedback for status, warnings, and battery levels\n\n---\n\n## ⚙️ How to Use\n\n1. **Connect your DualShock 4** via USB or Bluetooth\n2. **Open LazyDS4** as administrator (recommended)\n3. **Press \"▶ Start Service\"** to start mapping\n4. **Configure as needed**:\n   - Calibrate joysticks if drift occurs\n   - Pair new Bluetooth controllers\n   - Monitor battery and connection status\n5. **Enjoy Playing!** Your DS4 now works as an Xbox 360 controller\n\n---\n\n## 📊 Button Mapping\n\n| **DualShock 4** | **Xbox 360** | **Function**  |\n| --------------- | ------------ | ------------- |\n| ✕ (Cross)       | A            | Confirm       |\n| ● (Circle)      | B            | Cancel        |\n| ■ (Square)      | X            | Action        |\n| ▲ (Triangle)    | Y            | Action        |\n| L1              | LB           | Left Bumper   |\n| R1              | RB           | Right Bumper  |\n| L2              | LT           | Left Trigger  |\n| R2              | RT           | Right Trigger |\n| Share           | Back         | Menu          |\n| Options         | Start        | Pause         |\n| PS Button       | Guide        | Xbox Home     |\n\n---\n\n## 💾 Project Structure\n\n\u003c/div\u003e\n\n```\nLazyDS4/\n├── assets/                    # Resources (icons, ViGEmBus installer)\n├── core/                      # Main controller logic\n│   ├── ds4_controller.py      # DualShock 4 handling\n│   └── vigem_controller.py    # ViGEm virtual controller\n├── ui/                        # PyQt5 graphical interface\n│   ├── main_window.py         # Main window\n│   ├── battery_widget.py      # Battery widget\n│   ├── interactive_controller.py # Controller visualization\n│   └── calibration_dialog.py  # Calibration dialog\n├── utils/                     # System utilities\n│   ├── input_translator.py    # HID to XInput translator\n│   ├── vigem_setup.py         # ViGEmBus installer\n│   └── bluetooth_manager.py   # Bluetooth manager\n├── LazyDS4.py                 # Main file\n├── build.py                   # Build script\n├── Setup.iss                  # Inno Setup script\n└── requirements.txt           # Python dependencies\n```\n\n\u003cdiv align=\"center\"\u003e\n\n---\n\n## 📋 System Requirements\n\n- **OS:** Windows 10/11 (x64/x86/ARM64)\n- **RAM:** Minimum 2GB (4GB recommended)\n- **Controller:** DualShock 4 v1 or v2 (CUH-ZCT1/ZCT2)\n- **Connection:** USB or Bluetooth 4.0+\n- **Privileges:** Administrator (for ViGEmBus)\n- **Dependencies:** ViGEmBus driver (installed automatically)\n\n---\n\n## 📦 Technologies Used\n\n| Technology   | License      | Author/Maintenance           | Link                                                     |\n| ------------ | ------------ | ---------------------------- | -------------------------------------------------------- |\n| Python 3.10+ | PSF License  | Python Software Foundation   | [python.org](https://python.org)                         |\n| PyQt5        | GPL v3       | Riverbank Computing          | [riverbankcomputing.com](https://riverbankcomputing.com) |\n| hidapi       | BSD-3-Clause | Alan Ott, Signal 11 Software | [GitHub](https://github.com/libusb/hidapi)               |\n| vgamepad     | MIT License  | Yann Bouteiller              | [GitHub](https://github.com/yannbouteiller/vgamepad)     |\n| ViGEmBus     | MIT License  | ViGEm Project                | [GitHub](https://github.com/ViGEm/ViGEmBus)              |\n| PyInstaller  | GPL-2.0+     | PyInstaller Development Team | [pyinstaller.org](https://pyinstaller.org)               |\n| Inno Setup   | Inno License | Jordan Russell               | [jrsoftware.org](https://jrsoftware.org)                 |\n\n---\n\n## 🧑‍💻 Contributing\n\nContributions are welcome!\n\n1. Fork the project\n2. Create a branch for your improvement (`git checkout -b feature/new-feature`)\n3. Make your changes and commit them (`git commit -am 'Add new feature'`)\n4. Push to the branch (`git push origin feature/new-feature`)\n5. Open a Pull Request with details\n\nFor bug reports or suggestions: **GitHub Issues** or contact the developer\n\n---\n\n## 📜 License\n\n© 2025 Iván Eduardo Chavez Ayub (@Ivan-Ayub97)\nDistributed under the MIT License. See `LICENSE` for more details.\n\n---\n\n## 🔧 Development and Compilation\n\n### For Developers\n\n```bash\n       # Clone repository\n       git clone https://github.com/Ivan-Ayub97/LazyDS4.git\n       cd LazyDS4\n\n       # Install dependencies\n       pip install -r requirements.txt\n\n       # Run in development mode\n       python LazyDS4.py\n\n       # Build executable\n       python build.py\n```\n\n### Included Scripts\n\n- **`build.py`**: Automated build with PyInstaller\n- **`Setup.iss`**: Installer creation with Inno Setup\n- **`LazyDS4.spec`**: Advanced PyInstaller configuration\n\n---\n\n**Built by the lazy, for the lazy.**\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-ayub97%2Flazyds4","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivan-ayub97%2Flazyds4","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-ayub97%2Flazyds4/lists"}