1

我有以下代码:

display.addFilter(SWT.KeyUp, new Listener()
{
    public void handleEvent(Event e)
    {
        System.out.println("Released " + e.character);
    }
};

当我同时按下“a”、“s”、“d”和“f”键时,KeyDown 事件按预期工作。但是,当我同时释放所有键时,我希望输出类似于:

发布 a 发布 s 发布 d 发布 f

但这种情况并非如此。打印出来的通常只有一个字符,例如:

发布d

为什么它会跳过其他两三个事件?

4

1 回答 1

2

这是一个错误

错误 50020 - KeyReleased 无法正常工作
在以下情况下,KeyReleased 似乎未正确触发或根本没有触发:连续按下并按住多个键。一把一把地,钥匙被释放。keyReleased 事件触发,但 event.character 始终是最后按下的键。如果最后按下的键被释放,则所有其他键在被释放时不会触发释放事件。

该错误可能永远不会得到修复(bugtracker 条目中的注释 #1):

评论 #1
这是一个非常古老的错误,我们可能不会修复。问题是 Window 中没有足够的信息来计算在 WM_KEYUP 中按下的键。

于 2013-02-20T07:43:51.017 回答