繁体   English   中英

生成特殊字符的AWT键盘事件

[英]Generate AWT keyevent for special characters

我想为特殊字符(如£, €, µ, ½, Ö, Ä等)生成按键事件。我能够为键盘上的按键生成按键事件,例如“ 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)

在搜索此问题的解决方案时,我注意到一件事,因为这些特殊字符未映射到我的键盘上,这就是它引发此异常的原因。

任何想法,我该怎么做?

我得到了这个问题的答案..基本上,如果您要打印类似的符号,则需要“ alt”键进行键入。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM