我在Windows 10(英語和俄語)上有兩種語言。我運行下面的代碼片段: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();
}
當語言設置爲英文,我按Right Alt + T
,程序正確打印[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
你確定你沒有使用'AltGr'按鈕(右'Alt')而不是標準的'Alt'按鈕(左'Alt')嗎?看起來'AltGr'的解釋與鍵盤佈局緊密相關。 –
@LorisSecuro是的,我正在使用右Alt – ZhekaKozlov