mirror of
https://github.com/LizardByte/libvirtualhid.git
synced 2026-10-23 03:27:34 +09:00
docs(gh-pages): add Virtual HID Driver product page (#62)
This commit is contained in:
1 parent
cd7d4f9016
commit
af2836a64c
6 files changed
+243
-44
No files matched your search
@@ -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'
|
||||
|
||||
@@ -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 | ❌<sup><a href="#alternatives-note-5">5</a></sup> | ✅ | ❌<sup><a href="#alternatives-note-6">6</a></sup> | - | ✅ |
|
||||
| Windows user-mode driver | ✅ | ❌ | ✅ | - | ✅ |
|
||||
| No Windows kernel-mode driver | ✅ | ❌ | ✅ | - | ✅ |
|
||||
| Descriptor-defined HID devices | ✅ | ❌ | ✅ | ✅<sup><a href="#alternatives-note-1">1</a></sup> | ✅ |
|
||||
| Platform-neutral C++ API | ✅ | ❌<sup><a href="#alternatives-note-2">2</a></sup> | ❌<sup><a href="#alternatives-note-2">2</a></sup> | ❌<sup><a href="#alternatives-note-3">3</a></sup> | ❌<sup><a href="#alternatives-note-2">2</a></sup> |
|
||||
| Keyboard | ✅ | ❌ | ❌ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Mouse | ✅ | ❌ | ❌ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Touchscreen, trackpad, or pen | ✅ | ❌ | ❌ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Generic HID gamepad | ✅ | ❌ | ✅ | ❌ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Xbox 360 gamepad | ✅ | ✅ | ✅ | ❌ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Xbox One gamepad | ✅ | ❌ | ✅ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Xbox Series gamepad | ✅ | ❌ | ✅ | ❌ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| DualShock 4 gamepad | ✅ | ✅ | ✅ | ❌ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| DualSense gamepad | ✅ | ❌ | ✅ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Nintendo Switch Pro-style gamepad | ✅ | ❌ | ✅ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Rumble or output callbacks | ✅ | ❌ | ✅ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| 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 | ❌<sup><a href="#alternatives-note-5">5</a></sup> | ✅ | ❌<sup><a href="#alternatives-note-6">6</a></sup> | - | ✅ |
|
||||
| Windows user-mode driver | ✅ | ❌ | ✅ | - | ✅ |
|
||||
| No Windows kernel-mode driver | ✅ | ❌ | ✅ | - | ✅ |
|
||||
| Descriptor-defined HID devices | ✅ | ❌ | ✅ | ✅<sup><a href="#alternatives-note-1">1</a></sup> | ✅ |
|
||||
| Platform-neutral C++ API | ✅ | ❌<sup><a href="#alternatives-note-2">2</a></sup> | ❌<sup><a href="#alternatives-note-2">2</a></sup> | ❌<sup><a href="#alternatives-note-3">3</a></sup> | ❌<sup><a href="#alternatives-note-2">2</a></sup> |
|
||||
| Keyboard | ✅ | ❌ | ❌ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Mouse | ✅ | ❌ | ❌ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Touchscreen, trackpad, or pen | ✅ | ❌ | ❌ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Generic HID gamepad | ✅ | ❌ | ✅ | ❌ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Xbox 360 gamepad | ✅ | ✅ | ✅ | ❌ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Xbox One gamepad | ✅ | ❌ | ✅ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Xbox Series gamepad | ✅ | ❌ | ✅ | ❌ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| DualShock 4 gamepad | ✅ | ✅ | ✅ | ❌ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| DualSense gamepad | ✅ | ❌ | ✅ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Nintendo Switch Pro-style gamepad | ✅ | ❌ | ✅ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Rumble or output callbacks | ✅ | ❌ | ✅ | ✅ | ✅<sup><a href="#alternatives-note-4">4</a></sup> |
|
||||
| Data-driven profiles | ❌ | ❌ | ✅ | ❌ | ❌ |
|
||||
| Actively developed | ✅ | ❌ | ✅ | ✅ | ✅ |
|
||||
|
||||
<a id="alternatives-note-1"></a><sup>1</sup> inputtino uses `uhid` for
|
||||
virtual joypads; its other listed device types use Linux input interfaces rather
|
||||
|
||||
@@ -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.
|
||||
@@ -0,0 +1,21 @@
|
||||
{% for feature in include.features %}
|
||||
<div class="col-md-6 col-lg-4 mb-5">
|
||||
<div class="card-custom h-100 shadow border-0 rounded-0">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="icon">
|
||||
{% if feature.icon_fa %}
|
||||
<i class="fa-fw fa-2x {{ feature.icon_fa }}"></i>
|
||||
{% elsif feature.icon_img %}
|
||||
<img {% if feature.icon_img_invert %}class="invert"{% endif %} src="{{ feature.icon_img }}" alt="{{ feature.icon_img_alt | default: feature.title }}"/>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="ms-3">
|
||||
<h5 class="fw-bolder mb-0">{{ feature.title }}</h5>
|
||||
<p class="mb-0">{{ feature.description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
@@ -26,27 +26,7 @@ cover-img:
|
||||
<div class="container px-auto">
|
||||
<h2 class="text-center fw-bolder my-5">Features</h2>
|
||||
<div class="row gx-5">
|
||||
{% for feature in site.data.features %}
|
||||
<div class="col-md-6 col-lg-4 mb-5">
|
||||
<div class="card-custom h-100 shadow border-0 rounded-0">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="icon">
|
||||
{% if feature.icon_fa %}
|
||||
<i class="fa-fw fa-2x {{ feature.icon_fa }}"></i>
|
||||
{% elsif feature.icon_img %}
|
||||
<img {% if feature.icon_img_invert %}class="invert"{% endif %} src="{{ feature.icon_img }}" alt="{{ feature.icon_img_alt | default: feature.title }}"/>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="ms-3">
|
||||
<h5 class="fw-bolder mb-0">{{ feature.title }}</h5>
|
||||
<p class="mb-0">{{ feature.description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% include feature-cards.html features=site.data.features %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -54,6 +34,30 @@ cover-img:
|
||||
<!-- More cards -->
|
||||
<div class="container py-5 px-auto">
|
||||
<div class="container col-md-10">
|
||||
<!-- Windows driver section -->
|
||||
<section class="py-4" id="WindowsDriver">
|
||||
<div class="card-custom shadow border-0 rounded-0">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<i class="fa-fw fa-2x fas fa-gamepad"></i>
|
||||
<div class="ms-3">
|
||||
<h2 class="fw-bolder mb-0">Virtual HID Driver</h2>
|
||||
<p class="mb-0">
|
||||
Explore the separate Windows driver package for compatible applications that create
|
||||
virtual HID gamepads.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer p-3 px-4">
|
||||
<a class="btn btn-outline-theme me-3 mb-3" href="{{ '/virtual-hid-driver' | relative_url }}">
|
||||
<img class="icon-sm invert" src="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/icons/windows.svg" alt="Windows"/>
|
||||
Driver overview
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Docs section -->
|
||||
<section class="py-4" id="Docs">
|
||||
<div class="card-custom shadow border-0 rounded-0">
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
title: Virtual HID Driver
|
||||
subtitle: User-mode virtual gamepads for Windows
|
||||
layout: page
|
||||
full-width: true
|
||||
after-content:
|
||||
- donate.html
|
||||
- support.html
|
||||
cover-img:
|
||||
- /libvirtualhid/assets/img/banners/libvirtualhid.jpeg
|
||||
---
|
||||
|
||||
<!-- About section -->
|
||||
<section class="py-5" id="About">
|
||||
<div class="container px-auto">
|
||||
<p class="lead text-center mx-auto mt-0 mb-4">
|
||||
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.
|
||||
</p>
|
||||
<div class="text-center">
|
||||
<a class="btn btn-outline-theme me-3 mb-3" href="https://github.com/LizardByte/libvirtualhid/releases" target="_blank" rel="noopener">
|
||||
<img class="icon-sm invert" src="https://cdn.jsdelivr.net/npm/simple-icons@16/icons/github.svg" alt="GitHub"/>
|
||||
View releases
|
||||
</a>
|
||||
<a class="btn btn-outline-theme me-3 mb-3" href="https://docs.lizardbyte.dev/projects/libvirtualhid" target="_blank" rel="noopener">
|
||||
<img class="icon-sm invert" src="https://cdn.jsdelivr.net/npm/simple-icons@16/icons/readthedocs.svg" alt="Read the Docs"/>
|
||||
Driver documentation
|
||||
</a>
|
||||
<a class="btn btn-outline-theme me-3 mb-3" href="/libvirtualhid/">
|
||||
<i class="fa-fw fa-lg fas fa-arrow-left"></i>
|
||||
libvirtualhid overview
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Features section -->
|
||||
<section class="py-5" id="Features">
|
||||
<div class="container px-auto">
|
||||
<h2 class="text-center fw-bolder my-5">Driver features</h2>
|
||||
<div class="row gx-5">
|
||||
{% include feature-cards.html features=site.data.driver_features %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Product details -->
|
||||
<div class="container py-5 px-auto">
|
||||
<div class="container col-md-10">
|
||||
<section class="py-4" id="Applications">
|
||||
<div class="card-custom shadow border-0 rounded-0">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-start">
|
||||
<i class="fa-fw fa-2x fas fa-code mt-1"></i>
|
||||
<div class="ms-3">
|
||||
<h2 class="fw-bolder mb-2">For compatible applications</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
<p class="mb-0">
|
||||
The installed package also includes the <code>virtualhid_control</code> diagnostic UI
|
||||
and the <code>gamepad_adapter</code> example for local validation.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer p-3 px-4">
|
||||
<a class="btn btn-outline-theme me-3 mb-3" href="https://github.com/LizardByte/libvirtualhid/tree/master/examples" target="_blank" rel="noopener">
|
||||
<i class="fa-fw fa-lg fas fa-puzzle-piece"></i>
|
||||
Integration examples
|
||||
</a>
|
||||
<a class="btn btn-outline-theme me-3 mb-3" href="https://github.com/LizardByte/libvirtualhid" target="_blank" rel="noopener">
|
||||
<img class="icon-sm invert" src="https://cdn.jsdelivr.net/npm/simple-icons@16/icons/github.svg" alt="GitHub"/>
|
||||
Browse source
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-4" id="Compatibility">
|
||||
<div class="card-custom shadow border-0 rounded-0">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-start">
|
||||
<i class="fa-fw fa-2x fas fa-circle-info mt-1"></i>
|
||||
<div class="ms-3">
|
||||
<h2 class="fw-bolder mb-2">Compatibility notes</h2>
|
||||
<ul class="mb-0">
|
||||
<li>
|
||||
The driver is for virtual gamepads. libvirtualhid's Windows keyboard and mouse
|
||||
support does not require this package.
|
||||
</li>
|
||||
<li>
|
||||
Xbox 360 is not available through this UMDF/VHF backend because a real Xbox 360
|
||||
controller uses XUSB rather than standard HID.
|
||||
</li>
|
||||
<li>
|
||||
Xbox-style HID profiles do not guarantee an XInput slot. Applications that require
|
||||
XInput-specific behavior should review the profile compatibility documentation.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="py-4" id="License">
|
||||
<div class="card-custom shadow border-0 rounded-0">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<i class="fa-fw fa-2x fas fa-file-contract"></i>
|
||||
<div class="ms-3">
|
||||
<h2 class="fw-bolder mb-0">License</h2>
|
||||
<p class="mb-0">
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer p-3 px-4">
|
||||
<a class="btn btn-outline-theme me-3 mb-3" href="https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/README.md" target="_blank" rel="noopener">
|
||||
<i class="fa-fw fa-lg fas fa-scale-balanced"></i>
|
||||
View license map
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
Reference in new issue
Block a user