mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-16 23:35:15 +00:00
69 lines
1.9 KiB
Markdown
69 lines
1.9 KiB
Markdown
|
The [ON KEY(n)](ON-KEY(n)) statement defines a line number or label to go to (or a [SUB](SUB) to run) when a specified key is pressed.
|
||
|
|
||
|
## Syntax
|
||
|
|
||
|
> [ON KEY(n)](ON-KEY(n)) [GOSUB](GOSUB) linelabel|linenumber
|
||
|
> [ON KEY(n)](ON-KEY(n)) [SUB](SUB)procedure
|
||
|
|
||
|
## Description
|
||
|
|
||
|
* Predefined and user defined KEY event number assignments to use with ON KEY(n):
|
||
|
|
||
|
```text
|
||
|
|
||
|
**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$](CHR$)(keyflag) + [CHR$](CHR$)([Keyboard scancodes](Keyboard-scancodes))
|
||
|
**30 and 31**...........Reserved **F11 and F12** function keys only.
|
||
|
|
||
|
```
|
||
|
|
||
|
* See the [KEY n](KEY-n) page for user defined key or key combination presses and F function softkey assignments.
|
||
|
* [GOSUB](GOSUB) with a linelabel or linenumber or a [SUB](SUB) procedure (without the [CALL](CALL) keyword) can be triggered in **QB64**.
|
||
|
|
||
|
## Example(s)
|
||
|
|
||
|
Using ON KEY with [GOSUB](GOSUB) to execute code.
|
||
|
|
||
|
```vb
|
||
|
|
||
|
KEY(1) ON
|
||
|
ON KEY(1) GOSUB trap
|
||
|
PRINT "Press F1 to quit!"
|
||
|
DO:LOOP 'never ending loop
|
||
|
|
||
|
trap:
|
||
|
PRINT "You pressed F1 like I told you to :)"
|
||
|
END
|
||
|
RETURN
|
||
|
|
||
|
```
|
||
|
|
||
|
Setting multiple ON KEY statements to send different values to a [SUB](SUB) procedure.
|
||
|
|
||
|
```vb
|
||
|
|
||
|
FOR n = 1 TO 10
|
||
|
KEY n, STR$(n) ' assigns soft key as a numerical string
|
||
|
ON KEY(n) Funct n 'designate SUB procedure and parameter value passed
|
||
|
KEY(n) ON ' turns each key event monitor on
|
||
|
NEXT
|
||
|
KEY ON 'displays F1 to F10 soft key assignments at bottom of screen
|
||
|
|
||
|
DO
|
||
|
LOOP UNTIL INKEY$ = CHR$(27)
|
||
|
END
|
||
|
|
||
|
SUB Funct (num%)
|
||
|
CLS' clears the screen and refreshes bottom soft key list
|
||
|
PRINT "You pressed F"; LTRIM$(STR$(num%))
|
||
|
END SUB
|
||
|
|
||
|
```
|
||
|
|
||
|
## See Also
|
||
|
|
||
|
* [KEY(n)](KEY(n)), [KEY n](KEY-n) (soft key)
|
||
|
* [ON...GOSUB](ON...GOSUB), [Scancodes](Scancodes)
|
||
|
* [_KEYHIT](_KEYHIT), [_KEYDOWN](_KEYDOWN)
|