[futurebasic] Re: [FB] Test of alt key

Message: < previous - next > : Reply : Subscribe : Cleanse
Home   : June 2001 : Group Archive : Group : All Groups

From: Ken Shmidheiser <k.shmidheiser@...>
Date: Sun, 10 Jun 2001 02:23:19 -0600
Concerning disabling FB^3's built-in Command / Period routine, George
Wood asked:

>All of these look great, however, I need a routine that will function like
>command period. without the consequences of a commandperiod such as with
>tron/troff. In other words, how to test if the commandkey is down and then a
>certain key (such as period) is also down.Thanks
>GeoWood

George,

Disabling Command / Period is as easy as creating an empty function:

LOCAL FN doBreak
  'Put your own code for Command / Period in here
  'or leave empty to disable FB^3's break routine
END FN

and in your event loop calling it with:

ON BREAK FN doBreak

This causes FB^3 to disable its built-in Command / Period break
routine. (See Reference manual, Page 350.) Of course you can add your
own code in FN doBreak which will be called when Command / Period is
invoked.

Normally I would capture keystrokes in the ON EDIT statement.
However, the following demo is based on Robert P.'s recent excursion
into ON EVENT. This will test for all keys on the keyboard (with the
exception of the Power key, of course), along with most Command / key
combinations. I do not necessarily recommend this method (it's brand
new to me), but post it as a springboard for ideas and conversation.

I have noticed that the ~ (tilde) key is an exception to the rule,
for instance reporting itself as getKeys 3  1026 rather than the
expected 3  1024 when used in combination with Caps lock, and 3  1025
when used in combination with Shift. Perhaps Robert can explain the
anomaly.

Where I find key testing a problem is when attempting to test for
multiple modifier keys.

Many of the demo examples posted here use:

DO
'do your key testing stuff here
HANDLEEVENTS
UNTIL 0
END

This does not help in real life situations where we would probably
use ON EDIT to capture and massage the keystrokes.

Along with you, I would welcome seeing other (translated: better)
ways of doing keystroke testing in combination with modifier keys and
multiple modifier.

Ken

Please adjust for e-mail line breaks. Also note that the Associate
server will kill constant underscores, although they should come
through via news group e-mail.

'-------- Begin FB^3 code ---------

INCLUDE "Tlbx Appearance.Incl"

BEGIN GLOBALS
dim gQuit AS BOOLEAN
END GLOBALS

LOCAL FN buildMenus
APPLE MENU "(FB^3 Getkeys demo..."
MENU 1,0,_enable,"File"
MENU 1,1,_disable,"-"
MENU 1,2,_enable,"Quit/Q"
EDIT MENU 2
END FN

LOCAL FN buildWindow
DIM wndPtr  AS POINTER
DIM err     AS SHORT
DIM AS STR255 info1Str, info2Str
WINDOW -1,"Macintosh Keyboard Key Tester",(0,0)-(420,190),_docNoGrow
info1Str = "Press any key to reveal its GetKeys ¬
numbers and ASCII value..."
info2Str = "Press Command key and any other key¬
  to test the combination."
EDIT = 4
'text ,,, _srcCopy
EDIT FIELD 1,info1Str, ( 20, 20)-(400, 35),_statFramedInvert_hilite
EDIT FIELD 2, "" ,     ( 20, 55)-(400, 70),_statFramed
EDIT FIELD 3, "" ,     ( 20, 90)-(400,105),_statFramed
wndPtr = WINDOW(_wndPointer) : IF wndPtr = _nil THEN EXIT FN
err    = FN SetThemeWindowBackground(wndPtr,¬
_kThemeActiveDialogBackgroundBrush,_zTrue)
EDIT FIELD 4,info2Str, ( 20,128)-(400,163),_statNoFramed,_centerJust
BUTTON 1, 1, "Quit",   (350,159)-(400,179),_shadow
BUTTON 4, 1,,          (  0,  5)-(420, 09), 145
BUTTON 5, 1,,          (  0,115)-(420,119), 145
BUTTON 6, 1,,          (  0,145)-(420,149), 145
WINDOW 1
END FN

LOCAL FN doEvent
DIM keys(7)      as SHORT
DIM evnt&
DIM aStr         AS STR255
DIM bStr         AS STR255
DIM cStr         AS STR255
DIM code1Str     AS STR255
DIM code2Str     AS STR255
DIM code3Str     AS STR255
DIM code4Str     AS STR255
DIM asciiStr     AS STR255
DIM hexStringStr AS STR255
DIM i            as INTEGER
DIM code         AS INTEGER
DIM character    AS LONG
DIM commandDown  AS BOOLEAN

evnt& = event
CALL GETKEYS( keys(0) )

LONG IF( evnt&.evtmeta% AND _cmdKey%) != 0
commandDown = _zTrue
SELECT CASE
CASE (( keys(3) == 512   )) != 0
EDIT$(2) = "Command / Spacebar"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 3  512."
CASE (( keys(5) == 1024  )) != 0
EDIT$(2) = "Command / Keypad 0"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  1024."
CASE (( keys(5) == 2048  )) != 0
EDIT$(2) = "Command / Keypad 1"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  2048."
CASE (( keys(5) == 4096  )) != 0
EDIT$(2) = "Command / Keypad 2"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  4096."
CASE (( keys(5) == 8192  )) != 0
EDIT$(2) = "Command / Keypad 3"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  8192."
CASE (( keys(5) == 16384 )) != 0
EDIT$(2) = "Command / Keypad 4"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  16384."
CASE (( keys(5) == -32768)) != 0
EDIT$(2) = "Command / Keypad 5"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  -38768."
CASE (( keys(5) == 1     )) != 0
EDIT$(2) = "Command / Keypad 6"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  1."
CASE (( keys(5) == 2     )) != 0
EDIT$(2) = "Command / Keypad 7"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  7."
CASE (( keys(5) == 8     )) != 0
EDIT$(2) = "Command / Keypad 8"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  8."
CASE (( keys(5) == 16    )) != 0
EDIT$(2) = "Command / Keypad 9"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  16."
CASE (( keys(4) == -32768)) != 0
EDIT$(2) = "Command / Keypad Clear"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 4  -38768."
CASE (( keys(5) == 512   )) != 0
EDIT$(2) = "Command / Keypad = (equals)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 5  512."
CASE (( keys(4) == 8     )) != 0
EDIT$(2) = "Command / Keypad / (divide)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 4  8."
CASE (( keys(4) == 2048  )) != 0
EDIT$(2) = "Command / Keypad * (multiply)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 4  2048."
CASE (( keys(4) == 64    )) != 0
EDIT$(2) = "Command / Keypad - (minus)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 4  64."
CASE (( keys(4) == 8192  )) != 0
EDIT$(2) = "Command / Keypad + (plus)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 4  8192."
CASE (( keys(4) == 16    )) != 0
EDIT$(2) = "Command / Keypad Enter"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 4  16."
CASE (( keys(4) == 512   )) != 0
EDIT$(2) = "Command / Keypad . (decimal)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 4  512."
CASE (( keys(7) == 8     )) != 0
EDIT$(2) = "Command / Arrow key left"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  8."
CASE (( keys(7) == 16    )) != 0
EDIT$(2) = "Command / Arrow key right"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  16."
CASE (( keys(7) == 64    )) != 0
EDIT$(2) = "Command / Arrow key up"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  64."
CASE (( keys(7) == 32    )) != 0
EDIT$(2) = "Command / Arrow key down"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  32."
CASE (( keys(1) == 1024  )) != 0
EDIT$(2) = "Command / ! (exclamation point)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  1024."
CASE (( keys(1) == 2048  )) != 0
EDIT$(2) = "Command / @ (commercial at)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  2048."
CASE (( keys(1) == 4096  )) != 0
EDIT$(2) = "Command / # (number sign)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  4096."
CASE (( keys(1) == 8192  )) != 0
EDIT$(2) = "Command / $ (dollar sign)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  8192."
CASE (( keys(1) == -32768)) != 0
EDIT$(2) = "Command / % (percent)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1 -32768."
CASE (( keys(1) == 16384 )) != 0
EDIT$(2) = "Command / ^ (caret)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  16384."
CASE (( keys(1) == 4     )) != 0
EDIT$(2) = "Command / & (ampersand)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  4."
CASE (( keys(1) == 16    )) != 0
EDIT$(2) = "Command / * (asterisk)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  16."
CASE (( keys(1) == 2     )) != 0
EDIT$(2) = "Command / ( (left parenthesis)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  2."
CASE (( keys(1) == 32    )) != 0
EDIT$(2) = "Command / ) (right parenthesis)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  32."
CASE (( keys(1) == 8    )) != 0
EDIT$(2) = "Command / _ (underscore)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  8."
CASE (( keys(0) == 256   )) != 0
EDIT$(2) = "Command / Capital A"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  256."
CASE (( keys(0) == 8     )) != 0
EDIT$(2) = "Command / Capital B"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  8."
CASE (( keys(0) == 1     )) != 0
EDIT$(2) = "Command / Capital C"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  1."
CASE (( keys(0) == 1024  )) != 0
EDIT$(2) = "Command / Capital D"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  1024."
CASE (( keys(0) == 64    )) != 0
EDIT$(2) = "Command / Capital E"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  64."
CASE (( keys(0) == 2048  )) != 0
EDIT$(2) = "Command / Capital F"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  2048."
CASE (( keys(0) == 8192  )) != 0
EDIT$(2) = "Command / Capital G"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  8192."
CASE (( keys(0) == 4096  )) != 0
EDIT$(2) = "Command / Capital H"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  4096."
CASE (( keys(2) == 1024  )) != 0
EDIT$(2) = "Command / Capital I"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  1024."
CASE (( keys(2) == 16384 )) != 0
EDIT$(2) = "Command / Capital J"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  16384."
CASE (( keys(2) == 1     )) != 0
EDIT$(2) = "Command / Capital K"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  1."
CASE (( keys(2) == 8192  )) != 0
EDIT$(2) = "Command / Capital L"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  8192."
CASE (( keys(2) == 64    )) != 0
EDIT$(2) = "Command / Capital M"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  64."
CASE (( keys(2) == 32    )) != 0
EDIT$(2) = "Command / Capital M"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  32."
CASE (( keys(1) == 128   )) != 0
EDIT$(2) = "Command / Capital O"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  128."
CASE (( keys(2) == 2048  )) != 0
EDIT$(2) = "Command / Capital P"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  2048."
CASE (( keys(0) == 16    )) != 0
EDIT$(2) = "Command / Capital Q"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  16."
CASE (( keys(0) == 128   )) != 0
EDIT$(2) = "Command / Capital R"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  128."
CASE (( keys(0) == 512   )) != 0
EDIT$(2) = "Command / Capital S"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  512."
CASE (( keys(1) == 512   )) != 0
EDIT$(2) = "Command / Capital T"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  512."
CASE (( keys(2) == 256   )) != 0
EDIT$(2) = "Command / Capital U"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  256."
CASE (( keys(0) == 2     )) != 0
EDIT$(2) = "Command / Capital V"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  2."
CASE (( keys(0) == 32    )) != 0
EDIT$(2) = "Command / Capital W"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  32."
CASE (( keys(0) == -32768)) != 0
EDIT$(2) = "Command / Capital X"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  -32768."
CASE (( keys(1) == 256   )) != 0
EDIT$(2) = "Command / Capital Y"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  256."
CASE (( keys(0) == 16384 )) != 0
EDIT$(2) = "Command / Capital Z"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 0  16384."
CASE (( keys(2) == 2     )) != 0
EDIT$(2) = "Command / : (colon)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  512."
CASE (( keys(2) == 8     )) != 0
EDIT$(2) = "Command / > (less than)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 3  2."
CASE (( keys(2) == 16    )) != 0
EDIT$(2) = "Command / ? (question mark"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  16."
CASE (( keys(2) == 128   )) != 0
EDIT$(2) = "Command / . (period)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  128."
CASE (( keys(2) == -32768)) != 0
EDIT$(2) = "Command / "" (quote)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  -32768."
CASE (( keys(3) == 256   )) != 0
EDIT$(2) = "Command / Tab"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 3  256."
CASE (( keys(3) == 1026  )) != 0
EDIT$(2) = "Command / ~ (tilde)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 3  1026."
CASE (( keys(1) == 8     )) != 0
EDIT$(2) = "Command / _ (underscore)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  8."
CASE (( keys(1) == 1     )) != 0
EDIT$(2) = "Command / + (plus)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  1."
CASE (( keys(3) == 2048  )) != 0
EDIT$(2) = "Command / Delete"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 3  2048."
CASE (( keys(2) == 512   )) != 0
EDIT$(2) = "Command / { (left curly bracket)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  512."
CASE (( keys(1) == 64    )) != 0
EDIT$(2) = "Command / } (right curly brace)"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 1  64."
CASE (( keys(2) == 4     )) != 0
EDIT$(2) = "Command / | (pipe) "
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  4."
CASE (( keys(2) == 4096  )) != 0
EDIT$(2) = "Command / Return"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 2  4096."
CASE (( keys(7) == 1024  )) != 0
EDIT$(2) = "Command / Help"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  1024."
CASE (( keys(7) == 2048  )) != 0
EDIT$(2) = "Command / Home"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  2048."
CASE (( keys(7) == 4096  )) != 0
EDIT$(2) = "Command / Page Up"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  4096."
CASE (( keys(7) == 8192  )) != 0
EDIT$(2) = "Command / Forward Delete"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  8192."
CASE (( keys(7) == -32768)) != 0
EDIT$(2) = "Command / End"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  -32768."
CASE (( keys(7) == 2     )) != 0
EDIT$(2) = "Command / Page Down"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  2."
CASE (( keys(3) == 8192  )) != 0
EDIT$(2) = "Command / Escape"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 3  8192."
CASE (( keys(7) == 4     )) != 0
EDIT$(2) = "Command / F1"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  4."
CASE (( keys(7) == 1     )) != 0
EDIT$(2) = "Command / F2"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  1."
CASE (( keys(6) == 2048  )) != 0
EDIT$(2) = "Command / F3"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  2048."
CASE (( keys(7) == 16384 )) != 0
EDIT$(2) = "Command / F4"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  16384."
CASE (( keys(6) == 256   )) != 0
EDIT$(2) = "Command / F5"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  256."
CASE (( keys(6) == 512   )) != 0
EDIT$(2) = "Command / F6"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  512."
CASE (( keys(6) == 1024  )) != 0
EDIT$(2) = "Command / F7"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  1024."
CASE (( keys(6) == 4096  )) != 0
EDIT$(2) = "Command / F8"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  4096."
CASE (( keys(6) == 8192  )) != 0
EDIT$(2) = "Command / F9"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  8192."
CASE (( keys(6) == 32    )) != 0
EDIT$(2) = "Command / F10"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  32."
CASE (( keys(6) == -32768)) != 0
EDIT$(2) = "Command / F11"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  -32768."
CASE (( keys(6) == 128   )) != 0
EDIT$(2) = "Command / F12"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  128."
CASE (( keys(6) == 2     )) != 0
EDIT$(2) = "Command / F13"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  2."
CASE (( keys(6) == 8     )) != 0
EDIT$(2) = "Command / F14"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 6  8."
CASE (( keys(7) == 512   )) != 0
EDIT$(2) = "Command / F15"
EDIT$(3) = "The getKey numbers are: 3  -38768 AND 7  512."
END SELECT
XELSE
commandDown = _false
SELECT CASE
CASE (( keys(3) == 512   )) != 0
EDIT$(2) = "Spacebar"
CASE (( keys(5) == 1024  )) != 0
EDIT$(2) = "Keypad 0"
CASE (( keys(5) == 2048  )) != 0
EDIT$(2) = "Keypad 1"
CASE (( keys(5) == 4096  )) != 0
EDIT$(2) = "Keypad 2"
CASE (( keys(5) == 8192  )) != 0
EDIT$(2) = "Keypad 3"
CASE (( keys(5) == 16384 )) != 0
EDIT$(2) = "Keypad 4"
CASE (( keys(5) == -32768)) != 0
EDIT$(2) = "Keypad 5"
CASE (( keys(5) == 1     )) != 0
EDIT$(2) = "Keypad 6"
CASE (( keys(5) == 2     )) != 0
EDIT$(2) = "Keypad 7"
CASE (( keys(5) == 8     )) != 0
EDIT$(2) = "Keypad 8"
CASE (( keys(5) == 16    )) != 0
EDIT$(2) = "Keypad 9"
CASE (( keys(4) == -32768)) != 0
EDIT$(2) = "Keypad Clear"
CASE (( keys(5) == 512   )) != 0
EDIT$(2) = "Keypad = (equals)"
CASE (( keys(4) == 8     )) != 0
EDIT$(2) = "Keypad / (divide)"
CASE (( keys(4) == 2048  )) != 0
EDIT$(2) = "Keypad * (multiply)"
CASE (( keys(4) == 64    )) != 0
EDIT$(2) = "Keypad - (minus)"
CASE (( keys(4) == 8192  )) != 0
EDIT$(2) = "Keypad + (plus)"
CASE (( keys(4) == 16    )) != 0
EDIT$(2) = "Keypad Enter"
CASE (( keys(4) == 512   )) != 0
EDIT$(2) = "Keypad . (decimal)"
CASE (( keys(7) == 8     )) != 0
EDIT$(2) = "Arrow key left"
CASE (( keys(7) == 16    )) != 0
EDIT$(2) = "Arrow key right"
CASE (( keys(7) == 64    )) != 0
EDIT$(2) = "Arrow key up"
CASE (( keys(7) == 32    )) != 0
EDIT$(2) = "Arrow key down"
CASE (( keys(1) == 1024  )) != 0
EDIT$(2) = "1"
CASE (( keys(1) == 2048  )) != 0
EDIT$(2) = "2"
CASE (( keys(1) == 4096  )) != 0
EDIT$(2) = "3"
CASE (( keys(1) == 8192  )) != 0
EDIT$(2) = "4"
CASE (( keys(1) == -32768)) != 0
EDIT$(2) = "5"
CASE (( keys(1) == 16384 )) != 0
EDIT$(2) = "6"
CASE (( keys(1) == 4     )) != 0
EDIT$(2) = "7"
CASE (( keys(1) == 16    )) != 0
EDIT$(2) = "8"
CASE (( keys(1) == 2     )) != 0
EDIT$(2) = "9"
CASE (( keys(1) == 32    )) != 0
EDIT$(2) = "0"
CASE (( keys(0) == 256   )) != 0
EDIT$(2) = "lowercase a"
CASE (( keys(0) == 8     )) != 0
EDIT$(2) = "lowercase b"
CASE (( keys(0) == 1     )) != 0
EDIT$(2) = "lowercase c"
CASE (( keys(0) == 1024  )) != 0
EDIT$(2) = "lowercase d"
CASE (( keys(0) == 64    )) != 0
EDIT$(2) = "lowercase e"
CASE (( keys(0) == 2048  )) != 0
EDIT$(2) = "lowercase f"
CASE (( keys(0) == 8192  )) != 0
EDIT$(2) = "lowercase g"
CASE (( keys(0) == 4096  )) != 0
EDIT$(2) = "lowercase h"
CASE (( keys(2) == 1024  )) != 0
EDIT$(2) = "lowercase i"
CASE (( keys(2) == 16384 )) != 0
EDIT$(2) = "lowercase j"
CASE (( keys(2) == 1     )) != 0
EDIT$(2) = "lowercase k"
CASE (( keys(2) == 8192  )) != 0
EDIT$(2) = "lowercase l"
CASE (( keys(2) == 64    )) != 0
EDIT$(2) = "lowercase m"
CASE (( keys(2) == 32    )) != 0
EDIT$(2) = "lowercase n"
CASE (( keys(1) == 128   )) != 0
EDIT$(2) = "lowercase o"
CASE (( keys(2) == 2048  )) != 0
EDIT$(2) = "lowercase p"
CASE (( keys(0) == 16    )) != 0
EDIT$(2) = "lowercase q"
CASE (( keys(0) == 128   )) != 0
EDIT$(2) = "lowercase r"
CASE (( keys(0) == 512   )) != 0
EDIT$(2) = "lowercase s"
CASE (( keys(1) == 512   )) != 0
EDIT$(2) = "lowercase t"
CASE (( keys(2) == 256   )) != 0
EDIT$(2) = "lowercase u"
CASE (( keys(0) == 2     )) != 0
EDIT$(2) = "lowercase v"
CASE (( keys(0) == 32    )) != 0
EDIT$(2) = "lowercase w"
CASE (( keys(0) == -32768)) != 0
EDIT$(2) = "lowercase x"
CASE (( keys(1) == 256   )) != 0
EDIT$(2) = "lowercase y"
CASE (( keys(0) == 16384 )) != 0
EDIT$(2) = "lowercase z"
CASE (( keys(2) == 2     )) != 0
EDIT$(2) = "; (semicolon)"
CASE (( keys(2) == 8     )) != 0
EDIT$(2) = ", (comma)"
CASE (( keys(2) == 16    )) != 0
EDIT$(2) = "/ (solidus/slash)"
CASE (( keys(2) == 128   )) != 0
EDIT$(2) = ". (period)"
CASE (( keys(2) == -32768)) != 0
EDIT$(2) = "' (apostrophe)"
CASE (( keys(3) == 256   )) != 0
EDIT$(2) = "Tab"
CASE (( keys(3) == 1024  )) != 0
EDIT$(2) = "` (acute accent)"
CASE (( keys(1) == 8     )) != 0
EDIT$(2) = "- (hyphen)"
CASE (( keys(1) == 1     )) != 0
EDIT$(2) = "= (equals)"
CASE (( keys(3) == 2048  )) != 0
EDIT$(2) = "Delete"
CASE (( keys(2) == 512   )) != 0
EDIT$(2) = "[ (left bracket)"
CASE (( keys(1) == 64    )) != 0
EDIT$(2) = "] (right bracket)"
CASE (( keys(2) == 4     )) != 0
EDIT$(2) = "\ (reverse solidus/backslash) "
CASE (( keys(2) == 4096  )) != 0
EDIT$(2) = "Return"
CASE (( keys(7) == 1024  )) != 0
EDIT$(2) = "Help"
CASE (( keys(7) == 2048  )) != 0
EDIT$(2) = "Home"
CASE (( keys(7) == 4096  )) != 0
EDIT$(2) = "Page Up"
CASE (( keys(7) == 8192  )) != 0
EDIT$(2) = "Forward Delete"
CASE (( keys(7) == -32768)) != 0
EDIT$(2) = "End"
CASE (( keys(7) == 2     )) != 0
EDIT$(2) = "Page Down"
CASE (( keys(3) == 8192  )) != 0
EDIT$(2) = "Escape"
CASE (( keys(7) == 4     )) != 0
EDIT$(2) = "F1"
CASE (( keys(7) == 1     )) != 0
EDIT$(2) = "F2"
CASE (( keys(6) == 2048  )) != 0
EDIT$(2) = "F3"
CASE (( keys(7) == 16384 )) != 0
EDIT$(2) = "F4"
CASE (( keys(6) == 256   )) != 0
EDIT$(2) = "F5"
CASE (( keys(6) == 512   )) != 0
EDIT$(2) = "F6"
CASE (( keys(6) == 1024  )) != 0
EDIT$(2) = "F7"
CASE (( keys(6) == 4096  )) != 0
EDIT$(2) = "F8"
CASE (( keys(6) == 8192  )) != 0
EDIT$(2) = "F9"
CASE (( keys(6) == 32    )) != 0
EDIT$(2) = "F10"
CASE (( keys(6) == -32768)) != 0
EDIT$(2) = "F11"
CASE (( keys(6) == 128   )) != 0
EDIT$(2) = "F12"
CASE (( keys(6) == 2     )) != 0
EDIT$(2) = "F13"
CASE (( keys(6) == 8     )) != 0
EDIT$(2) = "F14"
CASE (( keys(7) == 512   )) != 0
EDIT$(2) = "F15"
CASE (( keys(3) == 2     )) != 0
EDIT$(2) = "Caps lock on"
CASE (( keys(3) == 1     )) != 0
EDIT$(2) = "Shift"
CASE (( keys(3) == 8     )) != 0
EDIT$(2) = "Control"
CASE (( keys(3) == 4     )) != 0
EDIT$(2) = "Option"
CASE (( keys(3) == -32768 )) != 0
EDIT$(2) = "Command
END SELECT
END IF

LONG IF( commandDown ) = _false
FOR i = 0 TO 7
long IF keys( i ) <> 0
aStr = str$( i )
bStr = str$( keys( i ))
cStr = ". Press any key to continue..."
cStr = "The getKey number is:"+aStr+" "+bStr+cStr
edit$(3) = cStr
END IF
NEXT
END IF
END FN

LOCAL FN doBreak
'This empty function disables
'FB^3's built-in break routine
END FN

LOCAL FN doDialog
DIM AS INTEGER evnt,id
evnt = DIALOG(0)
id = DIALOG(evnt)
SELECT CASE( evnt )
CASE _wndClose : END
CASE _btnClick
SELECT( id )
CASE = 1
END
END SELECT
END SELECT
END FN

LOCAL FN doMenu
DIM AS INTEGER menuID, itemID
menuID = MENU(_menuID)
itemID = MENU(_itemID)
SELECT CASE( menuID )
CASE 1 : IF itemID = 2 THEN END
END SELECT
END FN

ON EVENT  FN doEvent
ON DIALOG FN doDialog
ON MENU   FN doMenu
ON BREAK  FN doBreak

FN buildMenus
FN buildWindow

DO
HANDLEEVENTS
UNTIL gQuit
END

'-------- End FB^3 code ---------