如何检查是否按下了大写锁定键? [英] How do I check if the caps lock key is pressed?

查看:694
本文介绍了如何检查是否按下了大写锁定键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,在此标记为可能重复之前,我已经尝试过以下代码:

Alright, before this gets flagged as a possible duplicate, I've already tried the following code:

Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)

它总是为我返回false [见下文] 。有人可以确认这是否应该有效,我是在滥用它,或者它是否已经被打破了?如果它确实破了,有没有人有更好的方法可以使用?

And it is always returning false for me [see below]. Could someone confirm if this is supposed to be working, and I'm misusing it, or if it's known to be broken? If it is in fact broken, does anyone have a better method to use?

编辑:

好的,刚刚发现了更多东西。它似乎只是返回我的程序启动时的状态。如果我用它启动程序,它会打开它,反之亦然。这是我的代码:

Alright, just found out something more. It appears to just return what it was at the begining of my programs launch. If I start the program with it on, it says its on, and vice versa. Here's my code:

while (true) {
    boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(
        KeyEvent.VK_CAPS_LOCK);
    System.out.println("Caps lock is now: " + (isOn ? "ON" : "off"));
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
    }
}

而这只是总是打印出它开始的任何东西

And that's just always printing out whatever it started as

(例如,如果我开始大写锁定,即使我立即切换它,它打印:

(ex. if I start with caps lock on, even if I toggle it off right after, it prints:


现在大写锁定:开启

Caps lock is now: ON

大写锁定现在:开启

大写锁定现在:开启

大写锁定现在:开启

等,如果我从它开始,它将打印出来,无论如何)

etc., if I start with it off, it will print off no matter what)

推荐答案

我认为 getLockingKeyState()可能会被破坏。

你可以试试 KeyboardUtils ,但看起来这意味着你必须携带JNA开销。

You could try KeyboardUtils, but it looks like that means you have to carry JNA overhead.

这篇关于如何检查是否按下了大写锁定键?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆