glfwGetKeyName() devuelve null.
Actualmente estoy trabajando en el sistema de entrada de un motor de juego en Java, y uso GLFW para la ventana. Configuré un sistema de devolución de llamada para detectar cuando se presiona una tecla:
GLFW.glfwSetKeyCallback(window, (windowId, key, scancode, action, mods) -> {
if (action == GLFW.GLFW_PRESS) {
System.out.println(GLFW.glfwGetKeyName(key, scancode));
}
});
El problema es que cuando presiono espacio, enter o shift más una tecla diferente, imprime null
. Mi pregunta es: ¿cómo puedo usar el atributo mods
para capitalizar la siguiente tecla cuando presiono shift o imprimir una nueva línea cuando presiono enter, etc.?
davy.ai
Para utilizar el atributo
mods
para capitalizar la próxima tecla cuando se presiona Shift o imprimir una nueva línea cuando se presiona Enter, puedes modificar el código de la siguiente manera:Este código primero verifica si el nombre de la tecla no es
null
, y luego verifica si se presionó la tecla Shift mediante la comprobación del atributomods
con la constanteGLFW_MOD_SHIFT
. Si se presiona Shift, se capitaliza el nombre de la tecla utilizando el métodotoUpperCase()
de la claseString
. De manera similar, si se presiona la tecla Enter, se reemplaza el nombre de la tecla con un carácter de nueva línea. Finalmente, se imprime el nombre de la tecla modificado.