mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-30 20:00:15 +00:00
68 lines
2.4 KiB
Text
68 lines
2.4 KiB
Text
|
'''KEY(n)''' assigns, enables, disables or suspends event trapping of a keypress by setting the flag [[ON]], [[STOP]] or [[OFF]].
|
||
|
|
||
|
|
||
|
|
||
|
{{PageSyntax}}
|
||
|
:: KEY(''number'') {[[ON]] | [[OFF]] | [[STOP]]}
|
||
|
|
||
|
|
||
|
* Predefined and user defined KEY event number assignments to use with KEY(n):
|
||
|
{{WhiteStart}} '''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$]]([[Keyboard scancodes|scancode]])
|
||
|
'''30 and 31'''...........Reserved '''F11 and F12''' function keys only.
|
||
|
{{WhiteEnd}}
|
||
|
* 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.
|
||
|
|
||
|
|
||
|
''Example 1:'' How to trap the LEFT direction keys on both the dedicated cursor keypad and the numeric keypad.
|
||
|
{{CodeStart}} '' ''
|
||
|
{{Cl|KEY n|KEY}} 15, {{Cl|CHR$}}(128) + {{Cl|CHR$}}(75) ' Assign trap for LEFT arrow key on the cursor keypad
|
||
|
{{Cl|ON KEY(n)|ON KEY(15)}} {{Cl|GOSUB}} CursorPad
|
||
|
{{Cl|KEY(n)|KEY(15)}} {{Cl|ON}} ' enable event trapping
|
||
|
|
||
|
{{Cl|ON KEY(n)|ON KEY(12)}} {{Cl|GOSUB}} NumericPad ' Trap LEFT key on number pad
|
||
|
{{Cl|KEY(n)|KEY(12)}} {{Cl|ON}} ' enable event trapping
|
||
|
|
||
|
DO
|
||
|
LOOP UNTIL UCASE$(INKEY$) = "Q" ' Idle loop for demo
|
||
|
{{Cl|SYSTEM}}
|
||
|
|
||
|
CursorPad:
|
||
|
PRINT "Pressed LEFT key on cursor keypad."
|
||
|
{{Cl|RETURN}}
|
||
|
|
||
|
NumericPad:
|
||
|
PRINT "Pressed LEFT key on numeric keypad."
|
||
|
RETURN '' ''
|
||
|
{{CodeEnd}}
|
||
|
|
||
|
|
||
|
''Example 2:'' Trapping the F5 keypress.
|
||
|
{{CodeStart}} '' ''
|
||
|
{{Cl|KEY(n)|KEY(5)}} {{Cl|ON}}
|
||
|
{{Cl|ON KEY(n)|ON KEY(5)}} {{Cl|GOSUB}} execute
|
||
|
{{Cl|PRINT}} "Press F5 (or ESC) to quit!)"
|
||
|
{{Cl|DO}}
|
||
|
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = {{Cl|CHR$}}(27) ' idle loop
|
||
|
{{Cl|SYSTEM}}
|
||
|
execute:
|
||
|
PRINT "You pressed the F5 key..."
|
||
|
{{Cl|SLEEP}} 1
|
||
|
PRINT "Press any key to continue..."
|
||
|
SLEEP '' ''
|
||
|
{{CodeEnd}}
|
||
|
|
||
|
|
||
|
''See also:''
|
||
|
* [[ON KEY(n)]], [[KEY n]] {{text|(softkeys)}}
|
||
|
* [[_KEYHIT]], [[_KEYDOWN]]
|
||
|
* [[Keyboard scancodes]]
|
||
|
|
||
|
|
||
|
{{PageNavigation}}
|