From 7c5c8ed9f3983dc2f167c48abd0cc4c635956305 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Fri, 14 Aug 2026 08:58:44 -0400 Subject: [PATCH] docs: clarify licensing and macOS backend status Add a root license notice, move the MIT text under `LICENSES/`, and update install/packaging paths so distributed artifacts still include the expected license files. Refresh README and docs to better describe the current macOS CoreGraphics-only keyboard/mouse backend and keep planned native virtual-HID gamepad support scoped separately. --- CMakeLists.txt | 3 +- LICENSE.md | 14 ++++++ LICENSE => LICENSES/MIT.md | 0 LICENSES/README.md | 2 +- README.md | 44 ++++++++++--------- cmake/packaging/common.cmake | 2 +- cmake/packaging/windows.cmake | 10 +++-- docs/Doxyfile | 1 - docs/development.md | 17 ++++--- .../store-review-validation.md | 2 +- docs/platform-support.md | 7 +-- docs/streaming-host-integration.md | 16 ------- 12 files changed, 61 insertions(+), 57 deletions(-) create mode 100644 LICENSE.md rename LICENSE => LICENSES/MIT.md (100%) rename docs/{ => maintainer}/store-review-validation.md (98%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7873af9..8103c50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -170,8 +170,9 @@ if(LIBVIRTUALHID_INSTALL) "find_dependency(X11 COMPONENTS Xtst)\n") endif() - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/LICENSES/MIT.md" DESTINATION "${CMAKE_INSTALL_DATADIR}/licenses/libvirtualhid" + RENAME LICENSE COMPONENT library) configure_package_config_file( diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..4c3cf3b --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,14 @@ +# Repository License Notice + +`libvirtualhid` contains components under different licenses. This file is a +summary and does not replace the complete license texts. + +- The cross-platform library source, public headers, non-driver backends, + examples, tests, build scripts, and documentation are licensed under the + [MIT License](LICENSES/MIT.md), except where the license map says otherwise. +- The Windows UMDF driver, broker, proprietary entitlement and evaluation + sources, and generated Windows driver package artifacts are licensed under + the [LizardByte Source-Available License 1.0](LICENSES/LicenseRef-LizardByte-SAL-1.0.md). + +See the [license map](LICENSES/README.md) for the authoritative repository path +and artifact assignments. diff --git a/LICENSE b/LICENSES/MIT.md similarity index 100% rename from LICENSE rename to LICENSES/MIT.md diff --git a/LICENSES/README.md b/LICENSES/README.md index 0f1231b..2e1d3e4 100644 --- a/LICENSES/README.md +++ b/LICENSES/README.md @@ -6,7 +6,7 @@ Windows driver package. - LB-SAL 1.0 SPDX custom identifier: `LicenseRef-LizardByte-SAL-1.0`. - 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/LICENSE). + [MIT](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/MIT.md). - Windows UMDF driver source under `src/platform/windows/driver/`, the broker service under `src/platform/windows/broker/`, and the broker entitlement and evaluation sources diff --git a/README.md b/README.md index e69ea65..d30d303 100644 --- a/README.md +++ b/README.md @@ -85,20 +85,14 @@ More complete examples live in `examples/`, including the streaming-host-oriente ## 📚 Documentation -- [Usage and API](docs/usage.md): CMake consumption, build options, public API - overview, profiles, and examples. -- [Platform support](docs/platform-support.md): backend capability model, - Windows, Linux, macOS, and Linux permission setup. -- [Windows driver package](docs/windows-driver.md): UMDF/VHF package build, - installation, validation, diagnostics, and signing notes. -- [TODO](docs/todo.md): known larger compatibility gaps and proposed solution - paths. -- [Streaming-host integration](docs/streaming-host-integration.md): integration - contract and remaining replacement-readiness work for streaming hosts. -- [Development](docs/development.md): local build/test commands, repository - layout, docs generation, and roadmap. -- [Microsoft Store validation](docs/store-review-validation.md): review notes - and manual validation for Store submissions. +- [Usage and API](docs/usage.md): CMake consumption, build options, public API overview, profiles, and examples. +- [Platform support](docs/platform-support.md): backend capability model, Windows, Linux, macOS, + and Linux permission setup. +- [Windows driver package](docs/windows-driver.md): UMDF/VHF package build, installation, validation, diagnostics, + and signing notes. +- [Streaming-host integration](docs/streaming-host-integration.md): integration contract. +- [Development](docs/development.md): local build/test commands, repository layout, docs generation, and roadmap. +- [TODO](docs/todo.md): known larger compatibility gaps and proposed solution paths. ## 🎯 Scope @@ -109,10 +103,12 @@ devices from the OS, or ship a Windows kernel-mode driver. ## 📌 Status -Linux and Windows are the active backends. Linux uses standard user-space kernel -interfaces. Windows remains user-mode: the C++ library talks to a UMDF2 control -driver, and the driver publishes HID gamepads through VHF. macOS support is not -implemented yet. +Linux and Windows provide virtual-device backends. Linux uses standard +user-space kernel interfaces. Windows remains user-mode: the C++ library talks +to a UMDF2 control driver, and the driver publishes HID gamepads through VHF. +macOS currently provides a limited CoreGraphics synthetic-input backend for +keyboard and mouse only. It is not a virtual-HID backend and does not yet +support gamepads; native macOS virtual-HID gamepad support is planned. The library is designed around gamepad use first because remote streaming hosts are the first consumer class. Non-gamepad device types are available through the @@ -183,8 +179,14 @@ test app path and does not currently advertise an ARM64 build. ## 📄 License -The cross-platform `libvirtualhid` library is licensed under the MIT License. +The cross-platform `libvirtualhid` library is licensed under the +[MIT License](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/MIT.md). The Windows UMDF driver, broker, proprietary entitlement/evaluation sources, and generated Windows driver package artifacts, including the driver MSI, are -licensed under the LizardByte Source-Available License 1.0 (LB-SAL 1.0). See the -[license map](LICENSES/README.md) for the full repository split. +licensed under the +[LizardByte Source-Available License 1.0](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/LicenseRef-LizardByte-SAL-1.0.md) +(LB-SAL 1.0). The root +[license notice](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSE.md) +points to both complete license texts; see the +[license map](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/README.md) +for the authoritative repository path and artifact assignments. diff --git a/cmake/packaging/common.cmake b/cmake/packaging/common.cmake index 5cc6bed..337533a 100644 --- a/cmake/packaging/common.cmake +++ b/cmake/packaging/common.cmake @@ -10,7 +10,7 @@ set(CPACK_PACKAGE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/cpack_artifacts) set(CPACK_PACKAGE_CONTACT "https://app.lizardbyte.dev") set(CPACK_PACKAGE_DESCRIPTION ${CMAKE_PROJECT_DESCRIPTION}) set(CPACK_PACKAGE_HOMEPAGE_URL ${CMAKE_PROJECT_HOMEPAGE_URL}) -set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE) +set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSES/MIT.md) set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}") set(CPACK_STRIP_FILES YES) diff --git a/cmake/packaging/windows.cmake b/cmake/packaging/windows.cmake index ba84047..ee25ea3 100644 --- a/cmake/packaging/windows.cmake +++ b/cmake/packaging/windows.cmake @@ -56,10 +56,14 @@ if(LIBVIRTUALHID_DRIVER_TEST_CERTIFICATE) OPTIONAL) endif() -install(FILES - "${PROJECT_SOURCE_DIR}/LICENSE" - "${LIBVIRTUALHID_DRIVER_LICENSE_FILE}" +install(FILES "${PROJECT_SOURCE_DIR}/LICENSES/MIT.md" + DESTINATION "licenses" + RENAME "MIT.md" + COMPONENT driver) + +install(FILES "${LIBVIRTUALHID_DRIVER_LICENSE_FILE}" DESTINATION "licenses" + RENAME "LicenseRef-LizardByte-SAL-1.0.md" COMPONENT driver) set(CPACK_COMPONENT_DRIVER_DISPLAY_NAME "Windows UMDF Driver") diff --git a/docs/Doxyfile b/docs/Doxyfile index fdf7b22..1a987c6 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -43,7 +43,6 @@ INPUT = ../README.md \ todo.md \ streaming-host-integration.md \ development.md \ - store-review-validation.md \ ../LICENSES/README.md \ ../examples \ ../third-party/doxyconfig/docs/source_code.md \ diff --git a/docs/development.md b/docs/development.md index d316377..b4ec5ce 100644 --- a/docs/development.md +++ b/docs/development.md @@ -88,12 +88,11 @@ code and tests provide a better source of truth. ## Roadmap -- Finish Windows streaming-host replacement validation, especially application - compatibility for the UMDF/VHF HID backend and any XInput-only fallback story. -- Replace consumer-specific ViGEmBus installer/status/diagnostic flows with - libvirtualhid driver-package checks. -- Validate Linux host-adapter behavior across the selected controller profiles. -- Define and implement the FreeBSD-supported backend subset. -- Extend macOS support beyond CoreGraphics keyboard and mouse injection to - native virtual HID devices, including signing, entitlement, and installer - constraints. +- Add native macOS virtual-HID gamepad support beyond the current CoreGraphics + keyboard and mouse injection backend, including signing, entitlement, and + installer constraints. +- Add bindings for other languages, such as Python, Rust, and C#. Bindings will + be considered for any requested language. +- Evaluate an optional FreeBSD CUSE-backed `uhid(4)`-compatible device for + direct HID consumers. This would supplement uinput; it is not equivalent to + registering a virtual device with FreeBSD's kernel HID bus. diff --git a/docs/store-review-validation.md b/docs/maintainer/store-review-validation.md similarity index 98% rename from docs/store-review-validation.md rename to docs/maintainer/store-review-validation.md index 2b7c56a..88bc7b7 100644 --- a/docs/store-review-validation.md +++ b/docs/maintainer/store-review-validation.md @@ -66,7 +66,7 @@ Expected result: 4. Run the required validation tool from the submission notes. 5. Activate the review key supplied through Partner Center. 6. Create the default gamepad and exercise its controls. -7. Optionally run the browser validation steps. +7. Optionally, run the browser validation steps. If the default install location was changed during MSI installation, replace `$env:ProgramFiles\libvirtualhid` with the selected install directory. diff --git a/docs/platform-support.md b/docs/platform-support.md index 62a241a..3f4c3f2 100644 --- a/docs/platform-support.md +++ b/docs/platform-support.md @@ -272,6 +272,7 @@ Unsupported macOS capabilities currently return `unsupported_profile`: - Touchscreen, trackpad, and pen tablet devices. - Keyboard text input through `KeyboardTextEvent`. -Future native virtual HID support may use `IOHIDUserDevice`, -DriverKit/HIDDriverKit, or a combination that preserves the same public API -while documenting any signing, entitlement, and installer requirements. +Native macOS virtual-HID gamepad support is planned. A future backend may use +`IOHIDUserDevice`, DriverKit/HIDDriverKit, or a combination that preserves the +same public API while documenting any signing, entitlement, and installer +requirements. diff --git a/docs/streaming-host-integration.md b/docs/streaming-host-integration.md index 286d13d..16d8c32 100644 --- a/docs/streaming-host-integration.md +++ b/docs/streaming-host-integration.md @@ -58,19 +58,3 @@ The core API and adapter shape cover the major streaming-host requirements: - FreeBSD uinput gamepads and pointer devices, with basic PlayStation input and rumble but without Linux UHID-only PlayStation features. - Windows UMDF/VHF gamepad creation through an installed driver package. - -Remaining replacement work is validation and packaging, not broad API shape: - -- Validate Windows UMDF/VHF gamepads against the same application classes that - previously relied on ViGEmBus, including XInput-only compatibility decisions. -- Validate DualShock 4 and Xbox behavior through the intended Windows streaming - host path. -- Replace any consumer-specific ViGEmBus installer, status, and diagnostics with - libvirtualhid driver-package checks. -- Add and validate the Linux host adapter for the selected controller profile - names used by the consuming application. -- Evaluate an optional FreeBSD CUSE-backed `uhid(4)`-compatible device for - direct HID consumers. This would supplement uinput; it is not equivalent to - registering a virtual device with FreeBSD's kernel HID bus. -- Validate macOS CoreGraphics keyboard and mouse support in a streaming host, and - keep native macOS virtual HID device work scoped separately.