Skip to content

Preserve physical gameplay keys across Linux keyboard layouts - #956

Merged
capy-ai[bot] merged 1 commit into
devfrom
capy/preserve-physical-gameplay-keys
Sep 16, 2026
Merged

capy-ai[bot] merged 1 commit into
devfrom
capy/preserve-physical-gameplay-keys

Conversation

@zortos293

Copy link
Copy Markdown
Collaborator

Changes

Resolve Linux gameplay keys from their XKB physical key codes before falling back to Qt logical keys. This preserves letter and punctuation positions on non-US layouts and distinguishes left and right modifiers. Windows and macOS mapping paths are unchanged.

Keep existing local-shortcut handling, clipboard paste, and scan-code-based press/release pairing. Add layout regressions through the real stream item in windowed and fullscreen modes, including overlay focus transitions and layout changes while a key is held.

Verification

Independently reviewed the diff and reran:

  • StreamVideoItem tests on Xvfb/xcb: 197 passed, 2 skipped.
  • Covering Qt suite excluding interactive desktop tests: all 337 passed.
  • git diff --check: passed.

The worker also ran real XTEST key injection with US, Russian, French, German, US-international, and Japanese layouts. The baseline dropped Cyrillic gameplay keys and several non-US punctuation keys. The new path sends the expected physical-position VKs.

The shifted-punctuation fixture now supplies each character's actual physical scan code instead of using the S-key scan code for every character. Its assertions and test name remain unchanged.

Limits

No live GFN session was available. Wayland's XKB key-code convention was checked against Qt 6.8.3 source but not exercised on a compositor. JIS-specific conversion/IME keys retain the prior fallback behavior and are not newly supported. No visual UI changes.

Open in Capy

@coderabbitai

coderabbitai Bot commented Sep 15, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 725b316f-9aeb-4d10-992b-09e40026dbb5

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@capy-ai capy-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capy found no issues.

View 2 other findings in Capy.

Open in Capy

@capy-ai
capy-ai Bot merged commit fe59a71 into dev Sep 16, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant