Repository navigation
Conversation
Added optional fields for win_space_fallback and scroll_lock_indicator with default values. Updated tests to validate new configuration options.
…status Added information about win_space_fallback and scroll_lock_indicator to configuration display. Updated configuration loading and saving mechanism to use mutable config.
Added fullscreen passthrough information to CLI output.
Updated installation instructions to recommend installing from crates.io and changed the repository URL in build steps.
Removed build and artifact upload steps from CI workflow.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Caps Lock is currently intercepted in every foreground application, and the Win+Space fallback and periodic Scroll Lock indicator cannot be turned off. This change makes those behaviors configurable so fullscreen applications can receive native Caps Lock input without synthetic Win+Space or Scroll Lock events.
Use case: desktop language switching and fullscreen games
I use Caps Lock for English/Russian language switching on the desktop, while keeping Ukrainian available through Windows' normal language selector. In games such as PUBG and Apex Legends, I need the same physical Caps Lock key for an in-game action. I want to leave CCaps running and move between desktop applications and games without manually pausing it or maintaining a list of game executables.
This is the use case these additions support:
These choices are configurable so people who want the original fallback or indicator, or language switching inside fullscreen applications, can enable that behavior. The modified build worked for desktop language switching and a couple of Apex Legends matches in this setup. PUBG is another motivating use case; this report does not claim a separate PUBG test result.
Configuration and behavior
Adds three fields to the existing JSON configuration:
win_space_fallback: false: use only the direct layout-change request unless explicitly enabled.scroll_lock_indicator: false: do not start the indicator timer or generate indicator key events unless explicitly enabled.fullscreen_passthrough: true: pass Caps Lock through when the foreground client area covers its monitor, including borderless fullscreen.Missing fields in older configurations use these defaults. This intentionally changes the previous default behavior: users wanting the existing fallback and indicator can set both options to
true. Applications ignoring direct layout requests require Windows' normal language selector when fallback is off.Fullscreen detection runs on the first Caps Lock keydown, without a separate watcher or polling timer. Repeats and keyup retain the initial route if focus changes while the key is held. Per-monitor DPI awareness keeps geometry checks consistent on scaled displays. Desktop remapping switches only once per held press.
All execution modes load the feature settings,
-enablepreserves them when changing languages, and status/foreground diagnostics report them. README and changelog document configuration, startup, English/Russian filtering with Ukrainian available through Win+Space, and gaming limitations.Validation
Fullscreen browsers and video players also receive native Caps Lock input; windowed games are not excluded. The keyboard hook remains loaded, so the Apex observation is not a guarantee of compatibility with every game or future anti-cheat update. No workflow changes are included in this PR.