On Mon, 30 Sep 2024 16:30:49 GMT, Martin Fox <m...@openjdk.org> 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

Reply via email to