Windows 10(英語とロシア語)に2つの言語があります。言語が英語に設定し、私はRight Alt + T
押しされSWTがキーの組み合わせを誤って検出する
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();
}
は、プログラムが正しく[Alt, t]
を出力します。私は、次のコードスニペットを実行します。
しかし、言語をロシア語に切り替えてRight Alt+T
を押すと、[Ctrl, Alt, t]
が印刷されます。 Ctrlキーを押さなかったため、これは間違っています。
私たちのEclipse RCPキーバインディング(Alt+F7
またはAlt+Shift+F5
など)が正しく動作しないため、これは面倒です。
SWTがCtrl
を間違って検出する理由はありますか?
最新のEclipse 4.6(SWT 3.105.0)からSWTを使用しています。
あなたはhttps://www.eclipse.org/swt/bugs.phpをチェックしましたか? – zapl
標準の「Alt」ボタン(左の「Alt」)ではなく、「AltGr」ボタン(右の「Alt」)を使用していませんか? 'AltGr'の解釈はキーボードレイアウトと密接に関連しているようです。 –
@LorisSecuroはい、私は右のAltを使用しています – ZhekaKozlov