“Windows密钥”+“其他密钥” - Java未检测到“其他密钥”

时间:2012-02-16 14:57:52

标签: java keylistener key-events

是否有任何解决方案与主题中的问题相对应。如果我按下例如Windows键+空格,我得到:

  

keyTyped:Windows

我想它应该是:

  

keyTyped:Windows
  keyTyped:空格
  keyReleased:Windows
  keyReleased:Space

我的代码:

        <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 个答案:

答案 0 :(得分:4)

WINDOWS + Space是Windows系统的有效全局热键,因此不通知您的程序(并且永远不会。)它检测到第一个笔划,因为WINDOWS键不是热键(并且只展开发布后的“开始”菜单。)这就是你没有获得发布的原因。

我不知道Java是否允许系统范围的挂钩,但你可能不得不搞乱JNI,我认为你不想处理它。