Para interacción con el teclado (keyboard) las siguientes funciones y variables existen:
keyboard_lastkey
Código de la última tecla presionada. Mira más las constantes para los códigos
de tecla. Puedes cambiarlo, p. ej, ponerlo a 0 si tu lo manipulaste.
keyboard_key
Código de tecla de la tecla presionada actualmente (mira mas abajo; 0 si no se
presiona ninguna)
keyboard_lastchar
Último carácter presionado (como string)
keyboard_string
Cadena de caracteres de los últimos 1024 caracteres tipeados. Esta cadena solo
contendrá caracteres imprimibles en la pantalla. También responde a la tecla de
retroceso borrando el último carácter.
En ocasiones es útil mapear una tecla a otra. Por ejemplo pudieras permitir al jugador emplear tanto las teclas del cursor como las del teclado numérico. En lugar de duplicar las acciones puedes mapear el teclado numérico a las teclas del cursor. También pudieras implementar un mecanismo en el que el jugador pueda seleccionar las teclas a usar. Para este fin, contamos con las siguientes funciones:
keyboard_set_map(key1,key2)
Mapea la tecla con el código de tecla key 1 a key2.
keyboard_get_map(key)
Devuelve el mapeado actual para una tecla
keyboard_unset_map()
Restablece todas sus teclas a su mapa original.
Para chequear si una tecla o botón del ratón en particular han sido presionados puedes emplear las siguientes funciones. Esto es útil particularmente cuando se presionan varias teclas simultáneamente.
keyboard_check(key)
Indica si la tecla con el código de tecla particular está presionado.
keyboard_check_pressed(key)
Indica si la tecla con el código de tecla particular fue presionado desde el
último step.
keyboard_check_released(key)
Indica si la tecla con el código de tecla particular dejó de presionarse desde
el último step.
keyboard_check_direct(key)
Indica
si la tecla con el código de tecla es presionada chequeando el hardware
directamente. El resultado es independiente de la aplicación enfocada. Esta
función permite algunos chequeos más. En este caso puedes emplear los códigos
vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol y vk_ralt para checar si
se presiona la tecla shift, control o alt, ya sea izquierda o derecha
Las siguientes rutinas puedes ser usadas para manipular el estado del teclado:
keyboard_get_numlock()Indica
si BloqNum está activada.
keyboard_set_numlock(on)
Activa (on=true) o desactiva (on=false)
BloqNum.
keyboard_key_press(key)
Simula presionar la tecla con el código de tecla
keyboard_key_release(key)
Simulates a release of the key with the indicated keycode.
Las siguientes constantes para los códigos de tecla son:
vk_nokey
Código de tecla que representa que no hay teclas presionadas
vk_anykey
Código de tecla que representa que cualquier tecla ha sido presionada.
vk_left
Código para tecla de la flecha izquierda
vk_right
Código para tecla de la flecha derecha
vk_up
Código para tecla de la flecha arriba
vk_down
Código para tecla de la flecha abajo
vk_enter
Tecla Enter o Intro
vk_escape
Tecla Escape
vk_space
Tecla Espacio
vk_shift
Tecla Shift
vk_control
Tecla Control
vk_alt
Tecla Alt
vk_backspace
Tecla Backspace o Retroceso
vk_tab
Tecla Tab
vk_home
Tecla Inicio
vk_end
Tecla Fin
vk_delete
Tecla Suprimir
vk_insert
Tecla Insertar
vk_pageup
Tecla Re Pag
vk_pagedown
Tecla Av Pag
vk_pause
Tecla Pausa/Inter
vk_printscreen
Tecla Impr Pant/Pet Sis
vk_f1 ... vk_f12
Códigos de tecla para las las teclas funcionales F1 hasta F12
vk_numpad0 ... vk_numpad9
Teclas numéricas en el teclado numérico
vk_multiply
Tecla de multiplicación en el teclado numérico
vk_divide
Tecla de división en el teclado numérico
vk_add
Tecla de suma en el teclado numérico
vk_subtract
Tecla de substracción en el teclado numérico
vk_decimal
Tecla de punto decimal en el teclado numérico
Para las letras usa por ejemplo ord('A'). (Letras Mayúsculas). Para los dígitos usa por ejemplo ord('5') para obtener la tecla <5> (no en el teclado numérico). Las siguientes constantes solo sirven para keyboard_check_direct:
vk_lshift
Tecla Shift de la Izquierda
vk_lcontrol
Tecla Control de la Izquierda
vk_lalt
Tecla Alt de la Izquierda
vk_rshift
Tecla Shift de la Derecha
vk_rcontrol
Tecla Control de la Derecha
vk_ralt
Tecla Alt de la Derecha
Por ejemplo, asumiendo que tienes un objeto que el usuario puede controlar con las teclas del cursor puedes colocar el siguiente código en el evento step del objeto:
{
if (keyboard_check(vk_left)) x -= 4;
if (keyboard_check(vk_right)) x += 4;
if (keyboard_check(vk_up)) y -= 4;
if (keyboard_check(vk_down)) y += 4;
}
Claro, esto es mucho más fácil si simplemente lo ponemos en los eventos del teclado.
Hay algunas funciones adicionales relacionadas con la interacción con el teclado
keyboard_clear(key)
‘Limpia’ el estado de la tecla mencionada en “key”. Esto significa que no
generará eventos de teclado hasta que se vuelva a presionar.
io_clear()
‘Limpia’ todos los estados del teclado y del ratón.
io_handle() Maneja la entrada y salida por parte del usuario, actualizando los estados del teclado y del ratón.
keyboard_wait() Espera hasta que el usuario presione una tecla del teclado.