You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(windows): preserve extended media key translation - #218
Windows volume, media, browser, and application-launch keys can be translated into ordinary keys when their E0 extended-key prefix is lost. For example, volume down/up share scan codes with C/B.
For keys outside the existing navigation and modifier cases, query MapVirtualKeyW(..., MAPVK_VK_TO_VSC_EX) for the E0 prefix. This preserves the intended key in both SendInput and HID keyboard translation while keeping E1 Pause handling distinct.
Built test_libvirtualhid with MSYS2/UCRT64 and warnings treated as errors.
cmake-build-sunshine-4981/tests/test_libvirtualhid.exe --gtest_filter=WindowsBackendTest.*: all 16 tests passed.
Added regressions covering 18 media/browser/launch keys, normalized and native scan codes, press/release, volume HID reports, HID-to-SendInput fallback, and ordinary/E1 keys. The SendInput regression fails against the original implementation.
GCC coverage confirms the changed return statement is exercised and both paths through the extended-key helper execute.
clang-format --dry-run --Werror and git diff --check passed.
Installed-driver and end-to-end Moonlight validation were not run.
Type of Change
feat: New feature (non-breaking change which adds functionality)
fix: Bug fix (non-breaking change which fixes an issue)
docs: Documentation only changes
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc.)
refactor: Code change that neither fixes a bug nor adds a feature
perf: Code change that improves performance
test: Adding missing tests or correcting existing tests
build: Changes that affect the build system or external dependencies
ci: Changes to CI configuration files and scripts
chore: Other changes that don't modify src or test files
revert: Reverts a previous commit
BREAKING CHANGE: Introduces a breaking change (can be combined with any type above)
Checklist
Code follows the style guidelines of this project
Code has been self-reviewed
Code has been commented, particularly in hard-to-understand areas
Code docstring/documentation-blocks for new or existing methods/components have been added or updated
Tests have been added or updated for new or modified functionality, including regression tests for bug fixes
✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 73.66%. Comparing base (bf32e97) to head (a09c6a7).
✅ All tests successful. No failed tests found.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Windows volume, media, browser, and application-launch keys can be translated into ordinary keys when their E0 extended-key prefix is lost. For example, volume down/up share scan codes with C/B.
For keys outside the existing navigation and modifier cases, query
MapVirtualKeyW(..., MAPVK_VK_TO_VSC_EX)for the E0 prefix. This preserves the intended key in both SendInput and HID keyboard translation while keeping E1 Pause handling distinct.Screenshot
Issues Fixed or Closed
Roadmap Issues
Testing
test_libvirtualhidwith MSYS2/UCRT64 and warnings treated as errors.cmake-build-sunshine-4981/tests/test_libvirtualhid.exe --gtest_filter=WindowsBackendTest.*: all 16 tests passed.clang-format --dry-run --Werrorandgit diff --checkpassed.Installed-driver and end-to-end Moonlight validation were not run.
Type of Change
Checklist
AI Usage
See our AI usage policy.