E ae galera do mal,
Estou querendo fazer um robo para dominar o mundo :twisted: , mas ele parou no “Ç” " e ’ :roll:
se alguém tiver alguma idéia de código e quiser compartilhar
se alguém quiser pegar esse robo (Darth) como base…
O Darth Vader reune várias funcionalidades, claro que pode ser agregado mais métodos
se alguém tiver algum ai, manda ver, vai legal contruir algo em grupo
Aqui reuni vários tutorias na internet, acho que serve como uma boa base
Está pegando todas as acentuções,
Só está parado no Ç, ç , " , ’ e o ? está saindo como /
Boa sorte a todos, Obrigado!
Mapeamento de todos os caracteres
package br.com.teste;
import java.awt.event.KeyEvent;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public final class MapaCaracteres {
public static final Map<Character, Integer> KEYS;
static {
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (char c = 'A'; c <= 'Z'; c++) {
map.put(c, (int) c);
}
for (char c = '0'; c <= '9'; c++) {
map.put(c, (int) c);
}
for (char c = '\b'; c <= '\n'; c++) {
map.put(c, (int) c);
}
for(char c='À';c<='Ä';c++){
map.put(c, 65);
}
for(char c='È';c<='Ë';c++){
map.put(c, 69);
}
for(char c='Ì';c<='Ï';c++){
map.put(c, 73);
}
for(char c='Ò';c<='Ö';c++){
map.put(c, 79);
}
for(char c='Ù';c<='Ü';c++){
map.put(c, 85);
}
map.put('\'', KeyEvent.VK_QUOTEDBL);
map.put('\"', KeyEvent.VK_QUOTEDBL);
map.put('!', KeyEvent.VK_1);
map.put('@', KeyEvent.VK_2);
map.put('#', KeyEvent.VK_3);
map.put('$', KeyEvent.VK_4);
map.put('%', KeyEvent.VK_5);
map.put('¨', KeyEvent.VK_6);
map.put('&', KeyEvent.VK_7);
map.put('*', KeyEvent.VK_8);
map.put('(', KeyEvent.VK_9);
map.put(')', KeyEvent.VK_0);
map.put('-', KeyEvent.VK_MINUS);
map.put('_', KeyEvent.VK_MINUS);
map.put('+', KeyEvent.VK_EQUALS);
map.put('=', KeyEvent.VK_EQUALS);
map.put('`', KeyEvent.VK_DEAD_ACUTE);
map.put('´', KeyEvent.VK_DEAD_ACUTE);
map.put('~', KeyEvent.VK_DEAD_TILDE);
map.put('^', KeyEvent.VK_DEAD_TILDE);
map.put('[', KeyEvent.VK_OPEN_BRACKET);
map.put(']', KeyEvent.VK_CLOSE_BRACKET);
map.put('{', KeyEvent.VK_OPEN_BRACKET);
map.put('}', KeyEvent.VK_CLOSE_BRACKET);
map.put('Ç', KeyEvent.VK_DEAD_CEDILLA);
map.put('\\',KeyEvent.VK_BACK_SLASH);
map.put('|', KeyEvent.VK_BACK_SLASH);
map.put(',', KeyEvent.VK_COMMA);
map.put('<', KeyEvent.VK_COMMA);
map.put('.', KeyEvent.VK_PERIOD);
map.put('>', KeyEvent.VK_PERIOD);
map.put(';', KeyEvent.VK_SEMICOLON);
map.put(':', KeyEvent.VK_SEMICOLON);
map.put('/', KeyEvent.VK_DIVIDE);
map.put('?', KeyEvent.VK_DIVIDE);
map.put(' ', KeyEvent.VK_SPACE);
KEYS = Collections.unmodifiableMap(map);
}
private MapaCaracteres() {
// can not instantiate
}
}
Principais funcionalidades
package br.com.teste;
import static br.com.teste.MapaCaracteres.KEYS;
import static java.awt.event.InputEvent.BUTTON1_MASK;
import static java.awt.event.InputEvent.BUTTON2_MASK;
import static java.awt.event.KeyEvent.VK_NUMBER_SIGN;
import static java.awt.event.KeyEvent.VK_SHIFT;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public final class DarthVader {
private Robot robot;
private BufferedImage imagemArquivo, imagemPedaco,imagemInteira;
public DarthVader(Robot robot) throws NullPointerException {
if (robot == null) {
throw new NullPointerException();
}
this.robot = robot;
}
public void clique(int x, int y) {
robot.mouseMove(x, y);
robot.mousePress(BUTTON1_MASK);
robot.mouseRelease(BUTTON1_MASK);
}
public void cliqueDireito(int x, int y) {
robot.mouseMove(x, y);
robot.mousePress(BUTTON2_MASK);
robot.mouseRelease(BUTTON2_MASK);
}
public void datilografar(int key) {
robot.keyPress(key);
robot.keyRelease(key);
}
public void datilografarSequencia(int... keys) {
for (int i = 0; i < keys.length; i++) {
robot.keyPress(keys[i]);
}
for (int i = keys.length - 1; i >= 0; i--) {
robot.keyRelease(keys[i]);
}
}
public void rolarMouse(int rotacao){
robot.mouseWheel(rotacao);
}
public void datilografar(String string) {
char acento=' ';
for (char c : string.toCharArray()) {
acento=precisaAcentuar(c);
if(acento!=' '){
escreve(acento);
escreve(c);
}else{
escreve(c);
}
}
}
private void escreve(char c){
if (Character.isUpperCase(c) || precisaPrecionarShift(c)) {
robot.keyPress(VK_SHIFT);
}
Integer i = KEYS.get(Character.toUpperCase(c));
if (i == null) {
i = VK_NUMBER_SIGN;
}
datilografar(i);
if (Character.isUpperCase(c) || precisaPrecionarShift(c)) {
robot.keyRelease(VK_SHIFT);
}
}
private boolean precisaPrecionarShift(char c) {
return c == '!' || c == '@' || c == '#' || c == '$' || c == '%'|| c == '¨'
|| c == '&' || c == '*' || c == '(' || c == ')' || c == '`'|| c == '_'
|| c == '{'|| c == '+' || c == '}' || c == '^' || c == '?' || c == ':'
|| c == '>' || c == '<' || c == '|' || c == '\"' || c == '\'';
}
private char precisaAcentuar(char c){
if(c=='Á'||c=='É'||c=='Í'||c=='Ó'||c=='Ú'||
c=='á'||c=='é'||c=='í'||c=='ó'||c=='ú'){
return '´';
}else if(c=='Â'||c=='Ê'||c=='Î'||c=='Ô'||c=='Û'||c=='â'||
c=='ê'||c=='î'||c=='ô'||c=='û'){
return '^';
}else if(c=='Ã'||c=='Õ'||c=='ã'||c=='õ'){
return '~';
}else if(c=='À'||c=='È'||c=='Ì'||c=='Ò'||c=='Ù'||c=='à'||
c=='è'||c=='ì'||c=='ò'||c=='ù'){
return '`';
}else if(c=='Ä'||c=='Ë'||c=='Ï'||c=='Ö'||c=='Ü'||c=='ä'||
c=='ë'||c=='ï'||c=='ö'||c=='ü'){
return '¨';
}else{
return ' ';
}
}
private boolean compararImagens(BufferedImage image1, BufferedImage image2) {
if(image1.getWidth() != image2.getWidth() || image1.getHeight()
!= image2.getHeight())
return false;
for(int x = 0; x < image1.getWidth(); x++) {
for(int y = 0; y < image1.getHeight(); y++) {
if(image1.getRGB(x, y) != image2.getRGB(x, y))
return false;
}
}
return true;
}
public void capturarImagemPedaco(int inicioH,int inicioV,int altura,int largura){
imagemPedaco = robot.createScreenCapture(new Rectangle(inicioH, inicioV,altura,
largura));
}
public void capturarImagem(){
Toolkit toolkit = Toolkit.getDefaultToolkit();
final Dimension dimension = toolkit.getScreenSize();
while (true) {
// Pegando a imagem e gravando
imagemInteira = robot.createScreenCapture(new Rectangle(0, 0,
dimension.width, dimension.height));
try {
ImageIO.write(imagemInteira, "JPEG", new File("C:\\LogalSavamento.JPEG"));
} catch (IOException e) {
System.out.println("Não foi possivel Guardar a imagem");
e.printStackTrace();
}
}
}
public void carregarImagem(String arquivo){
try {
imagemArquivo = ImageIO.read(new File(arquivo));
} catch (IOException e) {
System.out.println("Não foi possível carregar o arquivo");
e.printStackTrace();
}
}
}
Classe de teste das funcionalidades
package br.com.teste;
import java.awt.AWTException;
import java.awt.Robot;
import java.io.IOException;
public class Teste1 {
public static void main(String[] args) throws AWTException, IOException{
Robot robo= new Robot();
DarthVader rob= new DarthVader(robo);
Runtime.getRuntime().exec("notepad" );
robo.delay(1500);
rob.datilografar("O cachorro é português, é sim ão ão ão üüÜ, !@#$%¨&*()_+{}`^?;.,<>:ããõ");
// for(int i=0;i<256;i++){
// System.out.println("Valor de i: "+i+"Ascii: "+(char)i);
// }
}
}