BBS: Inland Empire Archive Date: 05-09-92 (01:09) Number: 185 From: TOM HAMMOND Refer#: NONE To: MICHAEL MALLEY Recvd: NO Subj: Re: Forgotten Statement Conf: (2) Quik_Bas
MM> DO
MM> KeyStroke$ = INKEY$
MM> LOOP UNTIL LEN(KeyStroke$)
MM> SELECT CASE ASC(KeyStroke$)
MM> ...
MM> END SELECT
MM>This will eliminate all string comparison, thus making everything much
MM>faster. If you will be looking for extended characters (i.e. F1, Up
MM>arrow, etc...), first do a check on the length of KeyStroke$. If it is
MM>two, then make the comparison SELECT CASE ASC(RIGHT$(KeyStroke$,1)).
MM>This will prove to be the most efficient.
Michael:
Forgive me for sticking my nose in here, but...
Just as a matter of preference, I like the way someone
(maybe Matt Hart, but can't recall) implemented it..
This has the added advantage of 'forcing' the ASCII value for
EXTENDED (2-byte) KEY CODES to be NEGATIVE, thus making them
easily identifiable later AND helping to eliminate the
ambiguity between ASC("M") = 77 and ASC(RIGHT$(KeyStroke$,1)) = 77
when KeyStroke$ = <RtArrow>.
GetKeyStroke:
DO
KeyStroke$ = INKEY$
LOOP UNTIL LEN(KeyStroke$)
If LEN(KeyStroke$) = 1 THEN
a% = ASC(KeyStroke$)
ELSE
a% = -(RIGHT$(KeyStroke$,1))
END IF
SELECT CASE A
CASE -75 ' <LtArrow>
...
CASE -77 ' <RtArrow>
...
CASE -71 ' <Home>
...
CASE -79 ' <End>
...
CASE -83 ' <Del>
...
CASE 8 ' <BackSpace>
...
CASE 32 TO 255 ' Alpha Keys
...
CASE 13 ' <Enter>
...
CASE ELSE
GOTO GetKeyStroke
END SELECT
Again, just personal preference.
Tom Hammond N0SS
--- WM v2.00/91-0231
* Origin: The Modem Zone BBS (314) 893-5106 (1:289/2)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET