gpt4 book ai didi

java - SWT 错误地检测组合键

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:52 25 4
gpt4 key购买 nike

我的 Windows 10 上有两种语言(英语和俄语)。我运行以下代码片段:

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 键绑定(bind)(例如 Alt+F7Alt+Shift+F5 )无法正常工作。

SWT 错误检测的任何想法 Ctrl

我使用的是最新 Eclipse 4.6 (SWT 3.105.0) 中的 SWT。

最佳答案

由于历史原因,非美国键盘布局中使用的 AltGr(右 Alt)键会被操作系统自动转换为 Ctrl + Alt ( see Wikipedia about this )。

所以这与 SWT 没有具体关系。

为避免此问题,用户应仅使用标准 Alt(左 Alt)键。

关于java - SWT 错误地检测组合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38783375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com