diff --git a/.github/workflows/update-pages.yml b/.github/workflows/update-pages.yml index e29768e..3f258a4 100644 --- a/.github/workflows/update-pages.yml +++ b/.github/workflows/update-pages.yml @@ -40,6 +40,7 @@ jobs: GH_BOT_EMAIL: ${{ secrets.GH_BOT_EMAIL }} GH_BOT_TOKEN: ${{ secrets.GH_BOT_TOKEN }} with: + base_url: '_auto' clean_gh_pages: true gh_bot_name: ${{ vars.GH_BOT_NAME }} site_artifact: 'prep' diff --git a/README.md b/README.md index b6a5cd6..b1f66a4 100644 --- a/README.md +++ b/README.md @@ -112,29 +112,29 @@ same API where the backend exposes them. Alternatives exist if `libvirtualhid` does not meet your needs. -| Feature | `libvirtualhid` | [ViGEmBus](https://github.com/nefarius/ViGEmBus) | [HIDMaestro](https://github.com/hifihedgehog/HIDMaestro) | [inputtino](https://github.com/games-on-whales/inputtino) | [WinUHid](https://github.com/cgutman/WinUHid) | -|-----------------------------------|--------------------------------------------------|--------------------------------------------------|----------------------------------------------------------|-----------------------------------------------------------|--------------------------------------------------| -| Windows support | ✅ | ✅ | ✅ | ❌ | ✅ | -| Linux support | ✅ | ❌ | ❌ | ✅ | ❌ | -| Windows AMD64 support | ✅ | ✅ | ✅ | - | ✅ | -| Windows ARM64 support | ❌5 | ✅ | ❌6 | - | ✅ | -| Windows user-mode driver | ✅ | ❌ | ✅ | - | ✅ | -| No Windows kernel-mode driver | ✅ | ❌ | ✅ | - | ✅ | -| Descriptor-defined HID devices | ✅ | ❌ | ✅ | ✅1 | ✅ | -| Platform-neutral C++ API | ✅ | ❌2 | ❌2 | ❌3 | ❌2 | -| Keyboard | ✅ | ❌ | ❌ | ✅ | ✅4 | -| Mouse | ✅ | ❌ | ❌ | ✅ | ✅4 | -| Touchscreen, trackpad, or pen | ✅ | ❌ | ❌ | ✅ | ✅4 | -| Generic HID gamepad | ✅ | ❌ | ✅ | ❌ | ✅4 | -| Xbox 360 gamepad | ✅ | ✅ | ✅ | ❌ | ✅4 | -| Xbox One gamepad | ✅ | ❌ | ✅ | ✅ | ✅4 | -| Xbox Series gamepad | ✅ | ❌ | ✅ | ❌ | ✅4 | -| DualShock 4 gamepad | ✅ | ✅ | ✅ | ❌ | ✅4 | -| DualSense gamepad | ✅ | ❌ | ✅ | ✅ | ✅4 | -| Nintendo Switch Pro-style gamepad | ✅ | ❌ | ✅ | ✅ | ✅4 | -| Rumble or output callbacks | ✅ | ❌ | ✅ | ✅ | ✅4 | -| Data-driven profiles | ❌ | ❌ | ✅ | ❌ | ❌ | -| Actively developed | ✅ | ❌ | ✅ | ✅ | ✅ | +| Feature | `libvirtualhid` | [ViGEmBus](https://github.com/nefarius/ViGEmBus) | [HIDMaestro](https://github.com/hifihedgehog/HIDMaestro) | [inputtino](https://github.com/games-on-whales/inputtino) | [WinUHid](https://github.com/cgutman/WinUHid) | +|-----------------------------------|---------------------------------------------------|---------------------------------------------------|----------------------------------------------------------|-----------------------------------------------------------|---------------------------------------------------| +| Windows support | ✅ | ✅ | ✅ | ❌ | ✅ | +| Linux support | ✅ | ❌ | ❌ | ✅ | ❌ | +| Windows AMD64 support | ✅ | ✅ | ✅ | - | ✅ | +| Windows ARM64 support | ❌5 | ✅ | ❌6 | - | ✅ | +| Windows user-mode driver | ✅ | ❌ | ✅ | - | ✅ | +| No Windows kernel-mode driver | ✅ | ❌ | ✅ | - | ✅ | +| Descriptor-defined HID devices | ✅ | ❌ | ✅ | ✅1 | ✅ | +| Platform-neutral C++ API | ✅ | ❌2 | ❌2 | ❌3 | ❌2 | +| Keyboard | ✅ | ❌ | ❌ | ✅ | ✅4 | +| Mouse | ✅ | ❌ | ❌ | ✅ | ✅4 | +| Touchscreen, trackpad, or pen | ✅ | ❌ | ❌ | ✅ | ✅4 | +| Generic HID gamepad | ✅ | ❌ | ✅ | ❌ | ✅4 | +| Xbox 360 gamepad | ✅ | ✅ | ✅ | ❌ | ✅4 | +| Xbox One gamepad | ✅ | ❌ | ✅ | ✅ | ✅4 | +| Xbox Series gamepad | ✅ | ❌ | ✅ | ❌ | ✅4 | +| DualShock 4 gamepad | ✅ | ✅ | ✅ | ❌ | ✅4 | +| DualSense gamepad | ✅ | ❌ | ✅ | ✅ | ✅4 | +| Nintendo Switch Pro-style gamepad | ✅ | ❌ | ✅ | ✅ | ✅4 | +| Rumble or output callbacks | ✅ | ❌ | ✅ | ✅ | ✅4 | +| Data-driven profiles | ❌ | ❌ | ✅ | ❌ | ❌ | +| Actively developed | ✅ | ❌ | ✅ | ✅ | ✅ | 1 inputtino uses `uhid` for virtual joypads; its other listed device types use Linux input interfaces rather diff --git a/gh-pages-template/_data/driver_features.yml b/gh-pages-template/_data/driver_features.yml new file mode 100644 index 0000000..d67db51 --- /dev/null +++ b/gh-pages-template/_data/driver_features.yml @@ -0,0 +1,38 @@ +--- +- title: "User-mode by design" + icon_img: "https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/icons/windows.svg" + icon_img_alt: "Windows" + icon_img_invert: true + description: > + Uses a UMDF2 control driver backed by Windows Virtual HID Framework, with no + custom kernel-mode driver added by libvirtualhid. + +- title: "Standard HID gamepads" + icon_fa: "fas fa-gamepad" + description: > + Publishes virtual HID devices for compatible DirectInput, SDL/HIDAPI, + Windows Gaming Input, GameInput, and browser Gamepad API consumers. + +- title: "Process-owned lifecycle" + icon_fa: "fas fa-link" + description: > + Associates each virtual gamepad with the client that created it so Windows + can clean up the device if that process exits or crashes. + +- title: "Built-in diagnostic UI" + icon_fa: "fas fa-sliders" + description: > + Includes a native tool for creating, controlling, and monitoring gamepads, + device nodes, battery state, and output feedback. + +- title: "Multiple controller profiles" + icon_fa: "fas fa-layer-group" + description: > + Supports Generic, Xbox One, Xbox Series, DualShock 4, DualSense, and Nintendo + Switch Pro-style virtual controller profiles. + +- title: "Output feedback" + icon_fa: "fas fa-wave-square" + description: > + Normalizes supported rumble, RGB LED, adaptive trigger, and raw output + events for the application that owns the virtual gamepad. diff --git a/gh-pages-template/_includes/feature-cards.html b/gh-pages-template/_includes/feature-cards.html new file mode 100644 index 0000000..46c2843 --- /dev/null +++ b/gh-pages-template/_includes/feature-cards.html @@ -0,0 +1,21 @@ +{% for feature in include.features %} +
{{ feature.description }}
+{{ feature.description }}
-+ Explore the separate Windows driver package for compatible applications that create + virtual HID gamepads. +
++ Virtual HID Driver is the Windows gamepad backend for libvirtualhid. It installs the user-mode driver + component that compatible applications use to create virtual HID gamepads discoverable by Windows apps. + The driver package is separate from the portable C++ library and is currently packaged for AMD64 systems. +
+ ++ Applications create and update gamepads through libvirtualhid's platform-neutral C++ + API. The Windows backend communicates with the installed driver, while platform-specific + HID details stay out of consumer code. The library and driver must use matching control + protocol versions. +
+
+ The installed package also includes the virtualhid_control diagnostic UI
+ and the gamepad_adapter example for local validation.
+
+ The Windows UMDF driver source and generated driver package artifacts use the + LizardByte Source-Available License 1.0. Packaged helper components may use the MIT + License as documented in the repository license map. +
+