Pessoal, boa noite.
Como que faço para acionar as teclas do teclado numérico com num lock desligado? Estou desenvolvendo um jogo e quero que o personagem ande pelo teclado numérico, só que não consigo utilizar as teclas (1,3,7 ,9), ele reconhece o pressionamento das teclas como (Home, Page up, etc).
As setas é possível utilizar o vk_kp_down, tem algo parecido para o 1,3,7 e 9?
É, por padrão as teclas de setas que funcionam no teclado numerico sao 8,2,6,4
Dá para diferenciar o PAGE_DOWN “normal” do PAGE_DOWN do numpad usando o método KeyEvent.getKeyLocation()
, veja:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class Main {
public static void main(String... args) {
final JFrame frame = new JFrame();
frame.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
final int code = e.getKeyCode();
final boolean isNumpad = e.getKeyLocation() == KeyEvent.KEY_LOCATION_NUMPAD;
if (code == KeyEvent.VK_NUMPAD1 || (code == KeyEvent.VK_END && isNumpad)) {
System.out.println("1");
} else if (code == KeyEvent.VK_NUMPAD3 || (code == KeyEvent.VK_PAGE_DOWN && isNumpad)) {
System.out.println("3");
} else if (code == KeyEvent.VK_NUMPAD7 || (code == KeyEvent.VK_HOME && isNumpad)) {
System.out.println("7");
} else if (code == KeyEvent.VK_NUMPAD9 || (code == KeyEvent.VK_PAGE_UP && isNumpad)) {
System.out.println("9");
}
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
});
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Só não sei se vai funcionar 100% pro que vc precisa e também eu só testei no Linux.
1 curtida
Tem alguma forma de simular o pressionamento dessa tecla com a classe robot?
Essa classe eu nunca usei, então não sei dizer.