<div dir="ltr">Johan,<div><br></div><div>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).</div><div>SceneHelper.enableInputMethodEvents(scene, false);<br></div><div>IME is used for entering complex characters in some languages such as Chinese, Korean, Japanese, etc.<br></div><div><br></div><div>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.</div><div><br></div><div>If you try it on notepad, is it the same behaviour? If not, I think it might be a bug.</div><div><br></div><div>-- Thiago.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em qua., 25 de set. de 2024 às 11:12, Johan Corveleyn <<a href="mailto:jcorvel@gmail.com">jcorvel@gmail.com</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Thiago,<br>
<br>
Thank you for your answer. I am experiencing this issue on Windows<br>
(Windows 10 and 11).<br>
<br>
Now, it dawns on me that:<br>
- I have a QWERTY keyboard (standard US layout).<br>
- I have my keyboard layout setting in Windows configured to "US<br>
International". That way the keys for ~, ^, ', " become "dead keys"<br>
(waiting for next keystroke).<br>
- If I change my keyboard layout setting to "US" then I can't<br>
reproduce anymore because those keystrokes no longer act like dead<br>
keys (~, ^, ... immediately give that character).<br>
<br>
I don't know how this is handled on Linux or Mac. Do they also have<br>
something like a "US International" keyboard layout setting so ^<br>
becomes a dead key? Or does it work differently if I want to type â or<br>
ë, or a standalone ^?<br>
<br>
I'm not sure what you mean by disabling IME or how to know that it's<br>
enabled. Can I enable/disable this programmatically in JavaFX? Or is<br>
this an OS keyboard layout setting (anyway: just having a standard "US<br>
input" makes this non reproducible because I can no longer type dead<br>
keys)?<br>
<br>
If you have a keyboard input with dead keys it's super easy to test<br>
this with a simple program like:<br>
[[[<br>
public class DeadKeysFX extends Application {<br>
    @Override<br>
    public void start(Stage stage) {<br>
        TextField textField = new TextField();<br>
        Scene scene = new Scene(textField);<br>
        stage.setScene(scene);<br>
        stage.show();<br>
    }<br>
}<br>
]]]<br>
<br>
Just type ^+<space> and see whether you get one or two characters. In<br>
all non-JavaFX programs (including Java Swing) I get a single '^'. In<br>
JavaFX I get a '^ '.<br>
<br>
--<br>
Johan<br>
<br>
On Tue, Sep 24, 2024 at 5:16 PM Thiago Milczarek Sayão<br>
<<a href="mailto:thiago.sayao@gmail.com" target="_blank">thiago.sayao@gmail.com</a>> wrote:<br>
><br>
> Hi Johan,<br>
><br>
> It might vary be platform. Which one are you using? (Windows, Mac, Linux).<br>
><br>
> Try disabling IME (Input Method Editor) and see it it works.<br>
><br>
> - Thiago<br>
><br>
> Em ter., 24 de set. de 2024 11:51, Johan Corveleyn <<a href="mailto:jcorvel@gmail.com" target="_blank">jcorvel@gmail.com</a>> escreveu:<br>
>><br>
>> Hi,<br>
>><br>
>> (This is my first post here, hope I'm following the right path)<br>
>><br>
>> It seems JavaFX TextFields (and friends) do not automatically convert<br>
>> <dead key>+<space> into simply <dead key character>. They make it into<br>
>> <dead key character>+<space>, which is very atypical. I would consider<br>
>> this behavior a bug, since it is different from any editor I know (and<br>
>> makes it very hard to enter a dead key character on its own). We ran<br>
>> into this with Java 8, I also reproduced it with openjdk 21 + openjfx<br>
>> 23.<br>
>><br>
>> For instance if in a JavaFX TextField I type a '^' keystroke, it waits<br>
>> for the next keystroke (which is normal since it's a dead key,<br>
>> possibly followed by a character on which to put the '^'). But if I<br>
>> then type <space> I expect a simple '^' to appear. Instead, in JavaFX,<br>
>> '^ ' appears. This does not happen in Swing, nor in any editor or<br>
>> shell or ...<br>
>><br>
>> Background context: a user of our JavaFX application couldn't<br>
>> authenticate with their password (typed in a PasswordField). After an<br>
>> awful lot of troubleshooting we found that they used a '^' in their<br>
>> password. Of course the user didn't notice that after typing ^+space<br>
>> two dots appeared in the PasswordField. Now that user knows they have<br>
>> to backspace after typing ^+space ...<br>
>><br>
>> I suppose inserting a Swing JPasswordField in our JavaFX app would<br>
>> work around this issue, but ... isn't there a better solution?<br>
>> Shouldn't this be regarded as a bug?<br>
>><br>
>> --<br>
>> Johan<br>
</blockquote></div>