DEVICEINPUT: Difference between revisions
Jump to navigation
Jump to search
Code by Ted Weissgerber
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link
(Created page with "{{DISPLAYTITLE:_DEVICEINPUT}} The '''_DEVICEINPUT''' function returns the device number when a controller device button, wheel or axis event occurs. {{PageSyntax}} : {{Parameter|device%}} = _DEVICEINPUT : {{Parameter|device_active%}} = _DEVICEINPUT({{Parameter|device_number%}}) {{Parameters}} * Use the _DEVICEINPUT {{Parameter|device%}} INTEGER returned to find the number of the controller device being used. * A literal specific {{Parameter|device_number...") |
No edit summary |
||
Line 10: | Line 10: | ||
{{Parameters}} | {{Parameters}} | ||
* Use the _DEVICEINPUT {{Parameter|device%}} [[INTEGER]] returned to find the number of the controller device being used. | * Use the _DEVICEINPUT {{Parameter|device%}} [[INTEGER]] returned to find the number of the controller device being used. | ||
* A literal specific {{Parameter|device_number%}} parameter can be used to return -1 if active or 0 if inactive. {{text|EX: '''WHILE _DEVICEINPUT(2)'''|green}} | * A literal specific {{Parameter|device_number%}} parameter can be used to return -1 if active or 0 if inactive. {{text|EX: '''WHILE _DEVICEINPUT(2)'''|green}} | ||
Line 18: | Line 18: | ||
* When a device button is pressed or a scroll wheel or axis is moved, the device number will be returned. | * When a device button is pressed or a scroll wheel or axis is moved, the device number will be returned. | ||
* Devices are numbered as 1 for keyboard and 2 for mouse. Other controller devices will be numbered 3 or higher if installed. | * Devices are numbered as 1 for keyboard and 2 for mouse. Other controller devices will be numbered 3 or higher if installed. | ||
* [[_LASTBUTTON]], [[_LASTAXIS]], or [[_LASTWHEEL]] will indicate the number of functions available with the specified ''device'' number. | * [[_LASTBUTTON]], [[_LASTAXIS]], or [[_LASTWHEEL]] will indicate the number of functions available with the specified ''device'' number. | ||
* User input events can be monitored reading valid numbered [[_AXIS]], [[_BUTTON]], [[_BUTTONCHANGE]] or [[_WHEEL]] functions. | * User input events can be monitored reading valid numbered [[_AXIS]], [[_BUTTON]], [[_BUTTONCHANGE]] or [[_WHEEL]] functions. | ||
* ''Note:'' [[ON...GOSUB|ON _DEVICEINPUT GOSUB]] keyboard, mouse, gamecontrol can be used to control the devices 1,2 and 3, etc. | * ''Note:'' [[ON...GOSUB|ON _DEVICEINPUT GOSUB]] keyboard, mouse, gamecontrol can be used to control the devices 1,2 and 3, etc. | ||
{{PageExamples}} | {{PageExamples}} | ||
''Example 1:'' Checking device controller interfaces and finding out what devices are being used. | ''Example 1:'' Checking device controller interfaces and finding out what devices are being used. | ||
{{CodeStart}} | {{CodeStart}} | ||
{{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} {{Cl|_DEVICES}} | {{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} {{Cl|_DEVICES}} | ||
{{Cl|PRINT}} {{Cl|STR$}}(i) + ") " + {{Cl|_DEVICE$}}(i) | {{Cl|PRINT}} {{Cl|STR$}}(i) + ") " + {{Cl|_DEVICE$}}(i) | ||
Line 37: | Line 37: | ||
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = {{Cl|CHR$}}(27) 'escape key exit | {{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = {{Cl|CHR$}}(27) 'escape key exit | ||
{{Cl|END}} | {{Cl|END}} | ||
{{CodeEnd}} | {{CodeEnd}} | ||
{{OutputStart}}[KEYBOARD][BUTTON] | {{OutputStart}}[KEYBOARD][BUTTON] | ||
Line 52: | Line 52: | ||
''Example 2:'' Why does a mouse have 3 wheels? Relative x and y movements can be read using the first 2 [[_WHEEL]] reads. | ''Example 2:'' Why does a mouse have 3 wheels? Relative x and y movements can be read using the first 2 [[_WHEEL]] reads. | ||
{{CodeStart}} | {{CodeStart}} | ||
ignore = {{Cl|_MOUSEMOVEMENTX}} 'dummy call to put mouse into relative movement mode | ignore = {{Cl|_MOUSEMOVEMENTX}} 'dummy call to put mouse into relative movement mode | ||
Line 61: | Line 61: | ||
{{Cl|DO...LOOP|DO}} {{Cl|WHILE}} {{Cl|_DEVICEINPUT}}(2) 'loop only runs during a device 2 mouse event | {{Cl|DO...LOOP|DO}} {{Cl|WHILE}} {{Cl|_DEVICEINPUT}}(2) 'loop only runs during a device 2 mouse event | ||
{{Cl|PRINT}} {{Cl|_WHEEL}}(1), {{Cl|_WHEEL}}(2), {{Cl|_WHEEL}}(3) | {{Cl|PRINT}} {{Cl|_WHEEL}}(1), {{Cl|_WHEEL}}(2), {{Cl|_WHEEL}}(3) | ||
{{Cl|LOOP}} | {{Cl|LOOP}} | ||
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = {{Cl|CHR$}}(27) | {{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|INKEY$}} = {{Cl|CHR$}}(27) | ||
{{CodeEnd}} | {{CodeEnd}} | ||
: ''Explanation:'' Referencing the [[_MOUSEMOVEMENTX]] function hides the mouse and sets the mouse to a relative movement mode which can be read by [[_WHEEL]]. [[_DEVICEINPUT]](2) returns -1 (true) only when the mouse is moved, scrolled or clicked. | : ''Explanation:'' Referencing the [[_MOUSEMOVEMENTX]] function hides the mouse and sets the mouse to a relative movement mode which can be read by [[_WHEEL]]. [[_DEVICEINPUT]](2) returns -1 (true) only when the mouse is moved, scrolled or clicked. | ||
Line 68: | Line 68: | ||
''Example 3:'' Using [[ON...GOSUB]] with the [[_DEVICEINPUT]] number to add keyboard, mouse and game controller event procedures. | ''Example 3:'' Using [[ON...GOSUB]] with the [[_DEVICEINPUT]] number to add keyboard, mouse and game controller event procedures. | ||
{{CodeStart}} | {{CodeStart}} | ||
n = {{Cl|_DEVICES}} 'required when reading devices | n = {{Cl|_DEVICES}} 'required when reading devices | ||
{{Cl|PRINT}} "Number of devices found ="; n | {{Cl|PRINT}} "Number of devices found ="; n | ||
Line 91: | Line 91: | ||
controller: | controller: | ||
{{Cl|PRINT}} device; "Game control "; | {{Cl|PRINT}} device; "Game control "; | ||
{{Cl|RETURN}} | {{Cl|RETURN}} | ||
{{CodeEnd}} | {{CodeEnd}} | ||
{{small|Code by Ted Weissgerber}} | {{small|Code by Ted Weissgerber}} |
Revision as of 01:29, 23 January 2023
The _DEVICEINPUT function returns the device number when a controller device button, wheel or axis event occurs.
Syntax
- device% = _DEVICEINPUT
- device_active% = _DEVICEINPUT(device_number%)
- Use the _DEVICEINPUT device% INTEGER returned to find the number of the controller device being used.
- A literal specific device_number% parameter can be used to return -1 if active or 0 if inactive. EX: WHILE _DEVICEINPUT(2)
Description
- Use _DEVICES to find the number of controller devices available BEFORE using this function.
- _DEVICE$ can be used to list the device names and control types using valid _DEVICES numbers.
- When a device button is pressed or a scroll wheel or axis is moved, the device number will be returned.
- Devices are numbered as 1 for keyboard and 2 for mouse. Other controller devices will be numbered 3 or higher if installed.
- _LASTBUTTON, _LASTAXIS, or _LASTWHEEL will indicate the number of functions available with the specified device number.
- User input events can be monitored reading valid numbered _AXIS, _BUTTON, _BUTTONCHANGE or _WHEEL functions.
- Note: ON _DEVICEINPUT GOSUB keyboard, mouse, gamecontrol can be used to control the devices 1,2 and 3, etc.
Examples
Example 1: Checking device controller interfaces and finding out what devices are being used.
FOR i = 1 TO _DEVICES PRINT STR$(i) + ") " + _DEVICE$(i) PRINT "Button:"; _LASTBUTTON(i); ",Axis:"; _LASTAXIS(i); ",Wheel:"; _LASTWHEEL(i) NEXT PRINT DO x = _DEVICEINPUT IF x THEN PRINT "Device ="; x; LOOP UNTIL INKEY$ = CHR$(27) 'escape key exit END |
[KEYBOARD][BUTTON] Buttons: 512 Axis: 0 Wheels: 0 [MOUSE][BUTTON][AXIS][WHEEL] Buttons: 3 Axis: 2 Wheels: 3 [CONTROLLER][[NAME][Microsoft Sidewinder Precision Pro (USB)]][BUTTON][AXIS] Buttons: 9 Axis: 6 Wheels: 0 Device = 2 Device = 2 |
- Note: Mouse events must be within the program screen area. Keyboard presses are registered only when program is in focus.
Example 2: Why does a mouse have 3 wheels? Relative x and y movements can be read using the first 2 _WHEEL reads.
ignore = _MOUSEMOVEMENTX 'dummy call to put mouse into relative movement mode PRINT "Move your mouse and/or your mouse wheel (ESC to exit)" d = _DEVICES ' always read number of devices to enable device input DO: _LIMIT 30 'main loop DO WHILE _DEVICEINPUT(2) 'loop only runs during a device 2 mouse event PRINT _WHEEL(1), _WHEEL(2), _WHEEL(3) LOOP LOOP UNTIL INKEY$ = CHR$(27) |
- Explanation: Referencing the _MOUSEMOVEMENTX function hides the mouse and sets the mouse to a relative movement mode which can be read by _WHEEL. _DEVICEINPUT(2) returns -1 (true) only when the mouse is moved, scrolled or clicked.
Example 3: Using ON...GOSUB with the _DEVICEINPUT number to add keyboard, mouse and game controller event procedures.
n = _DEVICES 'required when reading devices PRINT "Number of devices found ="; n FOR i = 1 TO n PRINT i; _DEVICE$(i) ' 1 = keyboard, 2 = mouse, 3 = other controller, etc. NEXT PRINT DO: device = _DEVICEINPUT ON device GOSUB keyboard, mouse, controller 'must be inside program loop LOOP UNTIL INKEY$ = CHR$(27) END keyboard: PRINT device; "Keyboard"; RETURN mouse: PRINT device; "Mouse "; RETURN controller: PRINT device; "Game control "; RETURN |
- Note: ON...GOSUB and ON...GOTO events require numerical values to match the order of line labels listed in the event used inside loops.
See also
- _DEVICES, _DEVICE$
- _LASTBUTTON, _LASTAXIS, _LASTWHEEL
- _BUTTON, _AXIS, _WHEEL
- STRIG, STICK
- ON...GOSUB (numerical events)
- Controller Devices