好吧,在将其标记为可能的重复项之前,我已经尝试过以下代码:
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开销。