Giter Site home page Giter Site logo

hartl3y94 / dshidmini Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nefarius/dshidmini

0.0 0.0 0.0 1.68 MB

Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers

Home Page: https://vigem.org/projects/DsHidMini/

License: BSD 3-Clause "New" or "Revised" License

C 79.40% Batchfile 0.03% PowerShell 1.39% Shell 0.38% C# 15.95% C++ 2.85%

dshidmini's Introduction

DsHidMini

Virtual HID Mini-user-mode driver for Sony DualShock 3 Controllers

Build status GitHub All Releases GitHub issues Discord Website

Summary

DsHidMini is a self-contained, low footprint and feature-rich user-mode driver for Microsoft Windows 10/11. It presents the controller as a configurable variety of fully standard-compliant HID devices to the system and all games built on common APIs like DirectInput, Raw Input and the low-level HID API. XInput-emulation further increases the support in modern games built with only Xbox controllers in mind. The driver supports both wired connections by handling USB communication and wireless connections by building upon the BthPS3 driver suite. An optional .NET configuration tool is provided to alter driver behavior to fine-tune it to specific games or other use-cases.

Features

  • Bluetooth support if used in conjunction with BthPS3 (requires at least v2.0.144 or newer)
  • Automatically pairs the controller to Windows Bluetooth (if Bluetooth host radio is present)
  • Multiple configurable HID Report Descriptors for wide range of compatibility
    • Single Gamepad device exposing all controls including pressure sensitive buttons
    • Split/multi device emulation to overcome DirectInput axis limits
    • Sony sixaxis.sys emulation (both wired and wireless)
    • DualShock 4 emulation for compatibility with DS4Windows
    • Xbox Controller emulation (XInput) for best compatibility with most modern games
  • Quick disconnect (on Bluetooth) by pressing L1 + R1 + PS together for over one second
  • Automatic disconnect (on Bluetooth) after idle timeout (5 minutes) expired to conserve battery
  • Custom LED states indicate battery charge level
    • Wired: Charging will cycle through 1 to 4, if fully charged will stay on 4
    • Wireless: 4 = Full, 3 = High, 2 = Medium/low, 1 = Low/dying
  • Rumble exposure via Force Feedback
    • The rumble motors are exposed as Force Feedback effects, allowing for great game compatibility
  • Supports the PCSX2 PlayStation 2 Emulator
    • Controller gets picked up by LilyPad plugin with all device features
  • Supports the RPCS3 PlayStation 3 Emulator
    • Controller gets picked up by DualShock 3 handler with all device features
  • Supports DS4Windows (requires at least Version 2.2.10 or newer)
    • Controller gets presented as a DualShock 4 compatible variant
    • Read #40 for details about XInput and DS4 emulation
  • Supports RetroArch emulation platform
  • Supports x360ce for XInput emulation
  • Supports Dolphin Emulator
  • Supports DuckStation - PlayStation 1, aka. PSX Emulator

What's missing

Check the ⚡ issue tracker ⚡ for work-in-progress or known bugs!

The following features are not available (and most probably won't in the near future until more contributors join the party):

  • Motion controls a.k.a. SIXAXIS (Gyroscope, Accelerometer)
    • Contributions welcome!
    • See #217
  • Navigation Controller
    • Majority is done
  • Motion Controller
    • Not considered in design at all

For in-progress features and bug-fixes please consult the issue tracker.

How it works

DsHidMini is a filter driver sitting below mshidumdf.sys and acts as a function driver for USB and Bluetooth through the User-mode Driver Framework Reflector, handling translation of incoming HID I/O traffic to underlying USB/Bluetooth I/O and vice versa. On USB it replaces the Windows stock drivers for the Sony hardware and presents the device as a variety of user-configurable HID devices (see documentation). On Bluetooth in conjunction with BthPS3 it replaces the need for Shibari as the driver directly communicates over wireless channels and takes care of the necessary translation logic. As a user-mode driver it has limited access to the registry, therefore device-specific settings are stored and retrieved using the Unified Device Property Model API. Most of the core HID heavy lifting is done by the amazing DMF_VirtualHidMini module which greatly reduced the need for boilerplate code and sped up development tremendously.

Licensing

This solution contains BSD-3-Clause and other licensed components. For details, please consult the individual LICENSE files.

This is a community project and not affiliated with Sony Interactive Entertainment Inc. in any way.

"PlayStation", "PSP", "PS2", "PS one", "DUALSHOCK" and "SIXAXIS" are registered trademarks of Sony Interactive Entertainment Inc.

Environment

DsHidMini components (drivers, utilities) are designed for Windows 10, version 1809 or newer (x86, x64).

The dependencies used in DsHidMini don't exist in Windows 7/8/8.1 so they can't be supported.

How to build

Prerequisites

You can build individual projects of the solution within Visual Studio.

Documentation

Take a look at the project page for more information.

Installation

Pre-built binaries and instructions are provided on the releases page.

Support

To get support please follow these guidlines.

Sources & 3rd party credits

The following awesome resources have made this project possible.

Related projects

Dependencies

Tools & references

dshidmini's People

Contributors

dependabot[bot] avatar kanuan avatar nefarius avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.