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

            Bug ID: 523450
           Summary: Dead key composition fails when the dead key is
                    pressed before the preceding key is released
    Classification: Plasma
           Product: kwin
      Version First 6.7.3
       Reported In:
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: input
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
  Target Milestone: ---

Created attachment 194581
  --> https://bugs.kde.org/attachment.cgi?id=194581&action=edit
Combined log file containing: Application key/text log showing the visible
result "sí si". Filtered WAYLAND_DEBUG=client log showing commit_string("í")
for the working sequence and a regular I ke

SUMMARY

Dead-key composition fails deterministically if the dead key is
pressed while the preceding ordinary key is still physically held.

This happens naturally when typing quickly because adjacent key
presses and releases commonly overlap.

The problem appeared after upgrading to Plasma/KWin 6.7.3.


STEPS TO REPRODUCE

Working sequence:

1. Press S
2. Release S
3. Press dead_acute (´)
4. Release dead_acute
5. Press I
6. Release I

Result: "sí"


Failing sequence:

1. Press S
2. While S is still physically held, press dead_acute (´)
3. Release S
4. Release dead_acute
5. Press I
6. Release I

Result: "si"


ACTUAL RESULT

If dead_acute is pressed before the preceding S key is released,
the accent is ignored and the result is "si".


EXPECTED RESULT

Both sequences should produce "sí".

The release event of a preceding ordinary key should not prevent or
cancel dead-key composition. Overlapping adjacent keystrokes is normal
when typing quickly.


REPRODUCIBILITY

The problem is reproducible whenever I deliberately use the failing
sequence described above.

It also happens intermittently during normal fast typing.


ADDITIONAL INFORMATION

The problem:

- Occurs in different applications.
- Occurs on two different laptops.
- Occurs with both internal and external keyboards.
- Did not occur before the upgrade.
- Occurs in a Plasma Wayland session.
- Occurs with Slow Keys, Bounce Keys and Sticky Keys disabled.
- Occurs without IBus running.
- Is not specific to one physical keyboard.


SYSTEM INFORMATION

Fedora 44
Plasma 6.7.3
KWin 6.7.3
plasma-workspace-6.7.3-1.fc44.x86_64
kwin-6.7.3-1.fc44.x86_64
libxkbcommon-1.13.1-2.fc44.x86_64
xkeyboard-config-2.47-1.fc44.noarch
ibus-1.5.34-4.fc44.x86_64

Session type: Wayland
LANG=gl_ES.UTF-8
XKB layout: es
XKB model: pc105


DEBUGGING INFORMATION

I reproduced both sequences in the same GTK test application while
running it with WAYLAND_DEBUG=client.

For the working sequence, the Wayland text-input protocol commits the
composed character:

    zwp_text_input_v3.preedit_string(nil, 0, 0)
    zwp_text_input_v3.commit_string("í")
    zwp_text_input_v3.done(...)

The application text becomes "sí".

For the failing overlapping sequence, no composed character is
committed. The client receives a normal I key event instead:

    wl_keyboard.key(..., 23, 1)
    wl_keyboard.key(..., 23, 0)

The application text becomes "sí si".

The attached log file documents the resulting difference. Because
these are client-side logs, they do not by themselves show whether
KWin received the physical dead-key event in the failing case. The
physical ordering described in the reproduction steps was performed
deliberately.

Attachment:

dead-key-logs.txt
   Combined log file containing:
   - Application key/text log showing the visible result "sí si"
   - Filtered WAYLAND_DEBUG=client log showing commit_string("í")
     for the working sequence and a regular I key event for the
     failing sequence

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

Reply via email to