Difference between revisions of "ON KEY(n)"

From QB64 Wiki
Jump to navigation Jump to search
imported>Clippy
m
imported>SMcNeill
m (-)
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The '''ON KEY(n)''' statement defines a line number or label to go to when a specified key is pressed.
+
The [[ON KEY(n)]] statement defines a line number or label to go to (or a [[SUB]] to run) when a specified key is pressed.
  
  
:::''Syntax:'' ON KEY (n) [[GOSUB]] {linelabel|linenumber}
+
{{PageSyntax}}
 +
: [[ON KEY(n)]] [[GOSUB]] {{Parameter|linelabel}}|{{Parameter|linenumber}}
 +
: [[ON KEY(n)]] [[SUB]]procedure
  
  
 +
{{PageDescription}}
 +
* Predefined and user defined KEY event number assignments to use with ON 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}}
 +
* See the [[KEY n]] page for user defined key or key combination presses and F function softkey assignments.
 +
* [[GOSUB]] with a {{Parameter|linelabel}} or {{Parameter|linenumber}}  or a [[SUB]] procedure (without the [[CALL]] keyword) can be triggered in '''QB64'''.
  
''Description:''
 
*'''[[Keywords currently not supported by QB64|Currently NOT supported in QB64!]]'''
 
* The keys apply to the list of keys shown below, where n is the number that represents that key.
 
  
:'''1-10''' for '''F1-F10''' function keys
+
{{PageExamples}}
 
+
''Example 1:'' Using ON KEY with [[GOSUB]] to execute code.
:'''11, 12, 13 and 14''' for '''UP, LEFT, RIGHT and DOWN''' numberpad arrows respectively.
+
{{CodeStart}} '' ''
 
 
:'''15-25''' for '''user-defined keys'''. See: [[Keyboard scancodes]]
 
 
 
:'''30 and 31''' for '''F11 and F12''' function keys
 
 
 
 
 
''Example:''
 
{{CodeStart}}
 
'' ''
 
 
{{Cl|KEY(n)|KEY(1) ON}}
 
{{Cl|KEY(n)|KEY(1) ON}}
{{Cl|ON KEY (1)}} {{Cl|GOSUB}} trap
+
{{Cl|ON KEY(n)|ON KEY}}(1) {{Cl|GOSUB}} trap
 
{{Cl|PRINT}} "Press F1 to quit!"
 
{{Cl|PRINT}} "Press F1 to quit!"
 
{{Cl|DO}}:{{Cl|LOOP}}          'never ending loop
 
{{Cl|DO}}:{{Cl|LOOP}}          'never ending loop
Line 34: Line 33:
  
  
 +
''Example 2:'' Setting multiple ON KEY statements to send different values to a [[SUB]] procedure.
 +
{{CodeStart}} '' ''
 +
 
 +
{{Cl|FOR...NEXT|FOR}} n = 1 {{Cl|TO}} 10
 +
  {{Cl|KEY n|KEY}} n, {{Cl|STR$}}(n)  '  assigns soft key as a numerical string
 +
  {{Cl|ON KEY(n)|ON KEY}}(n) Funct n  'designate SUB procedure and parameter value passed
 +
  {{Cl|KEY(n)|KEY}}(n) ON '        turns each key event monitor on
 +
{{Cl|NEXT}}
 +
{{Cl|KEY n|KEY}} ON  'displays F1 to F10 soft key assignments at bottom of screen
  
''See also:''
+
{{Cl|DO}}
 +
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = {{Cl|CHR$}}(27)
 +
{{Cl|END}}
  
* [[KEY(n)]], [[KEY n]]
+
{{Cl|SUB}} Funct (num%)
 +
{{Cl|CLS}}'                  clears the screen and refreshes bottom soft key list
 +
{{Cl|PRINT}} "You pressed F"; {{Cl|LTRIM$}}({{Cl|STR$}}(num%))
 +
{{Cl|END SUB}} '' ''
 +
{{CodeEnd}}
  
 +
 +
{{PageSeeAlso}}
 +
* [[KEY(n)]], [[KEY n]] {{text|(soft key)}}
 
* [[ON...GOSUB]], [[Scancodes]]
 
* [[ON...GOSUB]], [[Scancodes]]
 
 
* [[_KEYHIT]], [[_KEYDOWN]]
 
* [[_KEYHIT]], [[_KEYDOWN]]
 
  
  
 
{{PageNavigation}}
 
{{PageNavigation}}

Latest revision as of 03:15, 16 October 2017

The ON KEY(n) statement defines a line number or label to go to (or a SUB to run) when a specified key is pressed.


Syntax

ON KEY(n) GOSUB linelabel|linenumber
ON KEY(n) SUBprocedure


Description

  • Predefined and user defined KEY event number assignments to use with ON 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.

  • See the KEY n page for user defined key or key combination presses and F function softkey assignments.
  • GOSUB with a linelabel or linenumber or a SUB procedure (without the CALL keyword) can be triggered in QB64.


Examples

Example 1: Using ON KEY with GOSUB to execute code.

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


Example 2: Setting multiple ON KEY statements to send different values to a SUB procedure.

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



Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page