Joystick Test Script
This script helps determine the button numbers and other attributes of your joystick. It might also reveal if your joystick is in need of calibration; that is, whether the range of motion of each of its axes is from 0 to 100 percent as it should be. If calibration is needed, use the operating system's control panel or the software that came with your joystick.
Download This Script | Other Sample Scripts | Home
; July 16, 2016: Revised code for AHK v2 compatibility
; July 6, 2005 : Added auto-detection of joystick number.
; May 8, 2005 : Fixed: JoyAxes is no longer queried as a means of
; detecting whether the joystick is connected. Some joysticks are
; gamepads and don't have even a single axis.
; If you want to unconditionally use a specific joystick number, change
; the following value from 0 to the number of the joystick (1-16).
; A value of 0 causes the joystick number to be auto-detected:
JoystickNumber := 0
; END OF CONFIG SECTION. Do not make changes below this point unless
; you wish to alter the basic functionality of the script.
; Auto-detect the joystick number if called for:
if JoystickNumber <= 0
{
Loop 16 ; Query each joystick number to find out which ones exist.
{
GetKeyState, JoyName, %A_Index%JoyName
if JoyName <> ""
{
JoystickNumber := A_Index
break
}
}
if JoystickNumber <= 0
{
MsgBox The system does not appear to have any joysticks.
ExitApp
}
}
#SingleInstance
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
Loop
{
buttons_down := ""
Loop, joy_buttons
{
GetKeyState, joy%a_index%, %JoystickNumber%joy%a_index%
if joy%a_index%
buttons_down .= " " a_index
}
GetKeyState, joyx, %JoystickNumber%JoyX
axis_info := "X" Round(joyx)
GetKeyState, joyy, %JoystickNumber%JoyY
axis_info .= " Y" Round(joyy)
if InStr(joy_info, "Z")
{
GetKeyState, joyz, %JoystickNumber%JoyZ
axis_info .= " Z" Round(joyz)
}
if InStr(joy_info, "R")
{
GetKeyState, joyr, %JoystickNumber%JoyR
axis_info .= " R" Round(joyr)
}
if InStr(joy_info, "U")
{
GetKeyState, joyu, %JoystickNumber%JoyU
axis_info .= " U" Round(joyu)
}
if InStr(joy_info, "V")
{
GetKeyState, joyv, %JoystickNumber%JoyV
axis_info .= " V" Round(joyv)
}
if InStr(joy_info, "P")
{
GetKeyState, joyp, %JoystickNumber%JoyPOV
axis_info .= " POV" Round(joyp)
}
ToolTip, %joy_name% (#%JoystickNumber%):`n%axis_info%`nButtons Down: %buttons_down%`n`n(right-click the tray icon to exit)
Sleep, 100
}
return