https://bugs.kde.org/show_bug.cgi?id=509714

Vlad Zahorodnii <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/kwin/-/commit/290fdb8116
                   |                            |64ae53e3f49a95ee5218cf4308c
                   |                            |6c6

--- Comment #11 from Vlad Zahorodnii <[email protected]> ---
Git commit 290fdb811664ae53e3f49a95ee5218cf4308c6c6 by Vlad Zahorodnii.
Committed on 22/10/2026 at 15:01.
Pushed by vladz into branch 'master'.

plugins/stickykeys: Latch and lock modifiers on key release

The modifiers are latched and locked on key press. However, it looks
like xkb_state_update_key() can reset the locked state. In other words,

  Press Shift:
    - xkb_state_update_key(Shift, pressed)
    - the sticky filter latches the Shift modifier

  Release Shift:
    - xkb_state_update_key(Shift, released)

  Press Shift:
    - xkb_state_update_key(Shift, pressed)
    - the sticky filter locks the Shift modifier

  Release Shift:
    - xkb_state_update_key(Shift, released)
      - xkb also resets the locked state of the Shift modifier

This results in double tapping a modifier not making the modifier
persistent. For example, "SHIFT SHIFT a b c" produces "Abc" instead of
"ABC".

In order to address the issue, this change makes the input filter latch
and lock modifiers on key release after xkb_state_update_key(). This
also matches what mutter appears to do as well.

M  +28   -29   autotests/integration/sticky_keys_test.cpp
M  +13   -12   src/plugins/stickykeys/stickykeys.cpp

https://invent.kde.org/plasma/kwin/-/commit/290fdb811664ae53e3f49a95ee5218cf4308c6c6

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to