On Mon, 30 Sep 2024 16:30:49 GMT, Martin Fox <[email protected]> wrote:
> The glass code on Windows does its own dead key processing so at certain
> points it must clear the dead key state that the OS is maintaining. It does
> this by simulating a SPACE key press but this only works reliably if the
> SPACE key is pressed without any modifiers.
>
> Currently the code is picking up the current modifier state of the keyboard.
> If the dead key is invoked using AltGr the code is trying to clear the dead
> key state using AltGr+Space. This does nothing. The fix is to ignore the
> current keyboard state and pretend the only key being held down is Space.
>
> I haven't figured out a way of providing automated tests for dead keys.
> There's no way to detect whether the correct keyboard layout is active or to
> force the correct layout to be active.
>
> To test this you'll need to install the correct layout. On Windows 11 go to
> Settings > Time & language > Language & region. Click on the three dots to
> the far right of the English entry (or whatever language you're using) and
> select “Language options”. Scroll down until you find “Add a keyboard”. From
> that button scroll through all the many, many layouts until you find “Swiss
> German”. Once you’ve added the keyboard you should see a button on the far
> right of the task bar to select the layout. The dead key for this bug is
> where the =/+ key is on the standard US keyboard, top row to the left of
> Backspace.
@kevinrushforth could you please take a look?
modules/javafx.graphics/src/main/native-glass/win/ViewContainer.cpp line 550:
> 548:
> 549: // Since we handle dead keys ourselves, reset the keyboard dead key
> status (if any)
> 550: static BYTE kbState[256] = {};
my c++ is a bit rusty, do we need `static` here?
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1585#issuecomment-2386745154
PR Review Comment: https://git.openjdk.org/jfx/pull/1585#discussion_r1783352073