0

我想为特殊字符£, €, µ, ½, Ö, Ä等生成键事件。我可以使用以下代码为键盘上的键生成键事件,例如“A、B、c、%、*、^”等:

public static void generateKeyEvent(final int c) {

        new Thread() {
            public void run() {

                try {
                    Robot robot = new Robot();
                    robot.keyPress(c);

                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                    }
                    robot.keyRelease(c);
                } catch (Exception e) {
                e.printStackTrace();
                }
            }
        }.start();

    }

在正常字符的情况下,它工作正常,但在我上面提到的字符的情况下,代码会引发以下异常:

java.lang.IllegalArgumentException: Invalid key code
at sun.awt.windows.WRobotPeer.keyPress(Native Method)
at java.awt.Robot.keyPress(Unknown Source)
at com.companyname.utils.Abc$1.run(Abc.java:286)

我在寻找这个问题的解决方案时注意到的一件事,因为这些特殊字符没有映射到我的键盘上,这就是它抛出这个异常的原因。

任何想法,我该怎么做?

4

2 回答 2

1

我得到了这个问题的答案..基本上如果你想打印那些符号,那么你需要“alt”键来输入。

例如:如果您需要在记事本中输入“é”,则必须输入 alt+130。

所以我做了同样的事情,我为 alt 生成了键事件,然后为 numpad 1 然后为 numpad3,最后为 numpad0。

于 2012-05-22T11:42:49.597 回答
0

你是如何传递钥匙的?请注意,Robot.keyPress 需要键码,而不是字符。看看KeyEvent 常量。有一个VK_EURO_SIGN,不确定其他的。您应该能够通过实现KeyListener并在按下特定键(键组合)时检查KeyEvent.getKeyCode()来获取任意键代码。

于 2012-05-18T12:10:20.570 回答