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 <mar...@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.rushfo...@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 <jcor...@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.sa...@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 <jcor...@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 >> > > >