«Ключ Windows» + «другой ключ» - Java не обнаруживает «другой ключ» - PullRequest
2 голосов
/ 16 февраля 2012

Есть ли какое-либо решение, соответствующее проблеме из темы.Если я нажимаю, например, клавишу Windows + пробел, я получаю:

keyTyped: Windows

Я думаю, это должно быть:

keyTyped:Windows
keyTyped: Пробел
ключ Выпущено: Windows
ключ Выпущено: Пробел

Мой код:

        <Java component>.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
            e.consume();
        }

        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println("keyTyped: " + KeyEvent.getKeyText(e.getKeyCode()));
            e.consume();
        }

        @Override
        public void keyReleased(KeyEvent e) {
            System.out.println("keyReleased: " + KeyEvent.getKeyText(e.getKeyCode()));
            e.consume();
        }
    });

Спасибо!

1 Ответ

4 голосов
/ 16 февраля 2012

WINDOWS + Space - действительная глобальная горячая клавиша для системы Windows, и поэтому она не уведомляет вашу программу (и никогда не будет). Она обнаруживает первый удар, потому что клавиша WINDOWS не является горячей клавишей (и разворачивается только после запуска релиз.) Вот почему вы тоже не получите релиз.

Я не знаю, допускает ли Java общесистемные перехватчики, но вам, вероятно, придется связываться с JNI, с чем, я полагаю, вы не хотите иметь дело.

...