2011-09-10 20 views
2

次のコードは、単一キーを押すと機能します。あなたは「」最初「B」のような複数のキーを押したとき2つのキーが押されたときにキーリリースイベントが送信されないのはなぜですか?

@Override public void handleEvent(Event evt) { 
    switch(evt.type) { 
    case SWT.KeyDown: 
     System.out.println(evt.keyCode + " pressed"); 
     break; 

    case SWT.KeyUp: 
     System.out.println(evt.keyCode + " released"); 
     break; 
    } 
} 

... 

widget.addListener(SWT.KeyDown, this); 
widget.addListener(SWT.KeyUp, this); 

しかし、リスナーは唯一の「B」と「A」のためのイベントなしで最大のキーイベントを受信します。その結果、...

switch(evt.type) { 
case SWT.KeyDown: 
    mKeyMap.get(evt.keyCode).isDown = true; 
    break; 

case SWT.KeyUp: 
    mKeyMap.get(evt.keyCode).isDown = false; 
    break; 
} 

キー「」いつもあなたは再びそれを押すまで、真のまま、キーダウンイベントとキーアップイベントを受け取ります。しかし、この問題は矢印キーでは起こりません。複数の矢印キーを押すと、キーアップイベントが正しく送信されます。

なぜ、キー "A"と "B"を押したときに、キー "A"に対してキーリリースイベントが送られないのですか?

答えて

1

周りの目線(私はゲームコードのスポットのために同じ問題を抱えているように)私は見つかったこのEclipseのバグ:問題は、いくつかの8年前から出回っておよび/解くいつでもすぐにパッチが適用される可能性はないているよう

Bug 50020 - KeyReleased not working correctly.

は思えます。 :(

関連する問題