2

NUM LOCK または CAPS LOCK キーがオンかオフかを実行時に知りたいです。しかし、移植可能な方法でそれを行う必要があります (すべての Java プラットフォームに対して)。

次の 2 つの方法は機能しません。

1) OpenJDK-6 を使用する Linux では 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);  

    }

}
4

0 に答える 0