我想在运行时知道 NUM LOCK 或 CAPS LOCK 键是打开还是关闭。但我需要以可移植的方式(适用于所有 Java 平台)来做到这一点。
以下两种方法不起作用:
1) 在 Linux 下使用 OpenJDK-6 抛出 UnsupportedOperationException: Toolkit.getLockingKeyState:
Toolkit toolkit = Toolkit.getDefaultToolkit();
boolean numlock = toolkit.getLockingKeyState(KeyEvent.VK_NUM_LOCK);
2)它显示一个框架,但我们需要这样做而不显示工件(在这里找到的想法):
import java.awt.*;
import java.awt.event.*;
public class Test {
public static void main(String[] args) throws AWTException {
// create AWT component
Frame f = new Frame();
// handle component's keyPressed event
f.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent ev) {
System.out.println(Character.isUpperCase(
ev.getKeyChar()) ?
"Caps Lock ON" :
"Caps Lock OFF");
}
});
// make component visible (otherwise the Robot won't work)
f.show();
// create Robot
Robot robot = new Robot();
// generate simple caracter key press
robot.keyPress(KeyEvent.VK_A);
}
}