Werken met Amos deel 124 """""""""""""""""""""""" HET KEYBOARD """""""""""" Eens zullen we in de toekomst misschien onze programma's in voeren via onze gedachten overbrenging. Tot dan is de snelste manier om informatie in een computer overbrengen via het keyboard. AMOS Basic biedt jou tientallen handige keyboard kommando's. Deze kunnen in alle spellen van een arcade tot een avontuur ingezet worden. Het is zelfs mogelijk om een geheel gevleugelde tekstverwerker uitsluitend in AMOS Basic te maken. =INKEY$ (Funktie om een toets druk te krijgen) """""""""""""""""""""""""""""""""""""""""""""" k$=INKEY$ De INKEY$ funktie checkt of de gebruiker een toets heeft ingedrukt en geeft zijn waarde op in de string k$. Denk er wel aan dat het INKEY$ kommando niet op je invoer wacht. Als de gebruiker geen letterteken heeft ingevoerd, geeft INKEY& enkel een lege string "" terug. Voorbeeld: Do Rem Probeer enkele cursor toetsen X$=Inkey$ : If X$<>"" Then Print X$; Loop INKEY$ kan alleen toetsen lezen die een specifieke Ascii waarde van het keyboard opgeeft. Ascii is een standaard code die alle toetsen vertegenwoordigt die op het scherm getoond kunnen worden. Het is belangrijk om je te realiseren dat sommige toetsen, zoals de HELP toets of de funktie toets, een ander formaat gebruiken. Als INKEY& zo'n toets ontdekt, geeft het een waarde terug van 0 (CHR$(0)). Nu kun je de interne scan code vinden van deze toets met een aparte SCAN CODE funktie. =SCANCODE (Voer een scancode in van de laatste toets druk met INKEY$) """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" s=SCANCODE SCANCODE geeft de interne scancode van een toets die eerder met de INKEY$ funktie was ingevoerd, zoals HELP of TAB. Probeer het volgende kleine voorbeeld: Do While K$="" K$=Inkey$ Wend If Asc(K$)=0 Then Print "Je drukte op een toets zonder Ascii Code." Print "The Scancode is";Scancode K$ Loop =KEY STATE (Test of er een individuele toets ingedrukt is) """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" t=KEY STATE (s) Checkt of er een bepaalde toets was ingedrukt van het Amiga's keyboard. S is de interne scancode van de toets die je wilt checken. Als die toets nu ingedrukt wordt krijg je de waarde van Waar (-1), anders is het resultaat (0). Voorbeeld: Do If Key State(69)=Waar Then Print "Ontsnapt!": Rem De Esc toets was ingedrukt If Key State(95)=Waar Then Print "HELP!" : Rem De HELP toets was ingedrukt Loop =KEY SHIFT (Geeft de waarde van de shift toetsen) """""""""""""""""""""""""""""""""""""""""""""""""" keys=KEY SHIFT KEY SHIFT geeft de huidige toetstand van de verschillende kontrole toetsen. Deze toetsen zoals SHIFT of ALT kunnen niet met de standaard INKEY$ of SCANCODE funkties ontdekt worden. Maar je kunt wel elke kombinatie makkelijk zien van de kontrole toetsen met een enkele oproep van het KEY SHIFT kommando. keys is een bit-map die alsvolgt geschreven wordt: Bit Geteste toets Opmerkingen 0 Linker SHIFT toets 1 Rechter SHIFT toets 2 Caps Lock Of aan of uit 3 Control (Ctrl) 4 Left Alt 5 Rechter Alt 6 Linker Amiga Commodore toets op sommige keyboards 7 Rechter Amiga Is het bit op een gezet, dan wordt de bijnbehorende toets door de gebruiker ingedrukt. Voorbeeld: Centre "" Curs Off Do Locate 14,4 : Print Bin$(Key Shift,8) Loop =INPUT$(n) (Funktie om n letters in een string te zetten) """"""""""""""""""""""""""""""""""""""""""""""""""""""""" x$=INPUT$(n) INPUT$ voert n letters rechtstreeks van het keyboard in, steeds op een RETURN wachtend. Net als met INKEY$ worden deze tekens niet op het scherm gezet. x$ is een string variabele die geladen wordt met je nieuwe tekens. n bevat het aantal tekens die ingevoerd werden. Voorbeeld: Clear Key : Print "Type tien letters in" C$=Input$(10) : Print "Je voerde in";C$ Deze indstruktie is niet hetzelfde als de standaard INPUT$ versie die gebruikt kan worden om letters van de disk in te lezen.