| Summary: | [Regression] Modifier keys (Ctrl/Alt) are swallowed/ignored during KRFB remote sessions on Wayland | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | Oliver Trenkelbach <olispeedy> |
| Component: | input | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | VERIFIED FIXED | ||
| Severity: | major | CC: | dev, duha.bugs, kde, kdedev, mmartz, nate |
| Priority: | HI | ||
| Version First Reported In: | 6.6.3 | ||
| Target Milestone: | --- | ||
| Platform: | Neon | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/kwin/-/commit/c186a75b78e142068649b4df452a45e28734bd26 | Version Fixed/Implemented In: | 6.7.0 |
| Sentry Crash Report: | |||
|
Description
Oliver Trenkelbach
2026-05-02 19:00:41 UTC
Same in:
$ apt-cache policy krfb
krfb:
Installed: 4:25.12.3-0ubuntu1
Candidate: 4:25.12.3-0ubuntu1
Version table:
*** 4:25.12.3-0ubuntu1 500
500 mirror://mirrors.ubuntu.com/mirrors.txt resolute/universe amd64 Packages
100 /var/lib/dpkg/status
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 26.04 LTS
Release: 26.04
Codename: resolute
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/9253 Git commit 885ed3e1bbaba6bc12ea6e2b54126bd7c4bfdbda by David Edmundson. Committed on 02/06/2026 at 10:08. Pushed by davidedmundson into branch 'master'. fakeinput: Keep modifiers when handling keysyms The requirements for turning keysyms into keycodes are complicated. If the keysym is "F" vs "f" we need to handle pressing and unpressing shift before delivering the keycode. However, we still need existing modifiers like control, alt, meta to work based on key combinations. This patch avoids unsetting existingly held modifiers and takes a union. It does mean that sending some keySyms with modifiers explicitly held down may not translate correctly, but it's hopefully a happy medium. We also have to ensure when the user explicitly presses a modifier we don't unset the changes the user made. M +22 -0 autotests/integration/fakeinput_test.cpp M +25 -3 src/backends/fakeinput/fakeinputbackend.cpp https://invent.kde.org/plasma/kwin/-/commit/885ed3e1bbaba6bc12ea6e2b54126bd7c4bfdbda Git commit 78769490b6d2d831f4cbac385380fe659f677a76 by David Edmundson. Committed on 02/06/2026 at 11:02. Pushed by davidedmundson into branch 'Plasma/6.7'. fakeinput: Keep modifiers when handling keysyms The requirements for turning keysyms into keycodes are complicated. If the keysym is "F" vs "f" we need to handle pressing and unpressing shift before delivering the keycode. However, we still need existing modifiers like control, alt, meta to work based on key combinations. This patch avoids unsetting existingly held modifiers and takes a union. It does mean that sending some keySyms with modifiers explicitly held down may not translate correctly, but it's hopefully a happy medium. We also have to ensure when the user explicitly presses a modifier we don't unset the changes the user made. (cherry picked from commit 885ed3e1bbaba6bc12ea6e2b54126bd7c4bfdbda) Co-authored-by: David Edmundson <kde@davidedmundson.co.uk> M +22 -0 autotests/integration/fakeinput_test.cpp M +25 -3 src/backends/fakeinput/fakeinputbackend.cpp https://invent.kde.org/plasma/kwin/-/commit/78769490b6d2d831f4cbac385380fe659f677a76 Git commit c186a75b78e142068649b4df452a45e28734bd26 by Vlad Zahorodnii. Committed on 16/06/2026 at 06:45. Pushed by vladz into branch 'Plasma/6.6'. fakeinput: Keep modifiers when handling keysyms The requirements for turning keysyms into keycodes are complicated. If the keysym is "F" vs "f" we need to handle pressing and unpressing shift before delivering the keycode. However, we still need existing modifiers like control, alt, meta to work based on key combinations. This patch avoids unsetting existingly held modifiers and takes a union. It does mean that sending some keySyms with modifiers explicitly held down may not translate correctly, but it's hopefully a happy medium. We also have to ensure when the user explicitly presses a modifier we don't unset the changes the user made. (cherry picked from commit 885ed3e1bbaba6bc12ea6e2b54126bd7c4bfdbda) Co-authored-by: David Edmundson <kde@davidedmundson.co.uk> M +22 -0 autotests/integration/fakeinput_test.cpp M +25 -3 src/backends/fakeinput/fakeinputbackend.cpp https://invent.kde.org/plasma/kwin/-/commit/c186a75b78e142068649b4df452a45e28734bd26 Verified as fixed on Debian testing/trixie (Plasma 6.7.2) and KDE Neon User (Plasma 6.7.3). The modifier keys are passing through reliably again. Thank you for the fix and great work! As a suggestion for the future: It would be wonderful to have an automated integration test in KWin (e.g. within KWin's autotests covering the fakeinput / libei remote input modifier states) to help catch similar regressions before release. |