How can I programmatically generate keypress events?

Anubha picture Anubha · Aug 11, 2013 · Viewed 33.2k times · Source

What the java program should do is it should trigger keyboard press on some condition without a person pressing a keyboard key. So any program running in windows and in focus which requires keyboard input will get the input without a person actually pressing the keyboard.

I found these related questions here : question 1, question 2

I was wondering if there is any method to do this in Java.

Answer

tckmn picture tckmn · Aug 11, 2013

Use the Robot class.

Code snippet:

import java.awt.Robot;
import java.awt.KeyEvent;

Robot r = new Robot();
int keyCode = KeyEvent.VK_A; // the A key
r.keyPress(keyCode);
// later...
r.keyRelease(keyCode);

However, if you are trying to automate a task on your computer, I would recommend AutoHotKey. It's dedicated to automating common tasks, so it would be easier to use it instead of Java.