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 ---------