将 Char 转换为 Java KeyEvent KeyCode

2022-09-03 04:06:03

我正在编写一个基本程序,要求用户键入字符串,并且我正在尝试使用机器人(来自),它将在延迟后将此消息键入回另一个文档。我现在遇到的问题是,我需要将我从中获得的任何内容转换为KeyCode。有没有更好的方法来做我想做的事情?我想我总是可以有一个巨大的switch语句来获得适当的KeyCode,但我希望会有一种更优雅的方式。我的第一个想法,在做了一段时间的python之后,是制作一个字符串并以某种方式将其转换为代码,但我认为唯一的方法是使用Reflectle,这是不鼓励的。java.awt.Robotmessage.charAt(i)KeyEvent.VK_[insert Char]"KeyEvent.VK_" + message.charAt(i)


答案 1

如果我有一个Unicode字符,我只想知道它的击键,那么我使用

int keyCode = java.awt.event.KeyEvent.getExtendedKeyCodeForChar(charCode);

我从来不需要另一种更复杂的方法来做到这一点。


答案 2

你可以用这个来解决问题:

KeyStroke ks = KeyStroke.getKeyStroke('k', 0);
System.out.println(ks.getKeyCode());

或者只是使用这个:

private void writeString(String s) {
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (Character.isUpperCase(c)) {
            robot.keyPress(KeyEvent.VK_SHIFT);
        }
        robot.keyPress(Character.toUpperCase(c));
        robot.keyRelease(Character.toUpperCase(c));

        if (Character.isUpperCase(c)) {
            robot.keyRelease(KeyEvent.VK_SHIFT);
        }
    }
    robot.delay(delay);
}