Хорошо, прежде чем это будет помечено как возможный дубликат, я уже пробовал следующий код:
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) {
}
}
И это всегда распечатка того, что начиналось как
(бывший. если я начну с заглавными буквами, даже если я отключу его сразу после этого, он напечатает:
Caps lock is now: ON
Caps lock is now: ON
Caps lock is now: ON
Caps lock is now: ON
и т. д., если я начну с него, он будет распечатываться несмотря ни на что)