Per l’interazione con la tastiera, esistono le seguenti funzioni e variabili:
keyboard_lastkey | Codice dell’ultimo tasto premuto. Più avanti ci sono le costanti della tastiera. Può essere cambiato, per esempio impostandolo a 0 dopo averlo trattato. |
keyboard_key | Codice del tasto attualmente premuto. (0 per nessuno). |
keyboard_lastchar | Codice dell’ultimo carattere premuto (come stringa). |
keyboard_string | Stringa che contiene gli ultimi caratteri digitati (al massimo 1024). Questa stringa conterrà soltanto i caratteri stampabili. Inoltre risponde in modo corretto alla pressione del tasto backspace cancellando l’ultimo carattere. |
A volte è utile mappare un tasto in un altro.
Per esempio se si vuole fare in modo che l’utente possa utilizzare sia le frecce di direzione che il tastierino numerico, piuttosto che duplicare le azioni si possono mappare i tasti del tastierino numerico con le frecce di direzione.
Oppure si può prevedere che l’utente possa scegliere quali tasti usare.
Per questo sono disponibili le funzioni seguenti:
keyboard_set_map() | key1 key2 |
Mappa il tasto key1 in key2. |
keyboard_get_map() | key | Restituisce la mappatura attuale del tasto key. |
keyboard_unset_map() | Reimposta tutti i tasti a mappare in se stessi. |
Per controllare se un tasto specifico, o un pulsante del mouse, è premuto si possono utilizzare le funzioni seguenti.
Risulta molto utile quando si premono più tasti contemporaneamente.
keyboard_check() | key | Restituisce se il tasto key è attualmente abbassato. |
keyboard_check_pressed() | key | Restituisce se il tasto key è stato premuto dall’ultimo key. |
keyboard_check_released() | key | Restituisce se il tasto key è stato rilasciato dall’ultimo key. |
keyboard_check_direct() | key | Restituisce se il tasto key è premuto controllando direttamente il dispositivo. Il risultato è indipendente da quale applicazione ha attualmente il fuoco. Questo permette alcuni controlli aggiuntivi. In particolare si possono usare i codici vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt per controllare se sono premuti i tasti shift o alt di destra o di sinistra. |
Le funzioni seguenti possono essere utilizzate per cambiare lo stato della tastiera:
keyboard_get_numlock() | Restituisce se numlock è attivo. | |
keyboard_set_numlock() | on | Attiva (true) o disattiva (false) numlock. |
keyboard_key_press() | key | Simula la pressione del tasto con il codice specificato. |
keyboard_key_release() | key | Simula il rilascio del tasto con il codice specificato. |
Esistono le costanti seguenti come codici virtuali dei tasti:
vk_anykey un qualsiasi tasto è premuto
vk_left vk_right vk_up vk_down le frecce direzionali
vk_enter, vk_escape, vk_space, vk_backspace, vk_tab …
vk_shift, vk_control, vk_alt …
vk_home, vk_end, vk_delete, vk_insert, vk_pageup, vk_pagedown …
vk_f1 … vk_f12 …
vk_pause, vk_printscreen …
vk_numpad0 … vk_numpad9, vk_multiply, vk_divide, vk_add, vk_subtract, vk_decimal …
Per le lettere si usa
ord('A') // lettere maiuscole
e le cifre
ord('5') // codice del tasto <5>
Le costanti seguenti si possono usare soltanto con keyboard_check_direct:
Per esempio, supponiamo di avere un oggetto che l’utente controlla con le frecce allora possiamo inserire il codice seguente nell’evento step dell’oggetto:
{ 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; }
Naturalmente è più semplice inserirlo negli eventi della tastiera.
Ci sono ulteriori funzioni collegate all’interazione con la tastiera:
keyboard_clear() | key | Pulisce lo stato del tasto key. Questo significa che non genererà eventi della tastiera finché non ricomincerà. |
io_clear() | Pulisce tutti gli stati della tastiera e del mouse. | |
io_handle() | Gestisci l’i/o dell’utente, aggiornando gli stati di tastiera e mouse. | |
keyboard_wait() | Aspetta che l’utente prema un tasto della tastiera. |