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