'===========================================================================
' Subject: Keyboard Handler                   Date: 03-15-02 (  :  )       
'  Author: Mario LaRosa                       Code: QB,Qbasic,PDS          
'  Origin: CMLAROSA73@aol.com               Packet: KEYBOARD.ABC
'===========================================================================
'''
' Qkeys v1.2, a pure QB keyhandler that replaces INKEY$
'
' Brought to you by... MARIO SOFT.
'
' (C)opyright 2000
'
' Contact me at CMLAROSA73@aol.com
' If you have any questions or comments concerning these routines.
'
' THIS PROGRAM MAY BE DISTRIBUTED FREELY AS PUBLIC DOMAIN SOFTWARE
' AS LONG AS ANY PART OF THIS FILE IS NOT ALTERED IN ANY WAY.
' IF YOU DO WISH TO USE THESE ROUTINES IN YOUR OWN PROGRAMS
' THEN PLEASE GIVE CREDIT TO THE AUTHOR... Mario LaRosa.
'
'''
'$DYNAMIC
DEFINT A-Z
'
DECLARE SUB QKEYS ()
'
COMMON SHARED KB1, KB2
'
BoxX = 154
BoxY = 94
colour = 1
'
SCREEN 13
'
DO
 '                                 Scan KeyBoard...
 QKEYS
 '                                 Handle scanned keys...
 SELECT CASE KB1
  CASE 32                          'Space Bar
   colour = colour + 1
   IF colour > 15 THEN colour = 1
 END SELECT
 '
 SELECT CASE KB2
  CASE 1                           'Esc...
   SYSTEM
  'CASE 57                         'Space Bar...
  ' colour = colour + 1
  ' IF colour > 15 THEN colour = 1
  CASE 79                          'Numeric Key-Pad [1]
   BoxY = BoxY + 1
   BoxX = BoxX - 1
   IF BoxY > 199 THEN BoxY = 199
   IF BoxX < -10 THEN BoxX = -10
  CASE 80                          'Numeric Key-Pad [2]
   BoxY = BoxY + 1
   IF BoxY > 199 THEN BoxY = 199
  CASE 81                          'Numeric Key-Pad [3]
   BoxY = BoxY + 1
   BoxX = BoxX + 1
   IF BoxY > 199 THEN BoxY = 199
   IF BoxX > 319 THEN BoxX = 319
  CASE 75                          'Numeric Key-Pad [4]
   BoxX = BoxX - 1
   IF BoxX < -10 THEN BoxX = -10
  CASE 77                          'Numeric Key-Pad [6]
   BoxX = BoxX + 1
   IF BoxX > 319 THEN BoxX = 319
  CASE 71                          'Numeric Key-Pad [7]
   BoxY = BoxY - 1
   BoxX = BoxX - 1
   IF BoxY < -10 THEN BoxY = -10
   IF BoxX < -10 THEN BoxX = -10
  CASE 72                          'Numeric Key-Pad [8]
   BoxY = BoxY - 1
   IF BoxY < -10 THEN BoxY = -10
  CASE 73                          'Numeric Key-Pad [9]
   BoxY = BoxY - 1
   BoxX = BoxX + 1
   IF BoxY < -10 THEN BoxY = -10
   IF BoxX > 319 THEN BoxX = 319
 END SELECT
 '                                 Draw box...
 '
 LINE (BoxX, BoxY)-(BoxX + 10, BoxY + 10), colour, BF
 '
 '                                 Wait for Vsync...
 WAIT &H3DA, 8
 '                                 Erase box...
 '
 LINE (BoxX, BoxY)-(BoxX + 10, BoxY + 10), 0, BF
 '
LOOP

REM $STATIC
SUB QKEYS
 '''
 DEF SEG = &H40
 '
 KB = PEEK(&H1A)
 KB1 = PEEK(KB)
 KB2 = PEEK(KB + 1)
 '
 POKE KB, 0
 POKE KB + 1, 0
 '
 POKE &H1C, KB
 '''
END SUB
