Прослушивание событий клавиатуры вне приложения Java
Пытаюсь создать приложение, которое при нажатии на определенную клавишу клавиатуры, будет автоматически нажимать другие комбинации клавиш, например:
при нажатии на клавишу R - будет срабатывать комбинация Right Shift + S
В процессе написания столкнуля с рядом проблем:
1) как сделать так, что бы программа мониторила нажатие клавиш при неактивном окне приложения?
2) как вызвать автоматическое нажатие правого шифта, или другой клавиши, имеющей 2 физических ключа на клавиатуре (важно нажать именно конкретную клавишу).
Буду благодарен за любую помощь.
Мой код:
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class MyFrame extends JFrame {
static Robot robot;
{
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
public MyFrame(String Cap) {
super(Cap);
setSize(new Dimension(500, 500));
setVisible(true);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent evt) {
switch (evt.getKeyCode()) {
case KeyEvent.VK_R:
feintOne();
break;
}
}
});
}
public static void feintOne() {
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_S);
}
public static void main(String[] args) {
MyFrame myFrame = new MyFrame("Don't mention it");
}
}