“Windows键” + “其他键” - Java 不检测“其他键”

发布于 2025-01-06 10:11:19 字数 814 浏览 0 评论 0原文

有没有与主题中的问题相对应的解决方案。如果我按 Windows 键 + 空格键,我会得到:

按键类型:Windows

我想应该是:

按键类型:Windows
键输入:空格
密钥已发布:Windows
keyReleased:空格

我的代码:

        <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();
        }
    });

谢谢!

Is there any solution that corresponds to the problem from the topic. If I press e.g. Windows key + Space, I get:

keyTyped: Windows

I guess it should be:

keyTyped: Windows
keyTyped: Space
keyReleased: Windows
keyReleased: Space

My code:

        <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();
        }
    });

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

向地狱狂奔 2025-01-13 10:11:19

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

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

WINDOWS + Space is a valid global hotkey for the Windows system and therefore is not notifying your program (and will never.) It detects the first stroke because WINDOWS key is not a hotkey (and only unfolds the Start menu upon release.) That's the reason you don't get the release either.

I'm not aware if Java allows for system-wide hooks, but you'll probably have to mess with JNI, which I assume you don't want to deal with.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文