P. *_*ore 8 java keyboard unit-testing awtrobot fest
你如何从一个字母的字母中获取VK代码?看起来你应该能够做类似的事情javax.swing.KeyStroke.getKeyStroke('c').getKeyCode(),但这不起作用(结果为零).如果您已经拥有KeyEvent,每个人都知道如何获取密钥代码,但如果您只想将字符转换为VK整数,该怎么办?我对获取奇怪字符的FK代码不感兴趣,只有[AZ],[az],[0-9].
这个问题的背景--------我见过的所有机器人教程都假设程序员喜欢通过发送带有VK代码的按键来拼出单词:
Run Code Online (Sandbox Code Playgroud)int keyInput[] = { KeyEvent.VK_D, KeyEvent.VK_O, KeyEvent.VK_N, KeyEvent.VK_E };//end keyInput array
叫我懒惰,但即使使用Eclipse,也无法在GUI上使用TDD.如果有人碰巧知道一个类似于机器人的类,它接受字符串,然后模拟这些字符串的用户输入(我正在使用FEST),我很想知道.
AWTKeyStroke.getAWTKeyStroke('c').getKeyCode();
Run Code Online (Sandbox Code Playgroud)
稍微澄清了佩斯的回答.它应该是单引号(表示字符),而不是双引号(表示字符串).
使用双引号将抛出java.lang.IllegalArgumentException(String格式不正确).
小智 5
也许这个丑陋的黑客:
Map<String, Integer> keyTextToCode = new HashMap<String, Integer>(256);
Field[] fields = KeyEvent.class.getDeclaredFields();
for (Field field : fields) {
String name = field.getName();
if (name.startsWith("VK_")) {
keyTextToCode.put(name.substring("VK_".length()).toUpperCase(),
field.getInt(null));
}
}
Run Code Online (Sandbox Code Playgroud)
然后,keyTextToCode将包含从字符串(例如"A"或"PAGE_UP")到vk代码的映射.