KEY(n): Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 62: Line 62:


{{PageSeeAlso}}
{{PageSeeAlso}}
* [[ON KEY(n)]], [[KEY n]] {{text|(softkeys)}}
* [[ON KEY(n)]], [[KEY n]] {{Text|(softkeys)}}
* [[_KEYHIT]], [[_KEYDOWN]]
* [[_KEYHIT]], [[_KEYDOWN]]
* [[Keyboard scancodes]]
* [[Keyboard scancodes]]

Latest revision as of 22:32, 11 February 2023

KEY(n) assigns, enables, disables or suspends event trapping of a keypress by setting the flag ON, STOP or OFF.


Syntax

KEY(number) {ON | OFF | STOP}


Description

  • Predefined and user defined KEY event number assignments to use with KEY(n):
     1 to 10.............Reserved F1 to F10 function keys only.
     11, 12, 13 and 14...Reserved Up, Left, Right and Down numeric keypad arrows only
     15 to 29............user-defined keys using value: CHR$(keyflag)  + CHR$(scancode)
     30 and 31...........Reserved F11 and F12 function keys only.
  • Keypresses can be read during INKEY$, INPUT$ or INPUT procedures without losing the input.
  • Key event reads will also interrupt SLEEP.
  • KEY(n) specific status modes are:
    • ON enables specific keypress events to be monitored.
    • STOP suspends specific keypress reads, but remembers them. When re-enabled the key presses will be returned.
    • OFF disables specified keypress reads and will not remember the event.


Examples

Example 1: How to trap the LEFT direction keys on both the dedicated cursor keypad and the numeric keypad.

KEY 15, CHR$(128) + CHR$(75) ' Assign trap for LEFT arrow key on the cursor keypad
ON KEY(15) GOSUB CursorPad
KEY(15) ON ' enable event trapping

ON KEY(12) GOSUB NumericPad ' Trap LEFT key on number pad
KEY(12) ON ' enable event trapping

DO
LOOP UNTIL UCASE$(INKEY$) = "Q" ' Idle loop for demo
SYSTEM

CursorPad:
PRINT "Pressed LEFT key on cursor keypad."
RETURN

NumericPad:
PRINT "Pressed LEFT key on numeric keypad."
RETURN


Example 2: Trapping the F5 keypress.

KEY(5) ON
ON KEY(5) GOSUB execute
PRINT "Press F5 (or ESC) to quit!)"
DO
LOOP UNTIL INKEY$ = CHR$(27) ' idle loop
SYSTEM
execute:
PRINT "You pressed the F5 key..."
SLEEP 1
PRINT "Press any key to continue..."
SLEEP


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link