[RESOLVIDO] Apertar teclas sequencialmente

	@Override
	public void nativeKeyPressed(NativeKeyEvent event) {
		boolean keepPressingO = false;
		System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(event.getKeyCode()));
		if (event.getKeyCode() == NativeKeyEvent.VC_F3) {
            System.out.println("Iniciando AutoPotion");
            keepPressingO = true;

            new Thread() {
                @Override
                public void run() {
                    try {
                        while (keepPressingO) {

                        }
                    } catch (NativeHookException e) {
                        e.printStackTrace();
                    }
                }
            }.start();

        }

        if (event.getKeyCode() == NativeKeyEvent.VC_F4) {
            System.out.println("Parando AutoPotion");
            keepPressingO = false;
        }
		
	}

opa man acabei comentando duas vezes, desculpa…

Eu fiz isso com a biblioteca, mas estou com duvida em como fazer o while
continua sendo com o robot?

Acabei fazendo isso:

                    while (keepPressingO) {
                        Robot robot = new Robot();
                        robot.delay(1000);
                        robot.keyPress(KeyEvent.VK_O);
                        
                    }

eu procurei sobre a saida ela fica spammando

INFORMAÇÕES: hook_get_multi_click_time [208]: GetDoubleClickTime: 500.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: hook_get_multi_click_time [208]: GetDoubleClickTime: 500.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: process_mouse_moved [459]: Mouse dragged to 750, 784.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: hook_get_multi_click_time [208]: GetDoubleClickTime: 500.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: process_mouse_moved [459]: Mouse dragged to 751, 784.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: hook_get_multi_click_time [208]: GetDoubleClickTime: 500.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: process_mouse_moved [459]: Mouse dragged to 753, 784.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: hook_get_multi_click_time [208]: GetDoubleClickTime: 500.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: process_mouse_moved [459]: Mouse dragged to 754, 785.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: hook_get_multi_click_time [208]: GetDoubleClickTime: 500.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: process_mouse_moved [459]: Mouse dragged to 756, 785.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: hook_get_multi_click_time [208]: GetDoubleClickTime: 500.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: process_mouse_moved [459]: Mouse dragged to 757, 785.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: hook_get_multi_click_time [208]: GetDoubleClickTime: 500.

jul 19, 2019 10:33:28 PM org.jnativehook.GlobalScreen$NativeHookThread enable
INFORMAÇÕES: process_mouse_moved [459]: Mouse dragged to 759, 785.

registros toda hr nao tou achando nada sobre como parar com isso.

Sim mano, ainda é o robot.

Pra desabilitar o LOG:

Logger loggy = Logger.getLogger(GlobalScreen.class.getPackage().getName());
loggy.setLevel(Level.OFF);

Pra mostrar so a tecla pressionada:

     @Override
    public void nativeKeyPressed(NativeKeyEvent e) {
        char ch = e.getKeyChar();
        System.out.println(e.getKeyText(e.getKeyCode()));
//        int key = e.getKeyCode();
//        System.out.println(ch);
//        System.out.println(key);
//        String modifiers = e.getModifiersText(e.getModifiers());
//        int rawCode = e.getRawCode();
//        System.out.println(rawCode);
    }

Desvantagens em tempo de utilização que eu percebi até o momento:

A acentuação não funciona

eu tinha cnseguido desatualizar os logs
mas eu encontrei um probleminha kkk
tipo creio que seja pq está apertando as 3 teclas de vez
ex: funciona no chat do mu, no texto do bloco de notas,
mas para usar as potions não
pq eu acho que tem que
apertar a tecla q e qnd apertar a tecla w soltar a tecla q

algo parecido no c#

KEYB_Event(VK_KEY_Q, 0, 0, 0) 'Segura o button 1
KEYB_Event(VK_KEY_Q, 0, 0, 0)
Thread.Sleep(60) ' aqui é o tempo que passa pra outra magia

KEYB_Event(VK_KEY_W, 0, KEYEVENTF_KEYUP, 0) 'Solta o button 1

KEYB_Event(VK_KEY_W, 0, 0, 0) 'Segura o button 2

Thread.Sleep(26) ' aqui é o tempo que passa pra outra magia

KEYB_Event(VK_KEY_E, 0, KEYEVENTF_KEYUP, 0) 'Solta o button 2

KEYB_Event(VK_KEY_E, 0, 0, 0) 'Segura o button 3

Thread.Sleep(60) ' aqui é o tempo que passa pra outra magia

KEYB_Event(VK_KEY_E, 0, KEYEVENTF_KEYUP, 0) 'Solta o button 3

não sei se tem como fazer isso com o robot, desse modo que estou usando funciona apenas uma vez quando aperta o q .

Assim?

 Robot robot = new Robot();
 robot.keyPress(KeyEvent.VK_Q);
 robot.keyRelease(KeyEvent.VK_Q);
 robot.keyPress(KeyEvent.VK_W);
 robot.keyRelease(KeyEvent.VK_W);
 Thread.sleep(500);
1 curtida

era algo parecido:

                    	 Robot robot = new Robot();
                    	 robot.keyPress(KeyEvent.VK_Q);
                    	 robot.keyPress(KeyEvent.VK_Q);
                    	 Thread.sleep(60);
                    	 robot.keyRelease(KeyEvent.VK_Q);
                    	 robot.keyPress(KeyEvent.VK_W);
                    	 Thread.sleep(26);
                    	 robot.keyRelease(KeyEvent.VK_W);
                    	 robot.keyPress(KeyEvent.VK_E);
                    	 Thread.sleep(60);
                    	 robot.keyRelease(KeyEvent.VK_E);

vlww manin kkk

Funcionou esse hackzinho aí?

1 curtida

kkkk sss

Relaxa que quase ninguem usa o JavaFx, Swing terá mais facilidade em pesquisar soluções.

1 curtida

opa man kk eu tive um probleminha a thread ta ficando aberto msm depois de fechar a instancia
você poderia me dar um help nisso?

if (event.getKeyCode() == NativeKeyEvent.VC_F) {
            keepPressingO = true;

            new Thread() {
                @Override
                public void run() {
                    try {
                        while (keepPressingO) {
                        	 Robot robot = new Robot();
                        	 robot.keyPress(KeyEvent.VK_Q);
                        	 Thread.sleep(26);
                        	 robot.keyRelease(KeyEvent.VK_Q);
                        	 robot.keyPress(KeyEvent.VK_W);
                        	 Thread.sleep(16);
                        	 robot.keyRelease(KeyEvent.VK_W);
                        	 robot.keyPress(KeyEvent.VK_E);
                        	 Thread.sleep(26);
                        	 robot.keyRelease(KeyEvent.VK_E);
                        }
                    } catch (AWTException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
                }
            }.start();

        }

        if (event.getKeyCode() == NativeKeyEvent.VC_G) {
            keepPressingO = false;
        }

teria como eu fazer algo dentro desse if
if (event.getKeyCode() == NativeKeyEvent.VC_G) {
keepPressingO = false;
}
ou fora do while para parar a thread qnd sair do while?

Se eu matar a thread quando apertar para entrar no while dnv vai funcionar?

tou c dúvida kk

E também pensei em fazer isso:

private Thread threadOne;

e dentro do meu if :
if (event.getKeyCode() == NativeKeyEvent.VC_BACKQUOTE) {

eu chamar a thread com o while

assim eu conseguiria fechar a thread com um windowClosing

mas eu não conseguir montar a estrutura

threadOne.run();