From f4d1bbdcf48e54e49150430a218370a05aabc926 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Mon, 10 Aug 2026 09:32:05 -0400 Subject: [PATCH] docs(gh-pages): add Virtual HID Driver product page Add a dedicated landing page and documentation for the separate Virtual HID Driver package. Includes driver features overview, compatibility notes, licensing information, and links to examples. Updates the main index to link to the new driver page. Also fixes table column alignment in README. --- .github/workflows/update-pages.yml | 1 + README.md | 46 +++--- gh-pages-template/_data/driver_features.yml | 38 +++++ .../_includes/feature-cards.html | 21 +++ gh-pages-template/index.html | 46 +++--- gh-pages-template/virtual-hid-driver.html | 135 ++++++++++++++++++ 6 files changed, 243 insertions(+), 44 deletions(-) create mode 100644 gh-pages-template/_data/driver_features.yml create mode 100644 gh-pages-template/_includes/feature-cards.html create mode 100644 gh-pages-template/virtual-hid-driver.html 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. +
+