2013-02-19 107 views
1

我有以下代碼:SWT KeyUp事件偵聽器射門鍵

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

當我按下鍵「一個」,「S」,「d」,並在同一時間「F」,則KeyDown事件按預期工作。然而,當我釋放所有鍵的同時我希望輸出是這樣的:

發佈了 發佈小號 發佈d 發佈˚F

但這種情況並非如此。什麼是打印出來通常只是一個字符,如:

發佈d

爲什麼在另外兩個或三個事件跳過了呢?

回答

2

這是一個bug

錯誤50020 - 鑰匙扣不能正常工作
在以下情況下,KeyReleased似乎未正確觸發或根本沒有: 連續按下幾個鍵。一個接一個地發佈密鑰 。 keyReleased事件觸發,但event.character始終是按下的最後一個鍵 。如果按下的最後一個鍵被釋放,則其他鍵在釋放時不會觸發釋放的事件。

的錯誤可能永遠不會(在錯誤追蹤系統裏錄入評論#1)得到修復:

評論#1
這是一個非常古老的錯誤,我們可能不會解決。問題是 ,Window中沒有足夠的信息來計算在WM_KEYUP中按下的鍵 。