开发者

Why are some KeyEvent keycodes throwing "IllegalArgumentException: Invalid key code"?

开发者 https://www.devze.com 2023-03-19 13:30 出处:网络
I\'m trying to automate some processes using Robot and it seems certain keycodes (only symbols that require you to hold shift when typing it normally) in KeyEvent are throwing an IllegalArgumentExcept

I'm trying to automate some processes using Robot and it seems certain keycodes (only symbols that require you to hold shift when typing it normally) in KeyEvent are throwing an IllegalArgumentException. This is all the code that's running in main:

Robot r = new Robot()开发者_如何学JAVA;
r.keyPress(KeyEvent.VK_EXCLAMATION_MARK);

However, it works fine using the following workaround:

Robot r = new Robot();
r.keyPress(KeyEvent.VK_SHIFT);
r.keyPress(KeyEvent.VK_1);

Any ideas why the exception is thrown? Thanks!

Java version: 1.6.0_23


Because like the documentation for Robot.keyPress says, an IllegalArgumentException is thrown when the keycode doesn't represent a valid key, and VK_EXCLAMATION_MARK is not a valid key.

Keycodes are used to represent two things: keys on the keyboard, and "a character was typed" events. Typing a character often requires more than one keypress (in sequence, or simultaneously, or both). But Robot.keyPress simulates the act of pressing a key (hence the name), not the act of typing a character.

For more information, see the documentation for KeyEvent: http://download.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html


I don't know Robot, but isn't that because it needs to be two keys pressed to an exclamation mark to be inserted.

There are no exclamation mark key on the keyboards.

0

精彩评论

暂无评论...
验证码 换一张
取 消