Java的机器人Linux的刺激所有关键事件(Java Robot Linux stimulate

2019-10-22 12:36发布

我试图从键入键盘所有可能的密钥无论使用Java语言的机器人或布局。

我们写这有常用的方法来打印字符的超类KeyEvent.VK_AKeyEvent.VK_Z ,数KeyEvent.VK_0KeyEvent.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

一些考虑运行点

  1. 一个虚拟的点,是有可能知道按键的位置说,在行和列的格式映射? 如果是这样,其API将返回键盘行? &然后我会尽量在循环该行与该键运行。

  2. 阅读一些地方与数字键盘+ ALT键,也似乎这适用于Windows&什么,如果数字键盘,不是吗? 花了refernce从这里

  3. 我们可以创建自己的定制同样与映射有覆盖一个可能的方法是什么?(它的任何片段)

或其他任何可能的方式来输入/对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){ } 
文章来源: Java Robot Linux stimulate all key events