Moved to Maven

This commit is contained in:
JKetelaar
2015-09-13 22:51:13 +02:00
parent a3bf8d0d0d
commit 52836a3e9a
303 changed files with 56775 additions and 35 deletions
@@ -0,0 +1,225 @@
package org.parabot.environment.input;
import java.awt.Component;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.HashMap;
import java.util.Random;
import org.parabot.core.Context;
/**
*
* Virtual keyboard, dispatches key events to a component.
*
* @author Everel, Matt, Dane
*
*/
public class Keyboard implements KeyListener {
private static HashMap<Character, Character> specialChars;
private Component component;
private long pressTime;
public Keyboard(Component component) {
this.component = component;
}
public static Keyboard getInstance() {
return Context.getInstance().getKeyboard();
}
static {
char[] spChars = { '~', '!', '@', '#', '%', '^', '&', '*', '(', ')',
'_', '+', '{', '}', ':', '<', '>', '?', '"', '|' };
char[] replace = { '`', '1', '2', '3', '5', '6', '7', '8', '9', '0',
'-', '=', '[', ']', ';', ',', '.', '/', '\'', '\\' };
specialChars = new HashMap<Character, Character>(spChars.length);
for (int x = 0; x < spChars.length; ++x)
specialChars.put(spChars[x], replace[x]);
}
private static long getRandom() {
Random rand = new Random();
return rand.nextInt(100) + 40;
}
public void sendKeys(String s) {
pressTime = System.currentTimeMillis();
for (char c : s.toCharArray())
for (KeyEvent ke : createKeyClick(component, c)) {
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
sendKeyEvent(ke);
}
clickKey(10);
}
public void clickKey(char c) {
pressTime = System.currentTimeMillis();
for (KeyEvent ke : createKeyClick(component, c))
sendKeyEvent(ke);
}
public void clickKey(int keyCode) {
pressTime = System.currentTimeMillis();
for (KeyEvent ke : createKeyClick(component, keyCode))
sendKeyEvent(ke);
}
public void pressKey(int keyCode) {
pressTime = System.currentTimeMillis();
KeyEvent ke = createKeyPress(component, keyCode);
sendKeyEvent(ke);
}
public void releaseKey(int keyCode) {
pressTime = System.currentTimeMillis();
KeyEvent ke = createKeyRelease(component, keyCode);
sendKeyEvent(ke);
}
private KeyEvent[] createKeyClick(Component target, char c) {
pressTime += 2 * getRandom();
Character newChar = specialChars.get(c);
int keyCode = Character.toUpperCase((newChar == null) ? c : newChar);
if (Character.isLowerCase(c)
|| (!Character.isLetter(c) && (newChar == null))) {
KeyEvent pressed = new KeyEvent(target, KeyEvent.KEY_PRESSED,
pressTime, 0, keyCode, c);
KeyEvent typed = new KeyEvent(target, KeyEvent.KEY_TYPED,
pressTime, 0, 0, c);
pressTime += getRandom();
KeyEvent released = new KeyEvent(target, KeyEvent.KEY_RELEASED,
pressTime, 0, keyCode, c);
return new KeyEvent[] { pressed, typed, released };
} else {
KeyEvent shiftDown = new KeyEvent(target, KeyEvent.KEY_PRESSED,
pressTime, KeyEvent.SHIFT_MASK, KeyEvent.VK_SHIFT,
KeyEvent.CHAR_UNDEFINED);
pressTime += getRandom();
KeyEvent pressed = new KeyEvent(target, KeyEvent.KEY_PRESSED,
pressTime, KeyEvent.SHIFT_MASK, keyCode, c);
KeyEvent typed = new KeyEvent(target, KeyEvent.KEY_TYPED,
pressTime, KeyEvent.SHIFT_MASK, 0, c);
pressTime += getRandom();
KeyEvent released = new KeyEvent(target, KeyEvent.KEY_RELEASED,
pressTime, KeyEvent.SHIFT_MASK, keyCode, c);
pressTime += getRandom();
KeyEvent shiftUp = new KeyEvent(target, KeyEvent.KEY_RELEASED,
pressTime, 0, KeyEvent.VK_SHIFT, KeyEvent.CHAR_UNDEFINED);
return new KeyEvent[] { shiftDown, pressed, typed, released,
shiftUp };
}
}
private KeyEvent[] createKeyClick(Component target, int keyCode) {
int modifier = 0;
switch (keyCode) {
case KeyEvent.VK_SHIFT:
modifier = KeyEvent.SHIFT_MASK;
break;
case KeyEvent.VK_ALT:
modifier = KeyEvent.ALT_MASK;
break;
case KeyEvent.VK_CONTROL:
modifier = KeyEvent.CTRL_MASK;
break;
}
KeyEvent pressed = new KeyEvent(target, KeyEvent.KEY_PRESSED,
pressTime, modifier, keyCode, KeyEvent.CHAR_UNDEFINED);
KeyEvent released = new KeyEvent(target, KeyEvent.KEY_RELEASED,
pressTime + getRandom(), 0, keyCode, KeyEvent.CHAR_UNDEFINED);
return new KeyEvent[] { pressed, released };
}
private KeyEvent createKeyPress(Component target, int keyCode) {
int modifier = 0;
switch (keyCode) {
case KeyEvent.VK_SHIFT:
modifier = KeyEvent.SHIFT_MASK;
break;
case KeyEvent.VK_ALT:
modifier = KeyEvent.ALT_MASK;
break;
case KeyEvent.VK_CONTROL:
modifier = KeyEvent.CTRL_MASK;
break;
}
KeyEvent pressed = new KeyEvent(target, KeyEvent.KEY_PRESSED,
pressTime, modifier, keyCode, KeyEvent.CHAR_UNDEFINED);
return pressed;
}
private KeyEvent createKeyRelease(Component target, int keyCode) {
@SuppressWarnings("unused")
int modifier = 0;
switch (keyCode) {
case KeyEvent.VK_SHIFT:
modifier = KeyEvent.SHIFT_MASK;
break;
case KeyEvent.VK_ALT:
modifier = KeyEvent.ALT_MASK;
break;
case KeyEvent.VK_CONTROL:
modifier = KeyEvent.CTRL_MASK;
break;
}
KeyEvent released = new KeyEvent(target, KeyEvent.KEY_RELEASED,
pressTime + getRandom(), 0, keyCode, KeyEvent.CHAR_UNDEFINED);
return released;
}
public void sendKeyEvent(KeyEvent e) {
for (KeyListener kl : component.getKeyListeners()) {
if(kl instanceof Keyboard) {
continue;
}
if (!e.isConsumed()) {
switch (e.getID()) {
case KeyEvent.KEY_PRESSED:
kl.keyPressed(e);
break;
case KeyEvent.KEY_RELEASED:
kl.keyReleased(e);
break;
case KeyEvent.KEY_TYPED:
kl.keyTyped(e);
break;
}
}
}
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
@@ -0,0 +1,163 @@
package org.parabot.environment.input;
import org.parabot.core.Context;
import org.parabot.environment.api.utils.Time;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
/**
*
* A virtual mouse, dispatches mouse events to a component
*
* @author Everel
*
*/
public class Mouse implements MouseListener, MouseMotionListener {
private Component component;
private int x;
private int y;
public Mouse(Component component) {
this.component = component;
}
public static Mouse getInstance() {
return Context.getInstance().getMouse();
}
/**
* Moves the mouse to the given point and clicks
* @param x
* @param y
* @param left
*/
public void click(final int x, final int y, final boolean left) {
moveMouse(x, y);
Time.sleep(50, 200);
pressMouse(x, y, left);
Time.sleep(10, 100);
releaseMouse(x, y, left);
Time.sleep(10, 100);
clickMouse(x, y, left);
}
public void pressMouse(int x, int y, boolean left) {
MouseEvent me = new MouseEvent(component,
MouseEvent.MOUSE_PRESSED, System.currentTimeMillis(), 0, x,
y, 1, false, left ? MouseEvent.BUTTON1 : MouseEvent.BUTTON3);
for(MouseListener l : component.getMouseListeners()) {
if(!(l instanceof Mouse)) {
l.mousePressed(me);
}
}
}
public void click(final Point p, final boolean left) {
click(p.x, p.y, left);
}
public void click(final Point p) {
click(p.x, p.y, true);
}
public void clickMouse(int x, int y, boolean left) {
try {
MouseEvent me = new MouseEvent(component,
MouseEvent.MOUSE_CLICKED, System.currentTimeMillis(), 0, x,
y, 0, false, left ? MouseEvent.BUTTON1 : MouseEvent.BUTTON3);
for(MouseListener l : component.getMouseListeners()) {
if(!(l instanceof Mouse)) {
l.mouseClicked(me);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void releaseMouse(int x, int y, boolean left) {
try {
MouseEvent me = new MouseEvent(component,
MouseEvent.MOUSE_RELEASED, System.currentTimeMillis(), 0, x,
y, 0, false, left ? MouseEvent.BUTTON1 : MouseEvent.BUTTON3);
for(MouseListener l : component.getMouseListeners()) {
if(!(l instanceof Mouse)) {
l.mouseReleased(me);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Moves the mouse cursor to the given location
* @param x
* @param y
*/
public void moveMouse(int x, int y) {
try {
MouseEvent me = new MouseEvent(component,
MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, x,
y, 0, false);
for(MouseMotionListener l : component.getMouseMotionListeners()) {
if(!(l instanceof Mouse)) {
l.mouseMoved(me);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Mouse cursor current location
* @return point
*/
public Point getPoint() {
return new Point(x, y);
}
@Override
public void mouseMoved(MouseEvent e) {
x = e.getX();
y = e.getY();
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}