vbdpss.hlp (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
Article Q39252
                                                 Contents  Index  Back
─────────────────────────────────────────────────────────────────────────────
                           Knowledge Base Contents  Knowledge Base Index
 
 ON KEY Trapping CTRL, SHIFT, CAPS LOCK, NUM LOCK Combinations - Q39252
 
 Pressing any key in combination with CTRL, SHIFT, ALT, CAPS LOCK, or
 NUM LOCK changes the keyboard scan code. To trap combinations of keys,
 the KEY statement requires adding together the values of the keyboard
 flags as shown in the code example listed below.
 
 The following is a code example:
 
 ' To try this example in VBDOS.EXE:
 ' 1. From the File menu, choose New Project.
 ' 2. Copy the code example to the Code window.
 ' 3. Press F5 to run the program.
 
    CONST alt = &H8
    CONST nodal = &H0
    CONST leftshift = &H1
    CONST rightshift = &H2
    CONST ctrl = &H4
    CONST numlock = &H20
    CONST capslock = &H40
    CONST extendedkeyboard = &H80
    CONST left = &H4B
    CONST right = &H4D
    CONST up = &H48
    CONST down = &H50
    CONST C = &H2E
    CONST scrolllock = &H46
 
    KEY 15, CHR$(extendedkeyboard + numlock) + CHR$(left)
    KEY 16, CHR$(extendedkeyboard + numlock) + CHR$(right)
    KEY 17, CHR$(extendedkeyboard + numlock) + CHR$(up)
    KEY 18, CHR$(extendedkeyboard + numlock) + CHR$(down)
    KEY 19, CHR$(ctrl + capslock) + CHR$(C)
    KEY 20, CHR$(extendedkeyboard + ctrl + numlock) + CHR$(scrolllock)
 
    ON KEY(15) GOSUB left
    ON KEY(16) GOSUB right
    ON KEY(17) GOSUB up
    ON KEY(18) GOSUB down
    ON KEY(19) GOSUB break
    ON KEY(20) GOSUB break
 
    KEY(15) ON
    KEY(16) ON
    KEY(17) ON
    KEY(18) ON
    KEY(19) ON
    KEY(20) ON
 
    WHILE UCASE$(INKEY$) <> UCASE$("q")
    WEND
    END
 
    left:
     PRINT "left"
    RETURN
 
    right:
     PRINT "right"
    RETURN
 
    up:
     PRINT "up"
    RETURN
 
    down:
     PRINT "down"
    RETURN
 
    break:
     PRINT "break"
    RETURN