0010 BEGIN 0200 DIM E$:TMPL(SG) 0210 EVENTLOOP: 0220 READ RECORD(SG,SIZ=LEN(E$))E$ 0230 IF E.CODE$="B" AND E.ID%=1 THEN END 0240 IF E.CODE$="B" AND E.ID%=2 THEN PRINT "cancelled"; END 0250 PRINT "Context: "+STR(E.CONTEXT%) 0260 IF E.CODE$="N" AND DEC($00$+E.FLAGS$)=KEYNOTICE THEN PRINT "Key notice: " 0260:; GOTO PROCKEYNOTICE 0270 IF E.CODE$="e" THEN PRINT "Edit modify for control: "+STR(E.ID%); GOTO EV 0270:ENTLOOP 0280 IF E.CODE$="f" THEN PRINT "Edit focus ",; IF E.FLAGS THEN PRINT "gain for 0280: control: "+STR(E.ID%) ELSE PRINT "loss for control: "+STR(E.ID%) FI; GOT 0280:O EVENTLOOP 0290 IF E.CODE$="l" THEN IF E.FLAGS% THEN PRINT "List double click" ELSE PRINT 0290: "List single click" FI; GOTO EVENTLOOP 0300 IF E.CODE$="s" THEN PRINT "System event: ",; IF E.FLAGS=1 THEN PRINT "col 0300:or change"; LET A$=SENDMSG(SG,-1,1,0,$0219$); PRINT (SG)'BACKCOLOR'(ASC(A 0300:$),ASC(A$(2)),ASC(A$(3)))+'BRUSHCOLOR'(ASC(A$),ASC(A$(2)),ASC(A$(3)))+'TE 0300:XTCOLOR'(ASC(A$(4)),ASC(A$(5)),ASC(A$(6))),'CLEAR'+'COLORSET'(10), ELSE P 0300:RINT "unknown" FI; GOTO EVENTLOOP 0310 PRINT "Event code: "+E.CODE$+" generated." 0320 GOTO EVENTLOOP 0330 PROCKEYNOTICE: 0340 DIM NOT$:NOTICETPL(IETYPE,KEYNOTICE) 0350 LET NOT$=NOTICE(SG,E.X%) 0360 IF DEC(AND(NOT.KEY$,$0100$))=0 THEN LET K$=NOT.KEY$(2,1); IF K$<>$0D$ AND 0360: K$<>$09$ AND K$<>$1B$ AND K$<>$7F$ THEN PRINT "Invalid key pressed"; ESC 0360: APE 0370 IF DEC(AND(NOT.KEY$,$1000$)) THEN PRINT "(Shift) " 0380 IF DEC(AND(NOT.KEY$,$2000$)) THEN PRINT "(Ctrl) " 0390 IF DEC(AND(NOT.KEY$,$4000$)) THEN PRINT "(ALT) " 0400 LET A=DEC($00$+AND($00FF$,NOT.KEY$)) 0410 SWITCH A 0420 CASE DEC($000D$); PRINT "enter key"; BREAK 0430 CASE DEC($0008$); PRINT "tab"; BREAK 0440 CASE DEC($001B$); PRINT "escape"; BREAK 0450 CASE DEC($002D$); PRINT "up arrow"; BREAK 0460 CASE DEC($002E$); PRINT "down arrow"; BREAK 0470 CASE DEC($002F$); PRINT "right arrow"; BREAK 0480 CASE DEC($0030$); PRINT "left arrow"; BREAK 0490 CASE DEC($0031$); PRINT "page up"; BREAK 0500 CASE DEC($0032$); PRINT "page down"; BREAK 0510 CASE DEC($0033$); PRINT "home"; BREAK 0520 CASE DEC($0034$); PRINT "end"; BREAK 0530 CASE DEC($0035$); PRINT "insert"; BREAK 0540 CASE DEC($007F$); PRINT "delete"; BREAK 0550 CASE DEC($003B$); PRINT "backtab"; BREAK 0560 CASE DEC($003E$); PRINT "keypad 0"; BREAK 0570 CASE DEC($003F$); PRINT "keypad 1"; BREAK 0580 CASE DEC($0040$); PRINT "keypad 2"; BREAK 0590 CASE DEC($0041$); PRINT "keypad 3"; BREAK 0600 CASE DEC($0042$); PRINT "keypad 4"; BREAK 0610 CASE DEC($0043$); PRINT "keypad 5"; BREAK 0620 CASE DEC($0044$); PRINT "keypad 6"; BREAK 0630 CASE DEC($0045$); PRINT "keypad 7"; BREAK 0640 CASE DEC($0046$); PRINT "keypad 8"; BREAK 0650 CASE DEC($0047$); PRINT "keypad 9"; BREAK 0660 CASE DEC($004B$); PRINT "F1"; BREAK 0670 CASE DEC($004C$); PRINT "F2"; BREAK 0680 CASE DEC($004D$); PRINT "F3"; BREAK 0690 CASE DEC($004E$); PRINT "F4"; BREAK 0700 CASE DEC($004F$); PRINT "F5"; BREAK 0710 CASE DEC($0050$); PRINT "F6"; BREAK 0720 CASE DEC($0051$); PRINT "F7"; BREAK 0730 CASE DEC($0052$); PRINT "F8"; BREAK 0740 CASE DEC($0053$); PRINT "F9"; BREAK 0750 CASE DEC($0054$); PRINT "F10"; BREAK 0760 CASE DEC($0055$); PRINT "F11"; BREAK 0770 CASE DEC($0056$); PRINT "F12"; BREAK 0780 CASE DEC($0074$); PRINT "keypad *"; BREAK 0790 CASE DEC($0075$); PRINT "keypad -"; BREAK 0800 CASE DEC($0076$); PRINT "keypad +"; BREAK 0810 CASE DEC($0077$); PRINT "keypad /"; BREAK 0820 CASE DEFAULT; EXITTO PRINTIT 0830 PRINTIT: 0840 PRINT "unknown key code: "+HTA(E.ID$) 0850 GOTO EVENTLOOP 0860 BREAK 0870 SWEND 0880 GOTO EVENTLOOP