使用JNA或JNI模拟Windows中按下的键

我想模拟Java中的按键。 其他人已经尝试使用机器人。 这只允许一个primefaces按键,我想模拟一个按键保持(一秒钟),并释放。 所以,我需要使用JNA或JNI。

我研究了JNative,但是这似乎是在操作系统级别上消费关键事件,而不是在操作系统级别生成它们。 我怎样才能从Java生成这样的事件?

谢谢

其实,使用机器人你可以按住一个键第二。

Robot r = ... r.keyPress(KeyEvent.VK_A); Thread.sleep(1000); r.keyRelease(KeyEvent.VK_A); 

从JavaDoc:

 void java.awt.Robot.keyPress(int keycode) Presses a given key. The key should be released using the keyRelease method. 

编辑:添加一个示例:

  Robot robot = new Robot(); System.out.println("You have 2 seconds to jump to the target window..."); Thread.sleep(2000); robot.keyPress( KeyEvent.VK_A); robot.keyRelease( KeyEvent.VK_A); robot.keyPress( KeyEvent.VK_SHIFT); robot.keyPress( KeyEvent.VK_A); robot.keyRelease( KeyEvent.VK_SHIFT); robot.keyRelease( KeyEvent.VK_A); Thread.sleep(2000); 

输出到目标窗口:

  aA 

(我知道这不是你想要的,但是我将它作为参考添加给未来的读者,所以他们不认为JavaDoc或Robot中存在错误)