' +---------------------------------------------------------------------+ ' | | ' | - I n k e y Q B . B a s - | ' | | ' | | ' | Public Domain - FreeWare | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | InkeyQB.Bas was written by Don Smith. | ' | EMail: smithdonb@earthlink.net | ' | Todays date is: 06/19/2008 | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | - ABOUT THE AUTHOR - | ' +---------------------------------------------------------------------+ ' | Hello. My name is Don Smith and I am a retired Math/History/Spanish | ' | teacher residing in Orange County, California. I am also a former | ' | 6-year Sergeant of Marines. Who-Rah! On certain forums I am known | ' | as MarineDon. My email is: smithdonb@earthlink.net | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | - COPYING AND DISTIBUTING - | ' +---------------------------------------------------------------------+ ' | Since this code is public domain and freeware, anyone may freely | ' | copy and distribute it. If you use the QuickBasic code in one of | ' | your own programs, you do not have to cite my name as the author, | ' | and you may even change its name. | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | SUB Boxboy is a complete box making routine which will place a | ' | shadow to left of right displaying the underlying text as 7, 0 | ' | See SUB Boxboy for complete details. | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | | ' | Compile: BC: InkeyQB.Bas | ' | LINK: InkeyQB.Bas | ' | LIB: BCom45.Lib | ' +---------------------------------------------------------------------+ DECLARE SUB TinyBox (ULRow, ULCol, LRRow, LRCol, BoxFGColr, BoxBGColr, SingOrDoub) inkeyhunt: COLOR 15, 1: CLS '====================================================================== ' Set up for SUB TinyBox for box at top/center '====================================================================== ULRow = 1 ULCol = 19 LRRow = 3 LRCol = 59 BoxFGColr = 15 BoxBGColr = 1 SingOrDoub = 1 CALL TinyBox(ULRow, ULCol, LRRow, LRCol, BoxFGColr, BoxBGColr, SingOrDoub) LOCATE 2, 22, 0, 0, 0 COLOR 15, 1: PRINT "I n k e y$ T r a p P r o g r a m"; '====================================================================== ' Set up for SUB TinyBox for main box '====================================================================== ULRow = 4 ULCol = 2 LRRow = 25 LRCol = 78 BoxFGColr = 15 BoxBGColr = 1 SingOrDoub = 1 CALL TinyBox(ULRow, ULCol, LRRow, LRCol, BoxFGColr, BoxBGColr, SingOrDoub) Ms1$ = "Press to exit or for information. Please do not press these" Ms2$ = "keys otherwise. is number 27 and is number -59." Ms3$ = "Ã" + STRING$(76, 196) + "´" Ms4$ = "Press any key or key combination to find the INKEY$ keycode number:" COLOR 15, 1 LOCATE 5, 5: PRINT Ms1$; COLOR 11, 1 LOCATE 5, 12: PRINT "Esc"; LOCATE 5, 29: PRINT "F1"; COLOR 15, 1 LOCATE 6, 5: PRINT Ms2$; LOCATE 8, 2: PRINT Ms3$; LOCATE 7, 5: PRINT Ms4$; Col% = 9 Row% = 8 DO DO q$ = INKEY$ LOOP UNTIL LEN(q$) IF ASC(q$) = 0 THEN q% = -ASC(RIGHT$(q$, 1)) ELSE q% = ASC(q$) END IF SELECT CASE q% CASE 27 'ESC key COLOR 7, 0: CLS : END CASE -59 'F1 key GOSUB inkey.information GOTO inkeyhunt CASE ELSE Info = 0: Info3 = 0 GOSUB find.inkey.number GOSUB set.row.col LOCATE Row%, Col%, 0, 0, 0 SELECT CASE q% CASE 127 TO 255 'Extended ASCII, characters 127 to 255 COLOR 15, 1 PRINT "Extended ASCII < "; CHR$(q%); " > = " + STR$(q%); CASE 10 COLOR 15, 1 PRINT " J or j....... = 10"; GOSUB set.row.col LOCATE Row%, Col%: PRINT " ...... = 10"; COLOR 14, 1 LOCATE Row%, Col% - 1: PRINT "*"; COLOR 15, 1 LOCATE 25, 35: PRINT "[ *Same ]"; COLOR 14, 1 LOCATE 25, 37: PRINT "*"; CASE 16 COLOR 15, 1 PRINT " P or p....... = 16"; COLOR 14, 1 LOCATE Row%, Col% - 1: PRINT "*"; COLOR 15, 1 LOCATE 25, 35: PRINT "[ *Same ]"; COLOR 14, 1 LOCATE 25, 37: PRINT "*"; CASE IS <> 10, IS <> 16 NumDots% = 20 - LEN(q$) COLOR 15, 1 PRINT q$ + STRING$(NumDots%, ".") + " = " + STR$(q%); IF Info = 2 THEN COLOR 14, 1 LOCATE Row%, Col% - 1: PRINT "*"; GOSUB set.row.col LOCATE Row%, Col%, 0, 0, 0 COLOR 15, 1 PRINT q2$ + " = " + STR$(q%); COLOR 14, 1 LOCATE Row%, Col% - 1: PRINT "*"; COLOR 15, 1 LOCATE 25, 35: PRINT "[ *Same ]"; COLOR 14, 1 LOCATE 25, 37: PRINT "*"; END IF IF Info3 = 3 THEN GOSUB set.row.col LOCATE Row%, Col%, 0, 0, 0 COLOR 15, 1 PRINT k3$ + " = " + STR$(q%); COLOR 14, 1 LOCATE Row%, Col% - 1: PRINT "*"; END IF IF Info4 = 4 THEN GOSUB set.row.col LOCATE Row%, Col%, 0, 0, 0 COLOR 15, 1 PRINT k4$ + " = " + STR$(q%); COLOR 14, 1 LOCATE Row%, Col% - 1: PRINT "*"; END IF Info = 0 Info2 = 0 Info3 = 0 Info4 = 0 END SELECT END SELECT LOOP set.row.col: IF Col% = 9 THEN Col% = 9 Row% = Row% + 1 IF Row% > 23 THEN Col% = 43 Row% = 9 END IF ELSEIF Col% = 43 THEN Col% = 43 Row% = Row% + 1 IF Row% > 23 THEN FOR ClearScrn% = 9 TO 24 LOCATE ClearScrn%, 4 COLOR 15, 1 PRINT SPACE$(73); NEXT LOCATE 25, 3 PRINT "À" + STRING$(75, CHR$(196)) + "Ù"; Col% = 9 Row% = 9 END IF END IF RETURN find.inkey.number: IF q% = 97 THEN q$ = "a" IF q% = 98 THEN q$ = "b" IF q% = 99 THEN q$ = "c" IF q% = 100 THEN q$ = "d" IF q% = 101 THEN q$ = "e" IF q% = 102 THEN q$ = "f" IF q% = 103 THEN q$ = "g" IF q% = 104 THEN q$ = "h" IF q% = 105 THEN q$ = "i" IF q% = 106 THEN q$ = "j" IF q% = 107 THEN q$ = "k" IF q% = 108 THEN q$ = "l" IF q% = 109 THEN q$ = "m" IF q% = 110 THEN q$ = "n" IF q% = 111 THEN q$ = "o" IF q% = 112 THEN q$ = "p" IF q% = 113 THEN q$ = "q" IF q% = 114 THEN q$ = "r" IF q% = 115 THEN q$ = "s" IF q% = 116 THEN q$ = "t" IF q% = 117 THEN q$ = "u" IF q% = 118 THEN q$ = "v" IF q% = 119 THEN q$ = "w" IF q% = 120 THEN q$ = "x" IF q% = 121 THEN q$ = "y" IF q% = 122 THEN q$ = "z" IF q% = 65 THEN q$ = "A" IF q% = 66 THEN q$ = "B" IF q% = 67 THEN q$ = "C" IF q% = 68 THEN q$ = "D" IF q% = 69 THEN q$ = "E" IF q% = 70 THEN q$ = "F" IF q% = 71 THEN q$ = "G" IF q% = 72 THEN q$ = "H" IF q% = 73 THEN q$ = "I" IF q% = 74 THEN q$ = "J" IF q% = 75 THEN q$ = "K" IF q% = 76 THEN q$ = "L" IF q% = 77 THEN q$ = "M" IF q% = 78 THEN q$ = "N" IF q% = 79 THEN q$ = "O" IF q% = 80 THEN q$ = "P" IF q% = 81 THEN q$ = "Q" IF q% = 82 THEN q$ = "R" IF q% = 83 THEN q$ = "S" IF q% = 84 THEN q$ = "T" IF q% = 85 THEN q$ = "U" IF q% = 86 THEN q$ = "V" IF q% = 87 THEN q$ = "W" IF q% = 88 THEN q$ = "X" IF q% = 89 THEN q$ = "Y" IF q% = 90 THEN q$ = "Z" IF q% = 48 THEN q$ = "0" IF q% = 49 THEN q$ = "1" IF q% = 50 THEN q$ = "2" IF q% = 51 THEN q$ = "3" IF q% = 52 THEN q$ = "4" IF q% = 53 THEN q$ = "5" IF q% = 54 THEN q$ = "6" IF q% = 55 THEN q$ = "7" IF q% = 56 THEN q$ = "8" IF q% = 57 THEN q$ = "9" IF q% = -59 THEN q$ = "F1" IF q% = -60 THEN q$ = "F2" IF q% = -61 THEN q$ = "F3" IF q% = -62 THEN q$ = "F4" IF q% = -63 THEN q$ = "F5" IF q% = -64 THEN q$ = "F6" IF q% = -65 THEN q$ = "F7" IF q% = -66 THEN q$ = "F8" IF q% = -67 THEN q$ = "F9" IF q% = -68 THEN q$ = "F10" IF q% = 96 THEN q$ = "< ` >" IF q% = 126 THEN q$ = "< ~ >" IF q% = 33 THEN q$ = "< ! >" IF q% = 64 THEN q$ = "< @ >" IF q% = 35 THEN q$ = "< # >" IF q% = 36 THEN q$ = "< $ >" IF q% = 37 THEN q$ = "< % >" IF q% = 94 THEN q$ = "< ^ >" IF q% = 38 THEN q$ = "< & >" IF q% = 42 THEN q$ = "< * >" IF q% = 40 THEN q$ = "< ( >" IF q% = 41 THEN q$ = "< ) >" IF q% = 45 THEN q$ = "< - > Dash" IF q% = 61 THEN q$ = "< = >" IF q% = 95 THEN q$ = "< _ > Underline" IF q% = 43 THEN q$ = "< + >" IF q% = 9 THEN q$ = "" IF q% = 32 THEN q$ = "" IF q% = 91 THEN q$ = "< [ >" IF q% = 93 THEN q$ = "< ] >" IF q% = 92 THEN q$ = "< \ >" IF q% = 47 THEN q$ = "< / >" IF q% = 123 THEN q$ = "< { >" IF q% = 125 THEN q$ = "< } >" IF q% = 124 THEN q$ = "< | >" 'IF q% = 8 THEN q$ = "" IF q% = 27 THEN q$ = "" IF q% = 44 THEN q$ = "< , > Comma" IF q% = 46 THEN q$ = "< . > Period" IF q% = -82 THEN q$ = "" IF q% = -83 THEN q$ = "" IF q% = -71 THEN q$ = "" IF q% = -79 THEN q$ = "" IF q% = -73 THEN q$ = "" IF q% = -81 THEN q$ = "" IF q% = -72 THEN q$ = "" IF q% = -80 THEN q$ = "" IF q% = -77 THEN q$ = "" IF q% = -75 THEN q$ = "" IF q% = 60 THEN q$ = "( < )" IF q% = 62 THEN q$ = "( > )" IF q% = 63 THEN q$ = "< ? >" IF q% = 34 THEN q$ = "< " + CHR$(34) + " > Apostrophe" IF q% = 59 THEN q$ = "< ; > Semi-colon" IF q% = 58 THEN q$ = "< : > Colon" IF q% = 1 THEN q$ = " A or a" Info = 2 q2$ = " <1 on keypad> " END IF IF q% = 2 THEN q$ = " B or b" Info = 2 q2$ = " <2 on keypad> " END IF IF q% = 3 THEN q$ = " C or c" Info = 2 q2$ = " <3 on keypad> " END IF IF q% = 4 THEN q$ = " D or d" Info = 2 q2$ = " <4 on keypad> " END IF IF q% = 5 THEN q$ = " E or e" Info = 2 q2$ = " <5 on keypad> " END IF IF q% = 6 THEN q$ = " F or f" Info = 2 q2$ = " <6 on keypad> " END IF IF q% = 7 THEN q$ = " G or g" Info = 2 q2$ = " <7 on keypad> " END IF IF q% = 8 THEN q$ = " H or h" Info = 2 q2$ = " <8 on keypad> " Info3 = 3 k3$ = " " Info4 = 4 k4$ = "........." END IF IF q% = 9 THEN q$ = " I or i" Info = 2 q2$ = " <9 on keypad> " END IF IF q% = 10 THEN q$ = " J or j" Info = 2 q2$ = " ......" END IF IF q% = 11 THEN q$ = " K or k" IF q% = 12 THEN q$ = " L or l" IF q% = 13 THEN q$ = " M or m" Info = 2 q2$ = "............." END IF IF q% = 14 THEN q$ = " N or n" IF q% = 15 THEN q$ = " O or o" IF q% = 16 THEN q$ = " P" END IF IF q% = 17 THEN q$ = " Q or q" IF q% = 18 THEN q$ = " R or r" IF q% = 19 THEN q$ = " S or s" IF q% = 20 THEN q$ = " T or t" IF q% = 21 THEN q$ = " U or u" IF q% = 22 THEN q$ = " V or v" IF q% = 23 THEN q$ = " W or w" IF q% = 24 THEN q$ = " X or x" IF q% = 25 THEN q$ = " Y or y" IF q% = 26 THEN q$ = " Z or z" IF q% = -3 THEN q$ = "<2> under F keys" IF q% = 30 THEN q$ = "<6> under F keys" IF q% = 29 THEN q$ = " < ] >" IF q% = -84 THEN q$ = " F1" IF q% = -85 THEN q$ = " F2" IF q% = -86 THEN q$ = " F3" IF q% = -87 THEN q$ = " F4" IF q% = -88 THEN q$ = " F5" IF q% = -89 THEN q$ = " F6" IF q% = -90 THEN q$ = " F7" IF q% = -91 THEN q$ = " F8" IF q% = -92 THEN q$ = " F9" IF q% = -93 THEN q$ = " F10" IF q% = -15 THEN q$ = " " Info = 2 q$ = " ....." END IF IF q% = -119 THEN q$ = " " IF q% = -132 THEN q$ = " " IF q% = -118 THEN q$ = " " IF q% = -116 THEN q$ = " " IF q% = -115 THEN q$ = " " IF q% = 28 THEN q$ = " < \ >" IF q% = 127 THEN q$ = " " IF q% = 31 THEN q$ = " < - >" IF q% = -30 THEN q$ = " A or a" IF q% = -48 THEN q$ = " B or b" IF q% = -46 THEN q$ = " C or c" IF q% = -32 THEN q$ = " D or d" IF q% = -18 THEN q$ = " E or e" IF q% = -33 THEN q$ = " F or f" IF q% = -34 THEN q$ = " G or g" IF q% = -35 THEN q$ = " H or h" IF q% = -23 THEN q$ = " I or i" IF q% = -36 THEN q$ = " J or j" IF q% = -37 THEN q$ = " K or k" IF q% = -38 THEN q$ = " L or l" IF q% = -50 THEN q$ = " M or m" IF q% = -49 THEN q$ = " N or n" IF q% = -24 THEN q$ = " O or o" IF q% = -25 THEN q$ = " P or p" IF q% = -25 THEN q$ = " Q or q" IF q% = -19 THEN q$ = " R or r" IF q% = -32 THEN q$ = " S or s" IF q% = -20 THEN q$ = " T or t" IF q% = -22 THEN q$ = " U or u" IF q% = -47 THEN q$ = " V or v" IF q% = -17 THEN q$ = " W or w" IF q% = -45 THEN q$ = " X or x" IF q% = -21 THEN q$ = " Y or y" IF q% = -44 THEN q$ = " Z or z" IF q% = -120 THEN q$ = " <1>" IF q% = -121 THEN q$ = " <2>" IF q% = -122 THEN q$ = " <3>" IF q% = -123 THEN q$ = " <4>" IF q% = -124 THEN q$ = " <5>" IF q% = -125 THEN q$ = " <6>" IF q% = -126 THEN q$ = " <7>" IF q% = -127 THEN q$ = " <8>" IF q% = -128 THEN q$ = " <9>" IF q% = -129 THEN q$ = " <0>" IF q% = -130 THEN q$ = " < - >" IF q% = -131 THEN q$ = " < = >" IF q% = 8 THEN q$ = "<>On KeyPad" IF q% = 2 THEN q$ = "<>On KeyPad" IF q% = 6 THEN q$ = "<->On KeyPad" IF q% = 4 THEN q$ = "<->On KeyPad" IF q% = -117 THEN q$ = " <1 on keypad>" Info = 2 q2$ = " ........" END IF IF q% = -118 THEN q$ = " <3 on keypad>" Info = 2 q2$ = " .." END IF IF q% = -115 THEN q$ = " <4 on keypad>" Info = 2 q2$ = " " Info = 3 q$ = " <5 on keypad>" END IF IF q% = -116 THEN q$ = " <6 on keypad>" Info = 2 q2$ = " " END IF IF q% = 30464 THEN q$ = " <7 on keypad>" Info = 2 q2$ = " ......." END IF IF q% = -132 THEN q$ = " <9 on keypad>" Info = 2 q2$ = " ...." END IF IF q% = -94 THEN q$ = " F1" IF q% = -95 THEN q$ = " F2" IF q% = -96 THEN q$ = " F3" IF q% = -97 THEN q$ = " F4" IF q% = -98 THEN q$ = " F5" IF q% = -99 THEN q$ = " F6" IF q% = -100 THEN q$ = " F7" IF q% = -101 THEN q$ = " F8" IF q% = -102 THEN q$ = " F9" IF q% = -103 THEN q$ = " F10" IF q% = -104 THEN q$ = " F1" IF q% = -105 THEN q$ = " F2" IF q% = -106 THEN q$ = " F3" IF q% = -107 THEN q$ = " F4" IF q% = -108 THEN q$ = " F5" IF q% = -109 THEN q$ = " F6" IF q% = -110 THEN q$ = " F7" IF q% = -111 THEN q$ = " F8" IF q% = -112 THEN q$ = " F9" IF q% = -113 THEN q$ = " F10" RETURN inkey.information: COLOR 15, 1: CLS REDIM Inkey.Info$(1 TO 25) Inkey.Info$(1) = "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" Inkey.Info$(2) = "³ Use The INKEY$ Command To Trap Keyboard Keys : ³" Inkey.Info$(3) = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´" Inkey.Info$(4) = "³ The INKEY$ command returns unique numbers which can ³" Inkey.Info$(5) = "³ enable the programmer to employ almost all keys of the ³" Inkey.Info$(6) = "³ keyboard. But be careful to set it up correctly. ³" Inkey.Info$(7) = "³ (An example only. Notice the double DO/LOOP) ³" Inkey.Info$(8) = "³ DO ³" Inkey.Info$(9) = "³ DO ³" Inkey.Info$(10) = "³ T$ = INKEY$ ³" Inkey.Info$(11) = "³ LOOP UNTIL LEN(T$) ³" Inkey.Info$(12) = "³ IF ASC(T$) = 0 THEN ³" Inkey.Info$(13) = "³ T% = -ASC(RIGHT$(T$, 1)) ³" Inkey.Info$(14) = "³ ELSE ³" Inkey.Info$(15) = "³ T% = ASC(T$) ³" Inkey.Info$(16) = "³ END IF ³" Inkey.Info$(17) = "³ SELECT CASE ³" Inkey.Info$(18) = "³ CASE -59 ³" Inkey.Info$(19) = "³ CLS: PRINT " + CHR$(34) + "You pressed " + CHR$(34) + ";: END" + " ³" Inkey.Info$(20) = "³ CASE 27: CLS: END ³" Inkey.Info$(21) = "³ END SELECT ³" Inkey.Info$(22) = "³ LOOP ³" Inkey.Info$(23) = "³ The programmer may coninuue to employ a list of SELECT ³" Inkey.Info$(24) = "³ CASE/CASE or IF/ELSEIF commands to handle key presses. ³" Inkey.Info$(25) = "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ Press To Return ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" COLOR 15, 1 FOR InfoScreen% = 1 TO 25 LOCATE InfoScreen%, 11, 0, 0, 0 PRINT Inkey.Info$(InfoScreen%); NEXT COLOR 11, 1 LOCATE 2, 18: PRINT "Use The INKEY$ Command To Trap Keyboard Keys :"; LOCATE 25, 30: PRINT "Press To Return"; COLOR 15, 1 LOCATE 25, 37: PRINT "Esc"; DO: LOOP UNTIL INKEY$ = CHR$(27) RETURN SUB TinyBox (ULRow, ULCol, LRRow, LRCol, BoxFGColr, BoxBGColr, SingOrDoub) ' +----------------------------------------------------------------------+ ' | SUB TinyBox | ' +----------------------------------------------------------------------+ ' | ULRow = Upper Left Row. ULCol = Upper Left Column. | ' | LRRow = Lower Right Row. LRCol = Lower Right Column. | ' | BoxFGColr = The Foreground Color The Box. | ' | BoxBGColr = The Back Ground Color Of The Box. | ' | SingOrDoub = 1 (Single Line Box). SingOrDoub = 2 (Double Line Box). | ' +----------------------------------------------------------------------+ COLOR BoxFGColr, BoxBGColr IF SingOrDoub = 1 THEN LOCATE ULRow, ULCol PRINT CHR$(218) + STRING$(LRCol - ULCol, CHR$(196)) + CHR$(191); FOR BoxY = ULRow + 1 TO LRRow - 1 LOCATE BoxY, ULCol PRINT CHR$(179) + STRING$(LRCol - ULCol, " ") + CHR$(179); NEXT LOCATE LRRow, ULCol PRINT CHR$(192) + STRING$(LRCol - ULCol, CHR$(196)) + CHR$(217); ELSEIF SingOrDoub = 2 THEN LOCATE ULRow, ULCol PRINT CHR$(201) + STRING$(LRCol - ULCol, CHR$(205)) + CHR$(187); FOR BoxY = ULRow + 1 TO LRRow - 1 LOCATE BoxY, ULCol PRINT CHR$(186) + STRING$(LRCol - ULCol, " ") + CHR$(186); NEXT LOCATE LRRow, ULCol PRINT CHR$(200) + STRING$(LRCol - ULCol, CHR$(205)) + CHR$(188); END IF END SUB