Näppäimistö

Seuraavat muuttujat ja funktiot ovat olemassa näppäimistön kanssa toimimiseen:

keyboard_lastkey Viimeisimpänä painetun näppäimen näppäinkoodi. Katso alempaa näppäinkoodivakioista lisää. Voit muuttaa sitä, esimerkiksi asettaa sen arvoksi 0 käsittelyn jälkeen.
keyboard_key Tällä hetkellä pohjassa olevan näppäimen näppäinkoodi (katso alempaa; 0, jos mitään näppäintä ei paineta).
keyboard_lastchar Viimeisimpänä painettu merkki (merkkijonona).
keyboard_string Merkkijono, joka sisältää enintään 1024 viimeksi kirjoitettua merkkiä. Tämä merkkijono sisältää vain kirjoitetut tulostettavat merkit. Se reagoi myös askelpalautinnäppäimeen oikealla tavalla poistaen viimeisimmän merkin.

Joskus on hyödyllistä kartoittaa näppäimiä toisiin näppäimiin (key mapping). Voit esimerkiksi haluta, että pelaaja voi käyttää sekä nuolinäppäimiä että numeronäppäimistön näppäimiä. Toimintojen kahdentamisen sijaan voit kartoittaa numeronäppäimistän näppäimet nuolinäppäimiin. Haluat myös ehkä lisätä peliin mekanismin, jonka avulla pelaaja voi asettaa käytettävät näppäimet. Tätä käyttöä varten on olemassa seuraavat funktiot:

keyboard_set_map(key1,key2) Kartoittaa näppäimen, jonka näppäinkoodi on key1, näppäimeen key2.
keyboard_get_map(key) Palauttaa näppäimen nykyisen kartoituksen.
keyboard_unset_map() Palauttaa kaikkien näppäinten kartoituksen takaisin niihin itseensä.

Tarkistaaksesi, painetaanko tiettyä näppäintä, voit käyttää seuraavia funktioita. Nämä ovat hyödyllisiä erityisesti silloin, kun montaa näppäintä painetaan pohjassa yhtäaikaisesti.

keyboard_check(key) Ilmoittaa, onko näppäin key tällä hetkellä painettuna.
keyboard_check_pressed(key) Ilmoittaa, onko näppäin key painettu pohjaan viime askeleen jälkeen.
keyboard_check_released(key) Ilmoittaa, onko näppäin key vapautettu viime askeleen jälkeen.
keyboard_check_direct(key) Ilmoittaa, onko näppäin key tällä hetkellä pohjassa tarkistamalla tämän suoraan laitteistosta. Tulokseen ei vaikuta sillä hetkellä avoinna oleva ohjelma. Se sallii muutaman lisätarkistuksen. Tarkkaan ottaen, voit käyttää näppäinkoodeja vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol ja vk_ralt tarkistaaksesi, onko vasen tai oikea vaihto-, Control- tai Alt-näppäin pohjassa.

Seuraavilla keinoilla voidaan muunnella näppäimistön tilaa:

keyboard_get_numlock() Palauttaa, onko Num Lock päällä.
keyboard_set_numlock(on) Asettaa Num Lockin päälle (tosi) tai pois päältä (epätosi).
keyboard_key_press(key) Simuloi ilmoitetun näppäinkoodin mukaisen näppäimen painalluksen.
keyboard_key_release(key) Simuloi ilmoitetus näppäinkoodin mukaisen näppäimen vapautuksen.

Virtuaalisille näppäinkoodeille on olemassa seuraavat vakiot:

vk_nokey-näppäinkoodi ilmaisemaan, että mitään näppäintä ei paineta
vk_anykey-näppäinkoodi ilmaisemaan, että mitä tahansa näppäintä painetaan
vk_left-näppäinkoodi vasemmalle nuolinäppäimelle
vk_right-näppäinkoodi oikealle nuolinäppäimelle
vk_up-näppäinkoodi ylänuolinäppäimelle
vk_down-näppäinkoodi alanuolinäppäimelle
vk_enter rivinvaihtonäppäimelle (Enter)
vk_escape Escape-näppäimelle
vk_space välilyöntinäppäimelle
vk_shift vaihtonäppäimelle
vk_control Control-näppäimelle
vk_alt Alt-näppäimelle
vk_backspace askelpalautinnäppäimelle
vk_tab sarkainnäppäimelle
vk_home Home-näppäimelle
vk_end End-näppäimelle
vk_delete Delete-näppäimelle
vk_insert Insert-näppäimelle
vk_pageup Page Up -näppäimelle
vk_pagedown Page Down -näppäimelle
vk_pause Pause/Break -näppäimelle
vk_printscreen Print Screen/SysRq -näppäimelle
vk_f1 ... vk_f12 -näppäinkoodit funktionäppäimille F1-F12
vk_numpad0 ... vk_numpad9 numeronäppäimistön näppäimille
vk_multiply numeronäppäimistön kertomerkkinäppäimelle
vk_divide numeronäppäimistön jakomerkkinäppäimelle
vk_add numeronäppäimistön yhteenlaskunäppäimelle
vk_subtract numeronäppäimistön vähennyslaskunäppäimelle
vk_decimal numeronäppäimistön desimaalipilkkunäppäimelle

Käytä kirjainnäppäimille esim. arvoa ord('A'). (Käytä isoa kirjainta.) Voit myös käyttää samaa tapaa numeronäppäimille, esim. ord('5') saadaksesi <5>-näppäimen. Seuraavia vakioita voidaan käyttää vain keyboard_check_direct-funktion kanssa:

vk_lshift vasemmalle vaihtonäppäimelle
vk_lcontrol vasemmalle Control-näppäimelle
vk_lalt vasemmalle Alt-näppäimelle
vk_rshift oikealle vaihtonäppäimelle
vk_rcontrol oikealle Control-näppäimelle
vk_ralt oikealle Alt-näppäimelle

Oletetaan esimerkiksi, että sinulla on objekti, jota pelaaja voi hallita nuolinäppäimillä, jolloin voit asettaa seuraavan koodin objektin askeltapahtumaan (Step):

{
  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;
}

Tämä on tottakai paljon helpompaa laittaa yksinkertaisesti vain näppäimistötapahtumiin (Keyboard).

On olemassa muutamia lisäfunktioita, jotka liittyvät näppäimistön kanssa toimimiseen.

keyboard_clear(key) Nollaa annetun näppäimen tilan. Tämä tarkoittaa sitä, ettei se enää aiheuta näppäimistötapahtumia ennen kuin pelaaja vapauttaa näppäimen ja painaa sitä uudelleen.
io_clear() Nollaa kaikki näppäimistön ja hiiren tilat.
io_handle() Päivittää näppäimistön ja hiiren tilan.
keyboard_wait() Odottaa, kunnes käyttäjä painaa jotakin näppäimistön näppäintä.