Mac OSX and German Keyboard Layout (Y/Z)

Benjamin Gudehus hastebrot at gmail.com
Thu Feb 25 22:39:13 UTC 2016


FWIW: `KeyEvent` in `keyTyped` should return a String with the right key,
i.e. "z" for German keyboard Z key.

--Benjamin


On Thu, Feb 25, 2016 at 11:31 PM, Tom Schindl <tom.schindl at bestsolution.at>
wrote:

> Hi,
>
> Anyone any insights? Any Swing Savy dev around who knows how Swing
> manages to deliver the right key?
>
> Tom
>
> On 22.01.16 13:30, Tom Schindl wrote:
> > Hi,
> >
> > I just discovered that the KeyCode reported by JavaFX on OS-X with a
> > german keyboard layout (where eg z and y are interchanged) is wrong.
> >
> > If you press a Z you get as the KeyCode.Y and for Y you get KeyCode.Z -
> > this Y/Z problem. I don't think that I as a java-dev need to deal with
> > that and if you look at other toolkits (swing, swt) they handle this
> > transparently for me!
> >
> > I've attached you a javafx and swing application and you'll notice that
> > swing reports always the correct keycode (no matter if my keyboard
> > layout is english or german) and javafx is wrong on german keyboards.
> >
> >
> > FX:
> >> package application;
> >>
> >> import javafx.application.Application;
> >> import javafx.scene.Scene;
> >> import javafx.scene.control.TextField;
> >> import javafx.scene.layout.BorderPane;
> >> import javafx.stage.Stage;
> >>
> >>
> >> public class Main extends Application {
> >>      @Override
> >>      public void start(Stage primaryStage) {
> >>              try {
> >>                      BorderPane root = new BorderPane();
> >>
> >>                      TextField f = new TextField();
> >>                      f.setOnKeyPressed( e -> {
> >>                              System.err.println("KeyCode: " +
> e.getCode());
> >>                      });
> >>
> >>                      root.setCenter(f);
> >>
> >>                      Scene scene = new Scene(root,400,400);
> >>                      primaryStage.setScene(scene);
> >>                      primaryStage.show();
> >>              } catch(Exception e) {
> >>                      e.printStackTrace();
> >>              }
> >>      }
> >>
> >>      public static void main(String[] args) {
> >>              launch(args);
> >>      }
> >> }
> >
> > Swing:
> >> package application;
> >>
> >> import java.awt.event.KeyEvent;
> >> import java.awt.event.KeyListener;
> >>
> >> import javax.swing.JFrame;
> >> import javax.swing.JTextField;
> >>
> >> public class SampleSwing extends JFrame {
> >>      public SampleSwing() {
> >>              JTextField textField = new JTextField();
> >>              textField.addKeyListener(new KeyListener() {
> >>
> >>                      @Override
> >>                      public void keyTyped(KeyEvent e) {
> >>                              // TODO Auto-generated method stub
> >>
> >>                      }
> >>
> >>                      @Override
> >>                      public void keyReleased(KeyEvent e) {
> >>                              // TODO Auto-generated method stub
> >>
> >>                      }
> >>
> >>                      @Override
> >>                      public void keyPressed(KeyEvent e) {
> >>                              System.err.println((char)e.getKeyCode());
> >>                      }
> >>              });
> >>              getContentPane().add(textField);
> >>      }
> >>
> >>      public static void main(String[] args) {
> >>              new SampleSwing().setVisible(true);
> >>
> >>      }
> >> }
> >
> >
> >
> > Tom
> >
>
>
> --
> Thomas Schindl, CTO
> BestSolution.at EDV Systemhaus GmbH
> Eduard-Bodem-Gasse 5-7, A-6020 Innsbruck
> http://www.bestsolution.at/
> Reg. Nr. FN 222302s am Firmenbuchgericht Innsbruck
>


More information about the openjfx-dev mailing list