Dieses Projekt stellt zwei KMDF-Treiber bereit, um den integrierten Steam Deck Controller (Valve Neptune) unter Windows nativ nutzbar zu machen.
Der Stack besteht aus zwei Komponenten:
-
SteamDeckHID.sys
HID-Eingangstreiber für das echte USB-Gerät. Leitet HID-Reports an den SteamDeckBus zur Emulation des Xbox360 Controller weiter -
SteamDeckBus.sys
Virtueller Bus mit emuliertem Xbox360-Controller. Der Bus-Treiber basiert auf einer stark reduzierten XUSB Emulation, ähnlich ViGEmBus.
- Native HID Gamepad-Unterstützung
- XInput-Kompatibilität (Xbox 360 Emulation)
- Kein zusätzlicher Userspace-Dienst notwendig
- Komplett im Kernel implementiert
Steam Deck Hardware
↓
usbccgp
↓
SteamDeckHID.sys
↓
DirectInput / SDL
↓
SteamDeckBus.sys
↓
Virtueller Xbox 360 Controller
↓
XInput
Für Build und Entwicklung:
- Windows 11
- Visual Studio 2022
- Windows Driver Kit (WDK)
- (Optional) WinDbg Preview für Debugging
Wichtig: WDK und Windows SDK sollten dieselbe Version haben.
Treiber müssen signiert sein. Für lokale Tests:
bcdedit /set testsigning on→ Neustart
.\scripts\create-test-cert.ps1.\scripts\build.ps1 -SignOptionen:
# Debug Build
.\scripts\build.ps1 -Configuration Debug -Sign
# Release Build
.\scripts\build.ps1 -Configuration Release -Sign
# Clean Build
.\scripts\build.ps1 -Configuration Release -Sign -Clean.\scripts\install.ps1Optional:
# Release installieren
.\scripts\install.ps1 -Configuration Release
# Deinstallieren
.\scripts\install.ps1 -Action uninstalljoy.cplöffnen → Controller sollte sichtbar sein- XInput-Spiel starten → sollte als Xbox Controller erkannt werden
Work in Progress. Issues und Pull Requests sind willkommen.
- ViGEmBus – Quellprojekt für
SteamDeckBus.sys(BSD-3-Clause). Die XUSB-Descriptor-Bytes und die "Boot-Sequenz"-Blobs in bus/BusPdo.cpp stammen unverändert daher; - Linux hid-steam.c – Valve's eigener Linux Kernel Treiber (Report-Strukturen)
- neptune-hidapi.net – C# HID-Library (Button-Mappings)
- SWICD – Usermode Vorläufer dieses Projekts
- KMDF HID Minidriver Sample – Microsoft Referenz-Implementierung
- HID Usage Tables 1.4 – USB.org
- WDK Dokumentation – Microsoft