/*
* Copyright (c) 2010-2016, Sikuli.org, sikulix.com
* Released under the MIT License.
*
*/
package org.sikuli.script;
import java.awt.Color;
import java.awt.Rectangle;
/**
* INTERNAL USE <br>
* function template for (alternative) Robot implementations
*/
public interface IRobot {
enum KeyMode {
PRESS_ONLY, RELEASE_ONLY, PRESS_RELEASE
};
void keyDown(String keys);
void keyUp(String keys);
void keyDown(int code);
void keyUp(int code);
void keyUp();
void pressModifiers(int modifiers);
void releaseModifiers(int modifiers);
void typeChar(char character, KeyMode mode);
void typeKey(int key);
void typeStarts();
void typeEnds();
void mouseMove(int x, int y);
void mouseDown(int buttons);
int mouseUp(int buttons);
void mouseReset();
void clickStarts();
void clickEnds();
void smoothMove(Location dest);
void smoothMove(Location src, Location dest, long ms);
void mouseWheel(int wheelAmt);
ScreenImage captureScreen(Rectangle screenRect);
void waitForIdle();
void delay(int ms);
void setAutoDelay(int ms);
Color getColorAt(int x, int y);
void cleanup();
boolean isRemote();
/**
* Return the underlying device object (if any).
*/
IScreen getScreen();
}