Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/workflows/ci-driver.yml
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,22 @@ jobs:
-Destination `
".\artifacts\libvirtualhid-Windows-AMD64-driver-installer.msi"

- name: Verify packaged license notices
shell: pwsh
run: |
$packageDirectory = ".\cmake-build-driver\cpack_artifacts\_CPack_Packages\win64\WIX\libvirtualhid"
$licenseDirectory = Join-Path $packageDirectory "licenses"
foreach ($license in @("MIT.md", "HIDMaestro-MIT.md", "LicenseRef-LizardByte-SAL-1.0.md")) {
$source = Join-Path .\LICENSES $license
$packaged = Join-Path $licenseDirectory $license
if (!(Test-Path -LiteralPath $packaged -PathType Leaf)) {
throw "Packaged license notice is missing: $license"
}
if ((Get-FileHash -LiteralPath $source).Hash -ne (Get-FileHash -LiteralPath $packaged).Hash) {
throw "Packaged license notice differs from its source: $license"
}
}

- name: Export Azure driver signing certificate
if: >-
github.event_name == 'push' &&
Expand Down
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,10 @@ if(LIBVIRTUALHID_INSTALL)
RENAME LICENSE
COMPONENT library)

install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/LICENSES/HIDMaestro-MIT.md"
DESTINATION "${CMAKE_INSTALL_DATADIR}/licenses/libvirtualhid"
COMPONENT library)

configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/libvirtualhid-config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/libvirtualhid-config.cmake"
Expand Down
27 changes: 27 additions & 0 deletions LICENSES/HIDMaestro-MIT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
MIT License

"And we talk of Christ, we rejoice in Christ, we preach of Christ, we prophesy of Christ,
and we write according to our prophecies, that our children may know to what source they
may look for a remission of their sins." — 2 Nephi 25:26

Glory, honor, and praise to the Lord Jesus Christ, the source of all truth and salvation, forever and ever.

Copyright (c) 2026 HIDMaestro Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
15 changes: 10 additions & 5 deletions LICENSES/license-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ Windows driver and macOS broker packages.
- Cross-platform library source, public headers, non-driver backends, examples,
tests, build scripts, and documentation unless listed below:
[MIT](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/MIT.md).
- HIDMaestro's `MinimumViablePidFfbBlock` descriptor bytes in
`src/platform/windows/shared/generic_pid_protocol.hpp`, used by the Windows
library backend, UMDF driver, and packaged tools:
[HIDMaestro MIT notice](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/HIDMaestro-MIT.md),
Copyright (c) 2026 HIDMaestro Contributors. The notice is copied from
[HIDMaestro's LICENSE](https://github.com/hifihedgehog/HIDMaestro/blob/master/LICENSE).
- Windows UMDF driver source under `src/platform/windows/driver/`, the broker
service under `src/platform/windows/broker/`, and the broker entitlement and
evaluation sources
Expand All @@ -19,8 +25,7 @@ Windows driver and macOS broker packages.
broker bundles and DMGs:
[LizardByte Source-Available License 1.0](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/LicenseRef-LizardByte-SAL-1.0.md).

Every installed library distribution includes the MIT notice under
`share/licenses/libvirtualhid`. The Windows driver MSI may include MIT-licensed
helper components from this repository; packaged installs include both license
texts for that reason. The macOS broker DMG likewise includes the MIT library
and the LB-SAL broker, with both license texts.
Every installed library distribution includes the LizardByte and HIDMaestro MIT
notices under `share/licenses/libvirtualhid`. The Windows driver MSI includes
both MIT notices and the LB-SAL license under `licenses`. The macOS broker DMG
includes the `LICENSES` directory with the MIT notices and the LB-SAL license.
11 changes: 4 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,17 +137,17 @@ 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 ARM64 support | ❌<sup><a href="#alternatives-note-5">5</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> |
| 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> |
Expand Down Expand Up @@ -181,9 +181,6 @@ require a Microsoft dashboard signing path, such as WHQL/Hardware Dev Center
signing; the current Azure Trusted Signing catalog/MSI flow is not sufficient
for ARM64 release driver package installation.

<a id="alternatives-note-6"></a><sup>6</sup> HIDMaestro documents a `win-x64`
test app path and does not currently advertise an ARM64 build.

## 📄 License

The cross-platform `libvirtualhid` library is licensed under the
Expand Down
5 changes: 3 additions & 2 deletions cmake/packaging/windows.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,10 @@ if(LIBVIRTUALHID_DRIVER_TEST_CERTIFICATE)
OPTIONAL)
endif()

install(FILES "${PROJECT_SOURCE_DIR}/LICENSES/MIT.md"
install(FILES
"${PROJECT_SOURCE_DIR}/LICENSES/MIT.md"
"${PROJECT_SOURCE_DIR}/LICENSES/HIDMaestro-MIT.md"
DESTINATION "licenses"
RENAME "MIT.md"
COMPONENT driver)

install(FILES "${LIBVIRTUALHID_DRIVER_LICENSE_FILE}"
Expand Down
3 changes: 3 additions & 0 deletions src/platform/windows/shared/generic_pid_protocol.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ namespace lvh::detail::windows {
* Joystick top-level collection; exposing PID reports from a Game Pad
* collection can fault pid.dll during effect creation.
*
* The HIDMaestro descriptor block is Copyright (c) 2026 HIDMaestro Contributors
* and licensed under MIT; see LICENSES/HIDMaestro-MIT.md for the full notice.
*
* @param source Built-in Generic Controller report descriptor.
* @return Windows descriptor, or an empty vector when @p source is not the expected built-in layout.
*/
Expand Down
Loading