The _DEVICE$ function returns a STRING value holding the controller type, name and input types of the input devices on a computer.
device$ = _DEVICE$(device_number)
- The _DEVICES function must be read first to get the number of devices and to enable _DEVICE$ and _DEVICEINPUT.
- The device_number parameter indicates the number of the controller device to be read.
- Returns the STRING control type, name of the device and input types each can use included in brackets:
- Control type:
- [KEYBOARD] always listed as first device when keyboard(s) available. Only one keyboard will show.
- [MOUSE]] always listed as second device when keyboard(s) and mouse(mice) are available. Only one mouse will show.
- [CONTROLLER] subsequent devices are listed as controllers which include joysticks and game pads.
- When [CONTROLLER] is returned it may also give the STRING [NAME] device description of the controller.
- Returns the type of input after the device name as one or more of the following types:
- [BUTTON] indicates there are button types of input. _LASTBUTTON can return the number of buttons available.
- [AXIS] indicates there are stick types of input. _LASTAXIS can return the number of axis available.
- [WHEEL] indicates that a scrolling input can be read. _LASTWHEEL can return the number of wheels available.
- Control type:
- Device numbers above the number of _DEVICES found will return an OS error.
- Devices found include keyboard, mouse, joysticks, game pads and multiple stick game controllers.
Checking for the system’s input devices and the number of buttons available.
devices = _DEVICES 'MUST be read in order for other 2 device functions to work! PRINT "Number of input devices found ="; devices FOR i = 1 TO devices PRINT _DEVICE$(i) PRINT "Buttons:"; _LASTBUTTON(i); "Axis:"; _LASTAXIS(i); "Wheels:"; _LASTWHEEL(i) NEXT
Number of input devices found = 3 [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)](NAME][Microsoft Sidewinder Precision Pro (USB))[BUTTON][AXIS] Buttons: 9 Axis: 6 Wheels: 0
Note: The STRIG/STICK commands won’t read from the keyboard or mouse device the above example lists. They will only work on controllers.
Finding the number of mouse buttons available in QB64. This could also be used for other devices.
FOR d = 1 TO _DEVICES 'number of input devices found dev$ = _DEVICE$(d) IF INSTR(dev$, "[MOUSE]") THEN buttons = _LASTBUTTON(d): EXIT FOR NEXT PRINT buttons; "mouse buttons available"