我试图从键盘输入所有可能的键,无论使用Java Robot的语言或布局如何。
我们编写了一个超类,它有一些常用方法可以将字符KeyEvent.VK_A
打印到KeyEvent.VK_Z
,将数字KeyEvent.VK_0
打印到KeyEvent.VK_9
以及SHIFT键组合。
现在来到具体的部分,如果我们有意大利或土耳其键盘有Unicode存在或任何其他特殊字符。如何激发相同的按键或键盘释放? (因为这些字符没有有效的KeyCode)
假设我们有ò,à,ù或*,§等
我在JDK 1.6上尝试这个。这是代码片段
protected void keyPressRelease(int keyCode){
try{
this.robot.keyPress(keyCode);
this.robot.keyRelease(keyCode);
}catch(java.lang.IllegalArgumentException e){
logger.error("keyPressRelease() No key present "+KeyEvent.getKeyText(keyCode)+ " for Key Code :"+keyCode);
logger.error("Error in typing ",e);
this.errorBuilder.append("IllegalArgumentException keyPressRelease(), No key present "+KeyEvent.getKeyText(keyCode)+ " for Key Code :"+keyCode+"<br\\>");
}catch(Exception e){
logger.error("keyPressRelease() No key present "+KeyEvent.getKeyText(keyCode)+ " for Key Code :"+keyCode);
logger.error("Error in typing ",e);
this.errorBuilder.append("Exception keyPressRelease(), No key present "+KeyEvent.getKeyText(keyCode)+ " for Key Code :"+keyCode+"<br\\>");
}
}//End of keyPressRelease()
protected void shiftKeyPress(int keyCode){
this.robot.keyPress(KeyEvent.VK_SHIFT);
try{
this.robot.keyPress(keyCode);
this.robot.keyRelease(keyCode);
}catch(java.lang.IllegalArgumentException e){
logger.error("shiftKeyPress() No key present "+KeyEvent.getKeyText(keyCode)+ " for Key Code :"+keyCode);
this.errorBuilder.append("Exception shiftKeyPress(), No key present "+KeyEvent.getKeyText(keyCode)+ " for Key Code :"+keyCode+"<br\\>");
}
this.robot.keyRelease(KeyEvent.VK_SHIFT);
}//End of shiftKeyPress()
protected void typeLableName(int keyCode){
String labelName = KeyEvent.getKeyText(keyCode);
type(labelName+" ");
labelName = null;
}//End of typeLableName
//Windows 7 , normal keyboard, from Control panel changed the layout to Italy
private void checkSplCharacters(){
this.keyPressRelease(KeyEvent.VK_ENTER);
/*Start of --> § Cedilla Small*/
this.typeLableName(KeyEvent.VK_BACK_SLASH);
this.keyPressRelease(KeyEvent.VK_BACK_SLASH);
this.keyPressRelease(KeyEvent.VK_ENTER);
this.typeLableName(KeyEvent.VK_BACK_SLASH);
this.shiftKeyPress(KeyEvent.VK_BACK_SLASH);
this.keyPressRelease(KeyEvent.VK_ENTER);
/*End of --> § Cedilla Small*/
/*Start of --> ì Grave Small*/
this.typeLableName(KeyEvent.VK_PLUS);
this.keyPressRelease(KeyEvent.VK_PLUS);
this.keyPressRelease(KeyEvent.VK_ENTER);
this.typeLableName(KeyEvent.VK_PLUS);
this.shiftKeyPress(KeyEvent.VK_PLUS);
this.keyPressRelease(KeyEvent.VK_ENTER);
/*End of --> ì Grave Small*/
}//End of checkSplCharacters
记住了一些要点
虚拟点,是否可以知道键的位置,表示以行和格式的格式映射。列?如果是这样,哪个API将返回键盘行? &安培;然后我将尝试在该行中循环运行&amp;那把钥匙。
使用Numpad + ALT键读取一些地方,这似乎适用于Windows&amp;如果Numpad不存在怎么办? 参考here
我们可以为同一个&amp;和我们创建自己的自定义映射吗?有没有可能的方法来覆盖?(任何代码片段)
或者为unicode / special characters键入/执行java机器人的任何其他可能方式。
尝试下面的事情
基本上想要使用java Robot输入ò,à,ù或*,§。所以String a =“ò,à,ù或*,§”; // Unicode字符 尝试{ 机器人机器人=新机器人(); for(int i = 0; i
robot.keyPress(?);//What would be the equivalent key code for above Unicodes
}
}catch(Exception e){
}