Problemas com digitação da tecla barra (/) e interrogação (?) com Robot

3 respostas
R

Boa noite a todos !

Estou mexendo com a classe robot , mas não consegui simular o pressionamento das teclas / e ? , recebo uma exceção de invalid key code.

Acabei fazendo uma P.O.G (Programação Orientada a Gambiarras) , vejam abaixo:

case '/': 
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_NUMPAD0);
robot.keyRelease(KeyEvent.VK_NUMPAD0);
robot.keyPress(KeyEvent.VK_NUMPAD4);
robot.keyRelease(KeyEvent.VK_NUMPAD4);
robot.keyPress(KeyEvent.VK_NUMPAD7);
robot.keyRelease(KeyEvent.VK_NUMPAD7);
robot.keyRelease(KeyEvent.VK_ALT);
break;
		case '?': 
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_NUMPAD0);
robot.keyRelease(KeyEvent.VK_NUMPAD0);
robot.keyPress(KeyEvent.VK_NUMPAD6);
robot.keyRelease(KeyEvent.VK_NUMPAD6);
robot.keyPress(KeyEvent.VK_NUMPAD3);
robot.keyRelease(KeyEvent.VK_NUMPAD3);
robot.keyRelease(KeyEvent.VK_ALT);
break;

Segue uma classe que criei para trabalhar com o Robot ( para quem achar util pode usar a vontade :slight_smile: ).

/*       AutoKey 1.0
 * Desenvolvido por Rafael Costa Teixeira.
 * CopyRight GNU GPL v2 2012
 * 
 * Para teclados ABNT2
 */

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;


public class AutoKey {

	Robot robot;
	
	public AutoKey() {
		
		try {
			robot = new Robot();
			
			//robot.delay(5000);
			
		} catch (AWTException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	public void keyPress( char key ) {
		
		//robot.delay(1000);

		switch( key ) {
		
		case 'a': robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_A);break;
		case 'b': robot.keyPress(KeyEvent.VK_B);robot.keyRelease(KeyEvent.VK_B);break;
		case 'c': robot.keyPress(KeyEvent.VK_C);robot.keyRelease(KeyEvent.VK_C);break;
		case 'd': robot.keyPress(KeyEvent.VK_D);robot.keyRelease(KeyEvent.VK_D);break;
		case 'e': robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_E);break;
		case 'f': robot.keyPress(KeyEvent.VK_F);robot.keyRelease(KeyEvent.VK_F);break;
		case 'g': robot.keyPress(KeyEvent.VK_G);robot.keyRelease(KeyEvent.VK_G);break;
		case 'h': robot.keyPress(KeyEvent.VK_H);robot.keyRelease(KeyEvent.VK_H);break;
		case 'i': robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_I);break;
		case 'j': robot.keyPress(KeyEvent.VK_J);robot.keyRelease(KeyEvent.VK_J);break;
		case 'k': robot.keyPress(KeyEvent.VK_K);robot.keyRelease(KeyEvent.VK_K);break;
		case 'l': robot.keyPress(KeyEvent.VK_L);robot.keyRelease(KeyEvent.VK_L);break;
		case 'm': robot.keyPress(KeyEvent.VK_M);robot.keyRelease(KeyEvent.VK_M);break;
		case 'n': robot.keyPress(KeyEvent.VK_N);robot.keyRelease(KeyEvent.VK_N);break;
		case 'o': robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_O);break;
		case 'p': robot.keyPress(KeyEvent.VK_P);robot.keyRelease(KeyEvent.VK_P);break;
		case 'q': robot.keyPress(KeyEvent.VK_Q);robot.keyRelease(KeyEvent.VK_Q);break;
		case 'r': robot.keyPress(KeyEvent.VK_R);robot.keyRelease(KeyEvent.VK_R);break;
		case 's': robot.keyPress(KeyEvent.VK_S);robot.keyRelease(KeyEvent.VK_S);break;
		case 't': robot.keyPress(KeyEvent.VK_T);robot.keyRelease(KeyEvent.VK_T);break;
		case 'u': robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_U);break;
		case 'v': robot.keyPress(KeyEvent.VK_V);robot.keyRelease(KeyEvent.VK_V);break;
		case 'w': robot.keyPress(KeyEvent.VK_W);robot.keyRelease(KeyEvent.VK_W);break;
		case 'x': robot.keyPress(KeyEvent.VK_X);robot.keyRelease(KeyEvent.VK_X);break;
		case 'y': robot.keyPress(KeyEvent.VK_Y);robot.keyRelease(KeyEvent.VK_Y);break;
		case 'z': robot.keyPress(KeyEvent.VK_Z);robot.keyRelease(KeyEvent.VK_Z);break;
		
		case 'A': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_A);break;
		case 'B': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_B);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_B);break;
		case 'C': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_C);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_C);break;
		case 'D': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_D);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_D);break;
		case 'E': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_E);break;
		case 'F': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_F);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_F);break;
		case 'G': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_G);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_G);break;
		case 'H': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_H);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_H);break;
		case 'I': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_I);break;
		case 'J': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_J);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_J);break;
		case 'K': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_K);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_K);break;
		case 'L': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_L);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_L);break;
		case 'M': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_M);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_M);break;
		case 'N': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_N);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_N);break;
		case 'O': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_O);break;
		case 'P': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_P);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_P);break;
		case 'Q': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_Q);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_Q);break;
		case 'R': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_R);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_R);break;
		case 'S': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_S);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_S);break;
		case 'T': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_T);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_T);break;
		case 'U': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_U);break;
		case 'V': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_V);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_V);break;
		case 'W': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_W);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_W);break;
		case 'X': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_X);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_X);break;
		case 'Y': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_Y);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_Y);break;
		case 'Z': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_Z);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_Z);break;
		
		case ':': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_SEMICOLON);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_SEMICOLON);break;
		case ';': robot.keyPress(KeyEvent.VK_SEMICOLON);robot.keyRelease(KeyEvent.VK_SEMICOLON);break;
		
		case '1': robot.keyPress(KeyEvent.VK_1);robot.keyRelease(KeyEvent.VK_1);break;
		case '2': robot.keyPress(KeyEvent.VK_2);robot.keyRelease(KeyEvent.VK_2);break;
		case '3': robot.keyPress(KeyEvent.VK_3);robot.keyRelease(KeyEvent.VK_3);break;
		case '4': robot.keyPress(KeyEvent.VK_4);robot.keyRelease(KeyEvent.VK_4);break;
		case '5': robot.keyPress(KeyEvent.VK_5);robot.keyRelease(KeyEvent.VK_5);break;
		case '6': robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_6);break;
		case '7': robot.keyPress(KeyEvent.VK_7);robot.keyRelease(KeyEvent.VK_7);break;
		case '8': robot.keyPress(KeyEvent.VK_8);robot.keyRelease(KeyEvent.VK_8);break;
		case '9': robot.keyPress(KeyEvent.VK_9);robot.keyRelease(KeyEvent.VK_9);break;
		case '0': robot.keyPress(KeyEvent.VK_0);robot.keyRelease(KeyEvent.VK_0);break;
		
		case '!': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_1);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_1);break;
		case '@': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_2);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_2);break;
		case '#': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_3);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_3);break;
		case '$': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_4);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_4);break;
		case '%': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_5);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_5);break;
		case '¨': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);break;
		case '&': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_7);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_7);break;
		case '*': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_8);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_8);break;
		case '(': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_9);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_9);break;
		case ')': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_0);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_0);break;
		
		case '/': robot.keyPress(KeyEvent.VK_ALT);robot.keyPress(KeyEvent.VK_NUMPAD0);robot.keyRelease(KeyEvent.VK_NUMPAD0);robot.keyPress(KeyEvent.VK_NUMPAD4);robot.keyRelease(KeyEvent.VK_NUMPAD4);robot.keyPress(KeyEvent.VK_NUMPAD7);robot.keyRelease(KeyEvent.VK_NUMPAD7);robot.keyRelease(KeyEvent.VK_ALT);break;
		case '?': robot.keyPress(KeyEvent.VK_ALT);robot.keyPress(KeyEvent.VK_NUMPAD0);robot.keyRelease(KeyEvent.VK_NUMPAD0);robot.keyPress(KeyEvent.VK_NUMPAD6);robot.keyRelease(KeyEvent.VK_NUMPAD6);robot.keyPress(KeyEvent.VK_NUMPAD3);robot.keyRelease(KeyEvent.VK_NUMPAD3);robot.keyRelease(KeyEvent.VK_ALT);break;
		case '\\': robot.keyPress(KeyEvent.VK_BACK_SLASH);robot.keyRelease(KeyEvent.VK_BACK_SLASH);break;
		case '|': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_BACK_SLASH);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_BACK_SLASH);break;
		case '[': robot.keyPress(KeyEvent.VK_OPEN_BRACKET);robot.keyRelease(KeyEvent.VK_OPEN_BRACKET);break;
		case ']': robot.keyPress(KeyEvent.VK_CLOSE_BRACKET);robot.keyRelease(KeyEvent.VK_CLOSE_BRACKET);break;
		case '{': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_OPEN_BRACKET);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_CLOSE_BRACKET);break;
		case '}': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_CLOSE_BRACKET);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_CLOSE_BRACKET);break;
		case ',': robot.keyPress(KeyEvent.VK_COMMA);robot.keyRelease(KeyEvent.VK_COMMA);break;
		case '<': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_COMMA);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_COMMA);break;
		case '.': robot.keyPress(KeyEvent.VK_PERIOD);robot.keyRelease(KeyEvent.VK_PERIOD);break;
		case '>': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_PERIOD);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_PERIOD);break;
		case '~': robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SPACE);robot.keyRelease(KeyEvent.VK_SPACE);break;
		case '^': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SPACE);robot.keyRelease(KeyEvent.VK_SPACE);break;
		case '\'': robot.keyPress(KeyEvent.VK_QUOTE);robot.keyRelease(KeyEvent.VK_QUOTE);break;
		case '"': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_QUOTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_QUOTE);break;
		case '-': robot.keyPress(KeyEvent.VK_MINUS);robot.keyRelease(KeyEvent.VK_MINUS);break;
		case '_': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_MINUS);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_MINUS);break;
		case '=': robot.keyPress(KeyEvent.VK_EQUALS);robot.keyRelease(KeyEvent.VK_EQUALS);break;
		case '+': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_EQUALS);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_EQUALS);break;
		case '´': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SPACE);robot.keyRelease(KeyEvent.VK_SPACE);break;
		case '`': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);break;
		
		case 'á': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_A);break;
		case 'à': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_A);break;
		case 'ä': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_A);break;
		case 'ã': robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_A);break;
		case 'â': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_A);break;

		case 'Á': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_A);break;
		case 'À': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_A);break;
		case 'Ä': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_A);break;
		case 'Ã': robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_A);break;
		case 'Â': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_A);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_A);break;

		case 'é': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_E);break;
		case 'è': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_E);break;
		case 'ë': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_E);break;
		case 'ê': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_E);break;

		case 'É': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_E);break;
		case 'È': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_E);break;
		case 'Ë': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_E);break;
		case 'Ê': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_E);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_E);break;

		case 'í': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_I);break;
		case 'ì': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_I);break;
		case 'ï': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_I);break;
		case 'î': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_I);break;

		case 'Í': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_I);break;
		case 'Ì': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_I);break;
		case 'Ï': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_I);break;
		case 'Î': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_I);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_I);break;

		case 'ó': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_O);break;
		case 'ò': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_O);break;
		case 'ö': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_O);break;
		case 'õ': robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_O);break;
		case 'ô': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_O);break;

		case 'Ó': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_O);break;
		case 'Ò': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_O);break;
		case 'Ö': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_O);break;
		case 'Õ': robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_O);break;
		case 'Ô': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_O);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_O);break;

		case 'ú': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_U);break;
		case 'ù': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_U);break;
		case 'ü': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_U);break;
		case 'û': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_U);break;

		case 'Ú': robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_U);break;
		case 'Ù': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_ACUTE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_ACUTE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_U);break;
		case 'Ü': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_6);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_6);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_U);break;
		case 'Û': robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_DEAD_TILDE);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_DEAD_TILDE);robot.keyPress(KeyEvent.VK_SHIFT);robot.keyPress(KeyEvent.VK_U);robot.keyRelease(KeyEvent.VK_SHIFT);robot.keyRelease(KeyEvent.VK_U);break;

		case ' ': robot.keyPress(KeyEvent.VK_SPACE);robot.keyRelease(KeyEvent.VK_SPACE);break;
		case '\n': robot.keyPress(KeyEvent.VK_ENTER);robot.keyRelease(KeyEvent.VK_ENTER);break;
		case '\t': robot.keyPress(KeyEvent.VK_TAB);robot.keyRelease(KeyEvent.VK_TAB);break;
		
		
		}
	}
}

Mas voltando ao meu problema , alguem já conseguiu simular o pressionamento das teclas / e ? de uma forma mais natural ?
Seria esse problema um BUG do Java ? ou do programador ?

Estou usando essa versão do java no Windows Develop Preview (x86):

java version “1.6.0_30”
Java™ SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot™ Client VM (build 20.5-b03, mixed mode, sharing)

Tambem testei no Windows XP SP3 , mas só consigo fazer funcionar com o “POG”.

3 Respostas

E

Em alguns computadores (principalmente notebooks com teclado ABNT) , o “/” e o “?” são AltGr + Q e AltGr + W, respectivamente.
Isso é um bocadinho chato. AltGr é a tecla Alt direita.
Entretanto, AltGr + Q e AltGr + W é uma solução ruim, porque se você usar o teclado US (não o ABNT) essas combinações serão traduzidas para (por exemplo) “ä” e “å”, respectivamente. O que você fez, por incrível que pareça, é melhor.

P

Tenta usar esse para o “/”.

robot.keyPress(KeyEvent.VK_SLASH);

Já o “?” ainda não encontrei uma forma mais facil.

V

Creio que todo o método keyPress poderia ser substituído:

public void keyPress( char key ) { int keyCode = KeyStroke.getKeyStroke(key).getKeyCode(); robot.keyPress(key); robot.keyRelease(key); }

Criado 16 de janeiro de 2012
Ultima resposta 19 de jan. de 2012
Respostas 3
Participantes 4