Inkey$

 
De input van het toetsenbord kan alleen in grafische vensters of graphicboxes worden opgevangen.
Wanneer een toets wordt ingedrukt, wordt de informatie opgeslagen in de variabele Inkey$

Description:
Deze speciale variabele bevat of één enkel getypt teken of meerdere in de speciale gevallen 
van de virtuele toetsen code van Windows. Merk op dat omdat Inkey$ een variabele is,
het hoofdletter gevoelig is. Voorlopig kunnen slechts het grafisch venster 
en de graphicbox de  toetsenbordinput aftasten. 
Virtuele toetsen codes zijn standaardconstanten van Windows, en omvatten 
pijltoetsen, functietoetsen, ALT, SHIFT en CTRL, enz.

Als Inkey$ uit slechts één enkel karakter bestaat, dan is dat de ingedrukte toets. 
Zie de sectie hieronder voor een beschrijving van Inkey$ wanneer len(Inkey$) groter is dan 1.

  'INKEY.BAS  - how to use the Inkey$ variable

  open "Inkey$ example" for graphics as #graph
  print #graph, "when characterInput [fetch]"

[mainLoop]
  print #graph, "setfocus"
  input r$

[fetch]  'a character was typed!

  key$ = Inkey$
  if len(key$) = 1 then
      notice key$+" was pressed!"

  else
      keyValue = asc(right$(key$, 1))
      if keyValue = _VK_SHIFT then
          notice "Shift was pressed"
        else
          if keyValue = _VK_CONTROL then
              notice "Ctrl was pressed"
            else
              notice "Unhandled key pressed"
          end if
      end if
  end if

  WAIT


Gevallen waarin Inkey$ meervoudige toets information bevat:
Als Inkey$ meer dan één karakter bevat, geeft het eerste karakter aan dat of de
SHIFT, CTRL,  of de ALT toets ook ingedrukt werd samen met een overige 
toets van het toetsenbord.  Deze speciale toetsen hebben de volgende ASCII waarden:

Shift = 4
Ctrl  = 8
Alt  = 16

Zij kunnen in elke combinatie worden gebruikt.  
Als Inkey$ meer dan één karakter bevat, kunt u controleren om te zien 
welke (indien aanwezig) van de drie speciale sleutels ook werd gedrukt 
door de AND operator bitwise te gebruiken.  
Als alleen de SHIFT werd gedrukt, dan zal de ASCII waarde van het eerste karakter 4 zijn. 
Als de SHIFT en de ALT allebei werden gedrukt, dan zal de ASCII waarde van 
het eerste karakter 20, etc. zijn. 
De speciale toetsen  geven Inkey$ telkens een nieuwe waarde 
wanneer zij ingedrukt worden weer losgelaten worden. 
Hier is een voorbeeld van bitwise AND gebruik om te bepalen welke speciale toetsen werden bediend.

open "Inkey$ with Shift" for graphics_nf_nsb as #1
  #1 "setfocus; when characterInput [check]"
  #1 "down; place 10 30"
  #1 "\Make the mainwindow visible,"
  #1 "\then click this window and"
  #1 "\begin pressing key combinations."
  #1 "\Watch the printout in the mainwindow."
  #1 "flush"
  #1 "trapclose [quit]"

  wait

[check]
  shift=4
  ctrl=8
  alt=16

  a=asc(left$(Inkey$,1))

  if len(Inkey$)>1 then
    m$=""

    if a and shift then m$="shift "

    if a and ctrl then m$=m$+"ctrl "
    if a and alt then m$=m$+"alt "
    print "Special keys pressed:  " + m$
  else
    print "Key pressed:  " + Inkey$
  end if

  wait

[quit]
  close #1:end



Zie ook, Using virtual key constants with Inkey$, Using Inkey$, 
Reading Mouse Events and Keystrokes.