Así que tengo este campo de entrada de texto y tengo la función showKeyCode() que obtiene el valor de la entrada de texto e imprime la representación del código clave de la tecla presionada en la consola.
function showKeyCode() { $('#inputfield').keyup(function(e){ $(this).val(String.fromCharCode(e.keyCode)); console.log(e.keyCode); }); } const r4 = document.querySelector("#inputfield"); r4.addEventListener('input', showKeyCode2);Ahora quiero obtener este valor y usarlo en la siguiente función.
$(document).keydown(function(e) { if (e.which == [I WANT TO PUT THE RESULT FROM showKeyCode() HERE] ){ document.querySelector('#test').click() console.log("Clicked"); } });Vamos a resumir lo que estoy tratando de hacer aquí. Si eres un jugador, debes haber usado las combinaciones de teclas, por ejemplo: Presiona [M] para mostrar el minimapa. Presiona [H] para mostrar hud.
Aquí estoy tratando de hacer que el usuario personalice la combinación de teclas escribiéndola en el campo de texto. La función showKeyCode() obtiene el carácter y lo convierte en un código clave que se usa en la segunda función.
Podría haber escrito el código clave directamente en el script de esta manera
if (e.which == 84 ){}pero quería que el usuario lo cambiara dentro del juego.
Técnicamente , "no se puede" , pero hay una solución complicada y sucia. Variables globales.
//outside let value = ''; function showKeyCode() { $('#inputfield').keyup(function(e){ $(this).val(String.fromCharCode(e.keyCode)); value = e.keyCode; }); } $(document).keydown(function(e) { if (e.which == [value] ){ document.querySelector('#test').click() console.log("Clicked"); } }); Esto debería funcionar si se llamó a sowKeyCode antes de realizar un keydown
Ahora, NO RECOMIENDO usar variables globales, pero a veces es la única forma de abordarlo, tal vez pueda usar un método diferente, como poner esto dentro de una class o usar otras bibliotecas que son excelentes con el seguimiento de estado.