Ao clicar em uma tecla, substituir a tecla pressionada por outra

7 respostas
C

Olá amigos. A tempos acompanho o Guj, sem estar cadastrado mas agora preciso de ajuda.
Sou iniciante na linguagem java e queria criar um programa que quando o usúario pressionasse uma tecla, ALT + 1 por exemplo,o programa substituísse esse ALT + 1 e escrevesse X no lugar. Basicamente é quando o usuário pressionar uma tecla, o programa vai “escrever” outra.
Antes de criar o tópico eu pesquisei e vim que existia o modo pelo e.getkeycode: > > if (e.getKeyCode() == KeyEvent.VK_ENTER) // Mas como ficaria ALT + 1? E também, como o programa iria escrever a outra letra, que no caso seria o X? Tudo isso eu iria estar com o programa minimizado, digitando no bloco de notas.

Não peço o código completo, peço instruções de como fazer. Meu objetivo é aprender mais!!
Agradeço a todos.

7 Respostas

Rodrigo_Void

Olá,
vc pode fazer por KeyStroke ou:

if (e.isAltDown() && e.getKeyCode() == KeyEvent.VK_1)

L

O grande problema disso é que a captura das teclas digitadas é feito, primeiramente, pelo SO.
Com certeza existe alguma maneira de você burlar isso, mas, um sinal de interrupção prioritária, como o CTRL + ALT + DEL, ficaria como?
Com a janela do teu sistema aberta, com certeza seria bem mais fácil, com ela minimizada, aí a coisa complica, mesmo seguindo a orientação do @Rodrigo_Void

C

Meu objetivo seria substituir as teclas do numlock ou qualquer outra tecla por símbolos matemáticos basicamente. Vc acha que seria possível, mesmo com o programa minimizado?

L

Eu acredito que seja possível, só não tenho ideia de como fazer, caso o programa esteja minimizado.
Com o programa aberto, você vai identificar o foco no frame ou dialog mais externo e, aí, fica fácil fazer. Com ele fechado, qual seria a referência?

Rodrigo_Void

Cara, minimizado é punk. Pq normalmente vc captura o evento de um componente, mas no caso do minimizado n teria componente, teria que capturar o pressionamento de teclas no SO. Isso me cheira a Keylogger, o antivirus pode reclamar. Dá uma estudada na api Robot.

G
Pra resolver logo esse assunto:

textfield.addKeyListener(new KeyAdapter() {

public void keyTyped(KeyEvent e) {

if (e.getKeyChar() == .) e.setKeyChar(,);

}

});
staroski

Você ressuscitou um tópico de 4 anos atrás, para mostrar como adicionar um KeyListener à um JTextField?

O colega queria interceptar as teclas em programas externos, neste caso, dentro do notepad, não dentro de uma tela feita em Java.

:man_shrugging:

Criado 4 de abril de 2017
Ultima resposta 26 de jul. de 2021
Respostas 7
Participantes 5