Почему при отпускании двух клавиш не отправляется событие, посвященное отпусканию клавиш? - PullRequest
2 голосов
/ 10 сентября 2011

Следующий код работает, когда вы нажимаете одну клавишу.

@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);

Но когда вы нажимаете сначала несколько клавиш, таких как «A», а затем «B», слушатель получит только событие нажатия клавиши «B».и нет событий для "А".Таким образом, в результате ...

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

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

Клавиша "A" всегда будет оставаться верной, пока вы не нажмете ее снова и не получите событие нажатия клавиши и событие нажатия клавиши.Эта проблема не происходит с клавишами со стрелками, хотя.Вы можете нажимать несколько клавиш со стрелками, и он правильно отправляет события нажатия клавиш.

Итак, почему при нажатии клавиш «A» и «B» событие «Отпущено» не отправляется для клавиши «A»?

Ответы [ 2 ]

1 голос
/ 07 августа 2012
0 голосов
/ 10 сентября 2011

Это может в какой-то степени зависеть от вашей клавиатуры.Я не уверен, может ли это быть причиной вашей проблемы, но взгляните на эту ссылку:

http://www.tomshardware.com/forum/50383-28-pressing-multiple-keys-keyboard-problem

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...