Ich habe zwei Sprachen auf meinem Windows 10 (Englisch und Russisch). Ich betreibe den folgenden Codeausschnitt:SWT erkennt Tastenkombinationen falsch
public static void main(String[] args) throws Exception {
Display display = new Display();
Shell shell = new Shell(display);
shell.setSize(640, 480);
shell.setLocation(500, 250);
shell.setText("SWT");
FillLayout layout = new FillLayout();
shell.setLayout(layout);
shell.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
List<String> keys = new ArrayList<>();
if ((e.stateMask & SWT.CTRL) != 0) {
keys.add("Ctrl");
}
if ((e.stateMask & SWT.ALT) != 0) {
keys.add("Alt");
}
if ((e.stateMask & SWT.SHIFT) != 0) {
keys.add("Shift");
}
keys.add(Character.toString((char) e.keyCode));
System.out.println(keys);
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
Wenn die Sprache auf Englisch eingestellt ist, und ich drücke Right Alt + T
, das Programm korrekt druckt [Alt, t]
. Wenn ich aber die Sprache auf Russisch umstelle und Right Alt+T
drücke, druckt das Programm [Ctrl, Alt, t]
. Das ist falsch, weil ich nicht die Strg-Taste gedrückt habe.
Das ist ärgerlich, weil unsere Eclipse RCP-Tastenbelegungen (wie Alt+F7
oder Alt+Shift+F5
) nicht richtig funktionieren.
Irgendwelche Ideen, warum SWT Ctrl
falsch erkennt?
Ich verwende SWT von der neuesten Eclipse 4.6 (SWT 3.105.0).
haben Sie https://www.eclipse.org/swt/bugs.php überprüft? – zapl
Sind Sie sicher, dass Sie nicht die Schaltfläche 'AltGr' (rechts' Alt') anstelle der Standardtaste 'Alt' (links' Alt') verwenden? Es scheint, dass die Interpretation von 'AltGr' eng mit dem Tastaturlayout verbunden ist. –
@LorisSecuro Ja, ich benutze Right Alt – ZhekaKozlov