我试图从键入键盘所有可能的密钥无论使用Java语言的机器人或布局。
我们写这有常用的方法来打印字符的超类KeyEvent.VK_A
到KeyEvent.VK_Z
,数KeyEvent.VK_0
到KeyEvent.VK_9
与SHIFT键组合一起。
现在来就是,如果我们有意大利或者是有Unicode的存在,或者是否有其他特殊字符土耳其键盘特定部分。 我如何能刺激相同按键或keyrelease? (因为没有存在用于这样的字符有效邀请码)
假设我们有O,A,U或*,§等
我在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将返回键盘行? &然后我会尽量在循环该行与该键运行。
阅读一些地方与数字键盘+ ALT键,也似乎这适用于Windows&什么,如果数字键盘,不是吗? 花了refernce从这里
我们可以创建自己的定制同样与映射有覆盖一个可能的方法是什么?(它的任何片段)
或其他任何可能的方式来输入/对Unicode /特殊字符执行的Java机器人。
我想一些什么东西下面
基本上要O型,A,U或*,§,用java机器人。 所以,一个字符串= “O,A,U或*§”; // Unicode的charactres尝试{机器人机器人=新机器人(); 对(INT I = 0;我
robot.keyPress(?);//What would be the equivalent key code for above Unicodes } }catch(Exception e){ }