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

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

对于我来说,它总是返回false [请参见下文]。有人可以确认它是否应该正常工作,或者我滥用它,还是已知它已损坏?如果实际上已损坏,那么有人可以使用更好的方法吗?

编辑:

好吧,只是发现了更多的东西。它似乎只是返回我的程序启动之初的样子。如果我在启动该程序的情况下启动它,则它表示已启动,反之亦然。这是我的代码:
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) {
    }
}

那就总是打印出所有开始的内容

(例如,如果我以大写锁定开头,即使我紧随其后将其关闭,它也会显示:



等等,如果我先关闭它,无论如何它都会打印出来)

最佳答案

随便看看,我认为getLockingKeyState()可能坏了。

您可以尝试KeyboardUtils,但这看起来意味着您必须承担JNA开销。

10-06 14:02