GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

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

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.

Olá,
vc pode fazer por KeyStroke ou:

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

1 Curtida

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

1 Curtida

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?

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?

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.

Pra resolver logo esse assunto:
textfield.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == ‘.’) e.setKeyChar(’,’);
}
});

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:

//