Как проверить, нажата ли клавиша Caps Lock?

Хорошо, прежде чем это будет помечено как возможный дубликат, я уже пробовал следующий код:

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

и т. д., если я начну с него, он будет распечатываться несмотря ни на что)

8
задан Roddy of the Frozen Peas 18 August 2012 в 18:07
поделиться