Dead keys followed by space

John Hendrikx john.hendrikx at gmail.com
Thu Sep 26 20:21:27 UTC 2024


> For some reason mails on the openjfx-dev mailinglist coming from 
> martin at martinfox.com are not coming through to me

I have the same problem.

It sometimes takes a while, and sometimes they never get through :/  It 
may indeed by Gmail, as I use that as well for the mailinglist.

--John

On 26/09/2024 10:37, Johan Corveleyn wrote:
> Thanks, and thank you Martin for filing the issue 
> https://bugs.openjdk.org/browse/JDK-8340982. I'll try to create an 
> account on openjdk.org <http://openjdk.org> to be able to watch the 
> issue :-).
>
> Tangentially:
> For some reason mails on the openjfx-dev mailinglist coming from 
> martin at martinfox.com are not coming through to me. I only saw this 
> thanks to Thiago's reply below (which prompted me to realize that I 
> have missed Martin's mail). It's in the archives on 
> https://mail.openjdk.org/pipermail/openjfx-dev/2024-September/thread.html 
> alright, which is where I saw Martin's latest reply about filing the 
> issue. It seems mails from mfox at openjdk.org are coming through to me, 
> but from martin at martinfox.com not. Maybe some overzealous filtering by 
> Gmail (not sure whether it's only an issue for me, or also for other 
> gmail users). I'll try to investigate a bit more why gmail seems to be 
> dropping these mails for me :-/.
>
> -- 
> Johan
>
> On Wed, Sep 25, 2024 at 6:38 PM Thiago Milczarek Sayão 
> <thiago.sayao at gmail.com> wrote:
>
>     Johan,
>
>     Trust Martin, as I know nothing about Windows :)
>     Sorry for misleading you on the IME subject.
>
>     Em qua., 25 de set. de 2024 às 13:24, Martin Fox
>     <martin at martinfox.com> escreveu:
>
>         Johan,
>
>         Thanks for providing all the details. It does sound like a
>         bug. I will take a look.
>
>         Since this is Windows altering the IME setup probably won’t
>         have any effect. On Mac and Linux dead keys are delivered
>         through the IME pathway and are presented to JavaFX as
>         InputMethod events. On Windows dead keys don’t go through this
>         pathway and are presented as KeyEvents.
>
>         Martin
>
>>         On Sep 25, 2024, at 8:21 AM, Kevin Rushforth
>>         <kevin.rushforth at oracle.com> wrote:
>>
>>         I would not recommend internal APIs, unless someone wants to
>>         build JavaFX to help diagnose it.
>>
>>         In any case it sounds like Johan has discovered a bug -- at
>>         least on Windows -- in the key handler for dead keys. We
>>         should test this on macOS and Linux as well.
>>
>>          -- Kevin
>>
>>         On 9/25/2024 8:14 AM, Thiago Milczarek Sayão wrote:
>>>         Johan,
>>>
>>>         It's an internal API, but we can use it for testing purposes
>>>         (I'm not sure if there's a public API for that).
>>>         SceneHelper.enableInputMethodEvents(scene, false);
>>>         IME is used for entering complex characters in some
>>>         languages such as Chinese, Korean, Japanese, etc.
>>>
>>>         On Linux, setting the keyboard to en_US will also add the
>>>         extra space, except if I choose the en_US with dead keys
>>>         variation.
>>>
>>>         If you try it on notepad, is it the same behaviour? If not,
>>>         I think it might be a bug.
>>>
>>>         -- Thiago.
>>>
>>>
>>>         Em qua., 25 de set. de 2024 às 11:12, Johan Corveleyn
>>>         <jcorvel at gmail.com> escreveu:
>>>
>>>             Hi Thiago,
>>>
>>>             Thank you for your answer. I am experiencing this issue
>>>             on Windows
>>>             (Windows 10 and 11).
>>>
>>>             Now, it dawns on me that:
>>>             - I have a QWERTY keyboard (standard US layout).
>>>             - I have my keyboard layout setting in Windows
>>>             configured to "US
>>>             International". That way the keys for ~, ^, ', " become
>>>             "dead keys"
>>>             (waiting for next keystroke).
>>>             - If I change my keyboard layout setting to "US" then I
>>>             can't
>>>             reproduce anymore because those keystrokes no longer act
>>>             like dead
>>>             keys (~, ^, ... immediately give that character).
>>>
>>>             I don't know how this is handled on Linux or Mac. Do
>>>             they also have
>>>             something like a "US International" keyboard layout
>>>             setting so ^
>>>             becomes a dead key? Or does it work differently if I
>>>             want to type â or
>>>             ë, or a standalone ^?
>>>
>>>             I'm not sure what you mean by disabling IME or how to
>>>             know that it's
>>>             enabled. Can I enable/disable this programmatically in
>>>             JavaFX? Or is
>>>             this an OS keyboard layout setting (anyway: just having
>>>             a standard "US
>>>             input" makes this non reproducible because I can no
>>>             longer type dead
>>>             keys)?
>>>
>>>             If you have a keyboard input with dead keys it's super
>>>             easy to test
>>>             this with a simple program like:
>>>             [[[
>>>             public class DeadKeysFX extends Application {
>>>                 @Override
>>>                 public void start(Stage stage) {
>>>                     TextField textField = new TextField();
>>>                     Scene scene = new Scene(textField);
>>>                     stage.setScene(scene);
>>>                     stage.show();
>>>                 }
>>>             }
>>>             ]]]
>>>
>>>             Just type ^+<space> and see whether you get one or two
>>>             characters. In
>>>             all non-JavaFX programs (including Java Swing) I get a
>>>             single '^'. In
>>>             JavaFX I get a '^ '.
>>>
>>>             --
>>>             Johan
>>>
>>>             On Tue, Sep 24, 2024 at 5:16 PM Thiago Milczarek Sayão
>>>             <thiago.sayao at gmail.com> wrote:
>>>             >
>>>             > Hi Johan,
>>>             >
>>>             > It might vary be platform. Which one are you using?
>>>             (Windows, Mac, Linux).
>>>             >
>>>             > Try disabling IME (Input Method Editor) and see it it
>>>             works.
>>>             >
>>>             > - Thiago
>>>             >
>>>             > Em ter., 24 de set. de 2024 11:51, Johan Corveleyn
>>>             <jcorvel at gmail.com> escreveu:
>>>             >>
>>>             >> Hi,
>>>             >>
>>>             >> (This is my first post here, hope I'm following the
>>>             right path)
>>>             >>
>>>             >> It seems JavaFX TextFields (and friends) do not
>>>             automatically convert
>>>             >> <dead key>+<space> into simply <dead key character>.
>>>             They make it into
>>>             >> <dead key character>+<space>, which is very atypical.
>>>             I would consider
>>>             >> this behavior a bug, since it is different from any
>>>             editor I know (and
>>>             >> makes it very hard to enter a dead key character on
>>>             its own). We ran
>>>             >> into this with Java 8, I also reproduced it with
>>>             openjdk 21 + openjfx
>>>             >> 23.
>>>             >>
>>>             >> For instance if in a JavaFX TextField I type a '^'
>>>             keystroke, it waits
>>>             >> for the next keystroke (which is normal since it's a
>>>             dead key,
>>>             >> possibly followed by a character on which to put the
>>>             '^'). But if I
>>>             >> then type <space> I expect a simple '^' to appear.
>>>             Instead, in JavaFX,
>>>             >> '^ ' appears. This does not happen in Swing, nor in
>>>             any editor or
>>>             >> shell or ...
>>>             >>
>>>             >> Background context: a user of our JavaFX application
>>>             couldn't
>>>             >> authenticate with their password (typed in a
>>>             PasswordField). After an
>>>             >> awful lot of troubleshooting we found that they used
>>>             a '^' in their
>>>             >> password. Of course the user didn't notice that after
>>>             typing ^+space
>>>             >> two dots appeared in the PasswordField. Now that user
>>>             knows they have
>>>             >> to backspace after typing ^+space ...
>>>             >>
>>>             >> I suppose inserting a Swing JPasswordField in our
>>>             JavaFX app would
>>>             >> work around this issue, but ... isn't there a better
>>>             solution?
>>>             >> Shouldn't this be regarded as a bug?
>>>             >>
>>>             >> --
>>>             >> Johan
>>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20240926/7ad78228/attachment-0001.htm>


More information about the openjfx-dev mailing list