home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / dnalib7a.zip / KEYTEST.BAS < prev    next >
BASIC Source File  |  1994-02-14  |  8KB  |  417 lines

  1. $INCLUDE "DNALIB.INC"
  2. $LINK "DNALIB.PBL"
  3.  
  4. x& = SETMEM(-700000)          ' release unused memory
  5.  
  6. POPUP KEY CHR$(8,37,247)      ' ALT K is the hot key
  7.  
  8. POPUP MULTIPLEX &HC000, 254   ' reg AX and DX get this pattern as an ID
  9. REG 1, &HC000 : REG 4, 254    ' set pattern to check for already installed
  10. CALL INTERRUPT &H2F           ' do the multiplex interrrupt
  11. IF REG(1)<>&HC000 AND REG(4)<>254 THEN END 'we were already installed
  12.  
  13. SwapFile$ = LEFT$(CURDIR$,2)+"\KEYTSR.SWP"
  14. PRINT "Power Basic TSR by Chris Foot"
  15. PRINT "KeyTest available as ALT-K"
  16. REG 1, &HC001 : REG 4, 252             ' Alter AX,DX to show we were here
  17. POPUP SLEEP USING EMS, SwapFile$       ' before going to sleep
  18.  
  19. WHILE 1=1
  20.   x% = POS : y% = CSRLIN
  21.   DEF SEG = &hB800
  22.   SScreen$ = PEEK$(0,4000)          ' save the entire screen
  23.   IF REG(1)=&HC000 AND REG(4)=254 THEN
  24.     LOCATE 12,20
  25.     PRINT "┌─────────────────────────────┐";
  26.     LOCATE 13,20
  27.     PRINT "│ KEYTSR is already installed │";
  28.     LOCATE 14,20
  29.     PRINT "└─────────────────────────────┘";
  30.   ELSE
  31.     GOSUB KeyTest
  32.   END IF
  33.   a$ = INPUT$(1)
  34.                                                                  'wait for key to cancel
  35.   POKE$ 0, SScreen$
  36.   LOCATE y%, x%                                     'restore screen
  37.  
  38.   IF UCASE$(A$)="Q" THEN IF POPUP(1) THEN END  'this uninstalls us
  39.   REG 1, &HC001 : REG 4, 252  ' Alter AX,DX to show we were here
  40.   POPUP SLEEP                 ' before going to sleep
  41. WEND
  42.  
  43. KeyTest:
  44.  
  45. PopWind "",10,24,15,56,15,0,1
  46. PopWind "",11,25,14,55,30,0,0
  47.  
  48. COLOR 14,1
  49. LOCATE 11,26,0
  50. PRINT "Key Press";
  51. LOCATE 12,26,0
  52. PRINT "Function";
  53. LOCATE 13,26,0
  54. PRINT "ASCII Char   ASCII Value";
  55. LOCATE 14,26,0
  56. PRINT "Scan Code      Hex Value";
  57.  
  58. DO
  59.  
  60. WHILE NOT INSTAT:WEND
  61. Ky$ = INKEY$
  62.  
  63. IF LEN(Ky$) = 1 THEN
  64.   EditKey% = ASC(Ky$)
  65.   HexKey% = ASC(Ky$)
  66. ELSE
  67.   EditKey% = -ASC(RIGHT$(Ky$,1))
  68.   HexKey% = ASC(RIGHT$(Ky$,1))
  69. END IF
  70.  
  71. Number$ = STR$(EditKey%)
  72. Does$ = ""
  73. Text$ = ""
  74.  
  75. SELECT CASE Editkey%
  76.  
  77.     CASE -71
  78.       Text$ = "Home Key"
  79.     CASE -72
  80.       Text$ = "Up Arrow"
  81.     CASE -73
  82.       Text$ = "Page Up"
  83.     CASE -75
  84.       Text$ = "Left Arrow"
  85.     CASE -77
  86.       Text$ = "Right Arrow"
  87.     CASE -79
  88.       Text$ = "End Key"
  89.     CASE -80
  90.       Text$ = "Down Arrow"
  91.     CASE -81
  92.       Text$ = "Page Down"
  93.     CASE -82
  94.       Text$ = "Insert Key"
  95.     CASE -83
  96.       Text$ = "Delete Key"
  97.     CASE -59
  98.       Text$ = "F1"
  99.     CASE -60
  100.       Text$ = "F2"
  101.     CASE -61
  102.       Text$ = "F3"
  103.     CASE -62
  104.       Text$ = "F4"
  105.     CASE -63
  106.       Text$ = "F5"
  107.     CASE -64
  108.       Text$ = "F6"
  109.     CASE -65
  110.       Text$ = "F7"
  111.     CASE -66
  112.       Text$ = "F8"
  113.     CASE -67
  114.       Text$ = "F9"
  115.     CASE -68
  116.       Text$ = "F10"
  117.     CASE -84
  118.       Text$ = "Shift F1"
  119.     CASE -85
  120.       Text$ = "Shift F2"
  121.     CASE -86
  122.       Text$ = "Shift F3"
  123.     CASE -87
  124.       Text$ = "Shift F4"
  125.     CASE -88
  126.       Text$ = "Shift F5"
  127.     CASE -89
  128.       Text$ = "Shift F6"
  129.     CASE -90
  130.       Text$ = "Shift F7"
  131.     CASE -91
  132.       Text$ = "Shift F8"
  133.     CASE -92
  134.       Text$ = "Shift F9"
  135.     CASE -93
  136.       Text$ = "Shift F10"
  137.     CASE -94
  138.       Text$ = "Ctrl F1"
  139.     CASE -95
  140.       Text$ = "Ctrl F2"
  141.     CASE -96
  142.       Text$ = "Ctrl F3"
  143.     CASE -97
  144.       Text$ = "Ctrl F4"
  145.     CASE -98
  146.       Text$ = "Ctrl F5"
  147.     CASE -99
  148.       Text$ = "Ctrl F6"
  149.     CASE -100
  150.       Text$ = "Ctrl F7"
  151.     CASE -101
  152.       Text$ = "Ctrl F8"
  153.     CASE -102
  154.       Text$ = "Ctrl F9"
  155.     CASE -103
  156.       Text$ = "Ctrl F10"
  157.     CASE -104
  158.       Text$ = "Alt F1"
  159.     CASE -105
  160.       Text$ = "Alt F2"
  161.     CASE -106
  162.       Text$ = "Alt F3"
  163.     CASE -107
  164.       Text$ = "Alt F4"
  165.     CASE -108
  166.       Text$ = "Alt F5"
  167.     CASE -109
  168.       Text$ = "Alt F6"
  169.     CASE -100
  170.       Text$ = "Alt F7"
  171.     CASE -111
  172.       Text$ = "Alt F8"
  173.     CASE -112
  174.       Text$ = "Alt F9"
  175.     CASE -113
  176.       Text$ = "Alt F10"
  177.     CASE -114
  178.       Text$ = "Ctrl PrintScreen"
  179.     CASE -115
  180.       Text$ = "Ctrl Left arrow"
  181.     CASE -116
  182.       Text$ = "Ctrl Right arrow"
  183.     CASE -117
  184.       Text$ = "Ctrl End"
  185.     CASE -118
  186.       Text$ = "Ctrl PgDn"
  187.     CASE -119
  188.       Text$ = "Ctrl Home"
  189.     CASE -120
  190.       Text$ = "Alt 1"
  191.     CASE -121
  192.       Text$ = "Alt 2"
  193.     CASE -122
  194.       Text$ = "Alt 3"
  195.     CASE -123
  196.       Text$ = "Alt 4"
  197.     CASE -124
  198.       Text$ = "Alt 5"
  199.     CASE -125
  200.       Text$ = "Alt 6"
  201.     CASE -126
  202.       Text$ = "Alt 7"
  203.     CASE -127
  204.       Text$ = "Alt 8"
  205.     CASE -128
  206.       Text$ = "Alt 9"
  207.     CASE -129
  208.       Text$ = "Alt 0"
  209.     CASE -130
  210.       Text$ = "Alt -"
  211.     CASE -131
  212.       Text$ = "Alt ="
  213.     CASE -132
  214.       Text$ = "Ctrl PgUp"
  215.     CASE -133
  216.       Text$ = "F11"
  217.     CASE -134
  218.       Text$ = "F12"
  219.     CASE -135
  220.       Text$ = "Shift F11"
  221.     CASE -136
  222.       Text$ = "Shift F12"
  223.     CASE -137
  224.       Text$ = "Ctrl F11"
  225.     CASE -138
  226.       Text$ = "Ctrl F12"
  227.     CASE -139
  228.       Text$ = "Alt F11"
  229.     CASE -140
  230.       Text$ = "Alt F12"
  231.     CASE -16
  232.       Text$ = "Alt Q"
  233.     CASE -17
  234.       Text$ = "Alt W"
  235.     CASE -18
  236.       Text$ = "Alt E"
  237.     CASE -19
  238.       Text$ = "Alt R"
  239.     CASE -20
  240.       Text$ = "Alt T"
  241.     CASE -21
  242.       Text$ = "Alt Y"
  243.     CASE -22
  244.       Text$ = "Alt U"
  245.     CASE -23
  246.       Text$ = "Alt I"
  247.     CASE -24
  248.       Text$ = "Alt O"
  249.     CASE -25
  250.       Text$ = "Alt P"
  251.     CASE -30
  252.       Text$ = "Alt A"
  253.     CASE -31
  254.       Text$ = "Alt S"
  255.     CASE -32
  256.       Text$ = "Alt D"
  257.     CASE -33
  258.       Text$ = "Alt F"
  259.     CASE -34
  260.       Text$ = "Alt G"
  261.     CASE -35
  262.       Text$ = "Alt H"
  263.     CASE -36
  264.       Text$ = "Alt J"
  265.     CASE -37
  266.       Text$ = "Alt K"
  267.     CASE -38
  268.       Text$ = "Alt L"
  269.     CASE -44
  270.       Text$ = "Alt Z"
  271.     CASE -45
  272.       Text$ = "Alt X"
  273.     CASE -46
  274.       Text$ = "Alt C"
  275.     CASE -47
  276.       Text$ = "Alt V"
  277.     CASE -48
  278.       Text$ = "Alt B"
  279.     CASE -49
  280.       Text$ = "Alt N"
  281.     CASE -50
  282.       Text$ = "Alt M"
  283.     CASE 0
  284.       Text$ = "Ctrl @"
  285.       Does$ = "NUL"
  286.     CASE 1
  287.       Text$ = "Ctrl A"
  288.       Does$ = "SOH"
  289.     CASE 2
  290.       Text$ = "Ctrl B"
  291.       Does$ = "STX"
  292.     CASE 3
  293.       Text$ = "Ctrl C"
  294.       Does$ = "ETX"
  295.     CASE 4
  296.       Text$ = "Ctrl D"
  297.       Does$ = "EOT"
  298.     CASE 5
  299.       Text$ = "Ctrl E"
  300.       Does$ = "ENQUIRY"
  301.     CASE 6
  302.       Text$ = "Ctrl F"
  303.       Does$ = "ACK"
  304.     CASE 7
  305.       Text$ = "Ctrl G"
  306.       Does$ = "BEL"
  307.     CASE 8
  308.       Text$ = "Ctrl H"
  309.       Does$ = "BACK SPACE"
  310.     CASE 9
  311.       Text$ = "Ctrl I"
  312.       Does$ = "TAB"
  313.     CASE 10
  314.       Text$ = "Ctrl J"
  315.       Does$ = "LINE FEED"
  316.     CASE 11
  317.       Text$ = "Ctrl K"
  318.       Does$ = "VT"
  319.     CASE 12
  320.       Text$ = "Ctrl L"
  321.       Does$ = "FORM FEED"
  322.     CASE 13
  323.       Text$ = "Ctrl M"
  324.       Does$ = "CARRIAGE RETURN"
  325.     CASE 14
  326.       Text$ = "Ctrl N"
  327.       Does$ = "SO"
  328.     CASE 15
  329.       Text$ = "Ctrl O
  330.       Does$ = "SI"
  331.     CASE 16
  332.       Text$ = "Ctrl P"
  333.       Does$ = "DLE"
  334.     CASE 17
  335.       Text$ = "Ctrl Q"
  336.       Does$ = "DC1"
  337.     CASE 18
  338.       Text$ = "Ctrl R"
  339.       Does$ = "DC2"
  340.     CASE 19
  341.       Text$ = "Ctrl S"
  342.       Does$ = "DC3"
  343.     CASE 20
  344.       Text$ = "Ctrl T"
  345.       Does$ = "DC4"
  346.     CASE 21
  347.       Text$ = "Ctrl U"
  348.       Does$ = "NAK"
  349.     CASE 22
  350.       Text$ = "Ctrl V"
  351.       Does$ = "SYN"
  352.     CASE 23
  353.       Text$ = "Ctrl W"
  354.       Does$ = "ETB"
  355.     CASE 24
  356.       Text$ = "Ctrl X"
  357.       Does$ = "CAN"
  358.     CASE 25
  359.       Text$ = "Ctrl Y"
  360.       Does$ = "EM"
  361.     CASE 26
  362.       Text$ = "Ctrl Z"
  363.       Does$ = "SUB"
  364.     CASE 27
  365.       Text$ = "Escape"
  366.       Does$ = "ESC"
  367.     CASE ELSE
  368.       REG 1,&H1200
  369.       CALL INTERRUPT &H16
  370.       b=ABS(REG(1))
  371.       IF (b AND  1) =  1 THEN
  372.         Text$ = "Right Shift"
  373.       ELSEIF (b and  2) =  2 THEN
  374.         Text$ = "Left Shift"
  375.       ELSEIF (b and  4) =  4 THEN
  376.         Text$ = "Ctrl Key"
  377.       ELSEIF (b and  8) =  8 THEN
  378.         Text$ = "Alt Key"
  379.       ELSE
  380.         Text$ = "Un-Shifted"
  381.         Does$ = ""
  382.       END IF
  383.  
  384. END SELECT
  385.  
  386. IF LEN(Text$) < 16 THEN
  387.   a% = 16 - LEN(Text$)
  388.   b% = 16 - LEN(Does$)
  389.   Text$ = Text$ + SPACE$(a%)
  390.   Does$ = Does$ + SPACE$(b%)
  391. END IF
  392.  
  393. Number$ = LTRIM$(Number$)
  394.  
  395. IF LEN(Number$) < 4 THEN
  396.   c% = 4 - LEN(Number$)
  397.   Number$ = Number$ + SPACE$(c%)
  398. END IF
  399.  
  400. COLOR 15,1
  401. LOCATE 11,38,0
  402. PRINT Text$;
  403. LOCATE 12,38,0
  404. PRINT Does$;
  405. LOCATE 13,37,0
  406. PRINT LTRIM$(Ky$,CHR$(0));
  407. LOCATE 13,50
  408. PRINT HexKey%;
  409. LOCATE 14,36,0
  410. PRINT Number$;
  411. LOCATE 14,51,0
  412. PRINT HEX$(HexKey%);
  413.  
  414.  
  415. LOOP UNTIL EditKey% = 27
  416.  
  417. RETURN