ON KEY Trapping CTRL, SHIFT, CAPS LOCK, NUM LOCK Combinations (39252)



The information in this article applies to:

  • Microsoft QuickBASIC 4.0
  • Microsoft QuickBASIC 4.0b
  • Microsoft QuickBASIC 4.5
  • Microsoft BASIC Compiler for MS-DOS and OS/2 6.0
  • Microsoft BASIC Compiler for MS-DOS and OS/2 6.0b
  • Microsoft Basic Professional Development System (PDS) for MS-DOS and MS OS/2 7.0
  • Microsoft Basic Professional Development System (PDS) for MS-DOS and MS OS/2 7.1

This article was previously published under Q39252

SUMMARY

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

MORE INFORMATION

The following is a code example:
  CONST alt = &H8
   CONST noflag = &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
				

Modification Type:MinorLast Reviewed:1/8/2003
Keywords:KB39252