home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 15
/
CD_ASCQ_15_070894.iso
/
vrac
/
dnalib7a.zip
/
KEYTEST.BAS
< prev
next >
Wrap
BASIC Source File
|
1994-02-14
|
8KB
|
417 lines
$INCLUDE "DNALIB.INC"
$LINK "DNALIB.PBL"
x& = SETMEM(-700000) ' release unused memory
POPUP KEY CHR$(8,37,247) ' ALT K is the hot key
POPUP MULTIPLEX &HC000, 254 ' reg AX and DX get this pattern as an ID
REG 1, &HC000 : REG 4, 254 ' set pattern to check for already installed
CALL INTERRUPT &H2F ' do the multiplex interrrupt
IF REG(1)<>&HC000 AND REG(4)<>254 THEN END 'we were already installed
SwapFile$ = LEFT$(CURDIR$,2)+"\KEYTSR.SWP"
PRINT "Power Basic TSR by Chris Foot"
PRINT "KeyTest available as ALT-K"
REG 1, &HC001 : REG 4, 252 ' Alter AX,DX to show we were here
POPUP SLEEP USING EMS, SwapFile$ ' before going to sleep
WHILE 1=1
x% = POS : y% = CSRLIN
DEF SEG = &hB800
SScreen$ = PEEK$(0,4000) ' save the entire screen
IF REG(1)=&HC000 AND REG(4)=254 THEN
LOCATE 12,20
PRINT "┌─────────────────────────────┐";
LOCATE 13,20
PRINT "│ KEYTSR is already installed │";
LOCATE 14,20
PRINT "└─────────────────────────────┘";
ELSE
GOSUB KeyTest
END IF
a$ = INPUT$(1)
'wait for key to cancel
POKE$ 0, SScreen$
LOCATE y%, x% 'restore screen
IF UCASE$(A$)="Q" THEN IF POPUP(1) THEN END 'this uninstalls us
REG 1, &HC001 : REG 4, 252 ' Alter AX,DX to show we were here
POPUP SLEEP ' before going to sleep
WEND
KeyTest:
PopWind "",10,24,15,56,15,0,1
PopWind "",11,25,14,55,30,0,0
COLOR 14,1
LOCATE 11,26,0
PRINT "Key Press";
LOCATE 12,26,0
PRINT "Function";
LOCATE 13,26,0
PRINT "ASCII Char ASCII Value";
LOCATE 14,26,0
PRINT "Scan Code Hex Value";
DO
WHILE NOT INSTAT:WEND
Ky$ = INKEY$
IF LEN(Ky$) = 1 THEN
EditKey% = ASC(Ky$)
HexKey% = ASC(Ky$)
ELSE
EditKey% = -ASC(RIGHT$(Ky$,1))
HexKey% = ASC(RIGHT$(Ky$,1))
END IF
Number$ = STR$(EditKey%)
Does$ = ""
Text$ = ""
SELECT CASE Editkey%
CASE -71
Text$ = "Home Key"
CASE -72
Text$ = "Up Arrow"
CASE -73
Text$ = "Page Up"
CASE -75
Text$ = "Left Arrow"
CASE -77
Text$ = "Right Arrow"
CASE -79
Text$ = "End Key"
CASE -80
Text$ = "Down Arrow"
CASE -81
Text$ = "Page Down"
CASE -82
Text$ = "Insert Key"
CASE -83
Text$ = "Delete Key"
CASE -59
Text$ = "F1"
CASE -60
Text$ = "F2"
CASE -61
Text$ = "F3"
CASE -62
Text$ = "F4"
CASE -63
Text$ = "F5"
CASE -64
Text$ = "F6"
CASE -65
Text$ = "F7"
CASE -66
Text$ = "F8"
CASE -67
Text$ = "F9"
CASE -68
Text$ = "F10"
CASE -84
Text$ = "Shift F1"
CASE -85
Text$ = "Shift F2"
CASE -86
Text$ = "Shift F3"
CASE -87
Text$ = "Shift F4"
CASE -88
Text$ = "Shift F5"
CASE -89
Text$ = "Shift F6"
CASE -90
Text$ = "Shift F7"
CASE -91
Text$ = "Shift F8"
CASE -92
Text$ = "Shift F9"
CASE -93
Text$ = "Shift F10"
CASE -94
Text$ = "Ctrl F1"
CASE -95
Text$ = "Ctrl F2"
CASE -96
Text$ = "Ctrl F3"
CASE -97
Text$ = "Ctrl F4"
CASE -98
Text$ = "Ctrl F5"
CASE -99
Text$ = "Ctrl F6"
CASE -100
Text$ = "Ctrl F7"
CASE -101
Text$ = "Ctrl F8"
CASE -102
Text$ = "Ctrl F9"
CASE -103
Text$ = "Ctrl F10"
CASE -104
Text$ = "Alt F1"
CASE -105
Text$ = "Alt F2"
CASE -106
Text$ = "Alt F3"
CASE -107
Text$ = "Alt F4"
CASE -108
Text$ = "Alt F5"
CASE -109
Text$ = "Alt F6"
CASE -100
Text$ = "Alt F7"
CASE -111
Text$ = "Alt F8"
CASE -112
Text$ = "Alt F9"
CASE -113
Text$ = "Alt F10"
CASE -114
Text$ = "Ctrl PrintScreen"
CASE -115
Text$ = "Ctrl Left arrow"
CASE -116
Text$ = "Ctrl Right arrow"
CASE -117
Text$ = "Ctrl End"
CASE -118
Text$ = "Ctrl PgDn"
CASE -119
Text$ = "Ctrl Home"
CASE -120
Text$ = "Alt 1"
CASE -121
Text$ = "Alt 2"
CASE -122
Text$ = "Alt 3"
CASE -123
Text$ = "Alt 4"
CASE -124
Text$ = "Alt 5"
CASE -125
Text$ = "Alt 6"
CASE -126
Text$ = "Alt 7"
CASE -127
Text$ = "Alt 8"
CASE -128
Text$ = "Alt 9"
CASE -129
Text$ = "Alt 0"
CASE -130
Text$ = "Alt -"
CASE -131
Text$ = "Alt ="
CASE -132
Text$ = "Ctrl PgUp"
CASE -133
Text$ = "F11"
CASE -134
Text$ = "F12"
CASE -135
Text$ = "Shift F11"
CASE -136
Text$ = "Shift F12"
CASE -137
Text$ = "Ctrl F11"
CASE -138
Text$ = "Ctrl F12"
CASE -139
Text$ = "Alt F11"
CASE -140
Text$ = "Alt F12"
CASE -16
Text$ = "Alt Q"
CASE -17
Text$ = "Alt W"
CASE -18
Text$ = "Alt E"
CASE -19
Text$ = "Alt R"
CASE -20
Text$ = "Alt T"
CASE -21
Text$ = "Alt Y"
CASE -22
Text$ = "Alt U"
CASE -23
Text$ = "Alt I"
CASE -24
Text$ = "Alt O"
CASE -25
Text$ = "Alt P"
CASE -30
Text$ = "Alt A"
CASE -31
Text$ = "Alt S"
CASE -32
Text$ = "Alt D"
CASE -33
Text$ = "Alt F"
CASE -34
Text$ = "Alt G"
CASE -35
Text$ = "Alt H"
CASE -36
Text$ = "Alt J"
CASE -37
Text$ = "Alt K"
CASE -38
Text$ = "Alt L"
CASE -44
Text$ = "Alt Z"
CASE -45
Text$ = "Alt X"
CASE -46
Text$ = "Alt C"
CASE -47
Text$ = "Alt V"
CASE -48
Text$ = "Alt B"
CASE -49
Text$ = "Alt N"
CASE -50
Text$ = "Alt M"
CASE 0
Text$ = "Ctrl @"
Does$ = "NUL"
CASE 1
Text$ = "Ctrl A"
Does$ = "SOH"
CASE 2
Text$ = "Ctrl B"
Does$ = "STX"
CASE 3
Text$ = "Ctrl C"
Does$ = "ETX"
CASE 4
Text$ = "Ctrl D"
Does$ = "EOT"
CASE 5
Text$ = "Ctrl E"
Does$ = "ENQUIRY"
CASE 6
Text$ = "Ctrl F"
Does$ = "ACK"
CASE 7
Text$ = "Ctrl G"
Does$ = "BEL"
CASE 8
Text$ = "Ctrl H"
Does$ = "BACK SPACE"
CASE 9
Text$ = "Ctrl I"
Does$ = "TAB"
CASE 10
Text$ = "Ctrl J"
Does$ = "LINE FEED"
CASE 11
Text$ = "Ctrl K"
Does$ = "VT"
CASE 12
Text$ = "Ctrl L"
Does$ = "FORM FEED"
CASE 13
Text$ = "Ctrl M"
Does$ = "CARRIAGE RETURN"
CASE 14
Text$ = "Ctrl N"
Does$ = "SO"
CASE 15
Text$ = "Ctrl O
Does$ = "SI"
CASE 16
Text$ = "Ctrl P"
Does$ = "DLE"
CASE 17
Text$ = "Ctrl Q"
Does$ = "DC1"
CASE 18
Text$ = "Ctrl R"
Does$ = "DC2"
CASE 19
Text$ = "Ctrl S"
Does$ = "DC3"
CASE 20
Text$ = "Ctrl T"
Does$ = "DC4"
CASE 21
Text$ = "Ctrl U"
Does$ = "NAK"
CASE 22
Text$ = "Ctrl V"
Does$ = "SYN"
CASE 23
Text$ = "Ctrl W"
Does$ = "ETB"
CASE 24
Text$ = "Ctrl X"
Does$ = "CAN"
CASE 25
Text$ = "Ctrl Y"
Does$ = "EM"
CASE 26
Text$ = "Ctrl Z"
Does$ = "SUB"
CASE 27
Text$ = "Escape"
Does$ = "ESC"
CASE ELSE
REG 1,&H1200
CALL INTERRUPT &H16
b=ABS(REG(1))
IF (b AND 1) = 1 THEN
Text$ = "Right Shift"
ELSEIF (b and 2) = 2 THEN
Text$ = "Left Shift"
ELSEIF (b and 4) = 4 THEN
Text$ = "Ctrl Key"
ELSEIF (b and 8) = 8 THEN
Text$ = "Alt Key"
ELSE
Text$ = "Un-Shifted"
Does$ = ""
END IF
END SELECT
IF LEN(Text$) < 16 THEN
a% = 16 - LEN(Text$)
b% = 16 - LEN(Does$)
Text$ = Text$ + SPACE$(a%)
Does$ = Does$ + SPACE$(b%)
END IF
Number$ = LTRIM$(Number$)
IF LEN(Number$) < 4 THEN
c% = 4 - LEN(Number$)
Number$ = Number$ + SPACE$(c%)
END IF
COLOR 15,1
LOCATE 11,38,0
PRINT Text$;
LOCATE 12,38,0
PRINT Does$;
LOCATE 13,37,0
PRINT LTRIM$(Ky$,CHR$(0));
LOCATE 13,50
PRINT HexKey%;
LOCATE 14,36,0
PRINT Number$;
LOCATE 14,51,0
PRINT HEX$(HexKey%);
LOOP UNTIL EditKey% = 27
RETURN