La tastiera

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_nokey nessun tasto è premuto
vk_anykey un qualsiasi tasto è premuto
vk_left vk_right vk_up vk_down le frecce direzionali
vk_entervk_escapevk_spacevk_backspacevk_tab …
vk_shiftvk_controlvk_alt …
vk_homevk_endvk_deletevk_insertvk_pageupvk_pagedown …
vk_f1 … vk_f12 …
vk_pausevk_printscreen …
vk_numpad0 … vk_numpad9vk_multiplyvk_dividevk_addvk_subtractvk_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:

vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt

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.

Lascia un commento