EDIT: I just installed the beta version and it is working.... lol
I am unable to run any scripts because I continue to get this message:
"A vJoy install was found in C:\Program Files\vJoy, but it appears to be an old version.
Please update vJoy to the lastest version from
http://vjoystick.sourceforge.net."
This link it provides then tells me it was infected with a virus and to download it from another link, which is the lastest version of vJoy and also the one I have installed. This is the code (which is not mine) that I am trying to run:
#SingleInstance force
#NoEnv
#include
SetBatchLines, -1
hotkeys := [ "Analog Up" ; 1
, "Analog Down" ; 2
, "Analog Left" ; 3
, "Analog Right" ; 4
, "ModX" ; 5
, "ModY" ; 6
, "A" ; 7
, "B" ; 8
, "L" ; 9
, "R" ; 10
, "X" ; 11
, "Y" ; 12
, "Z" ; 13
, "C-stick Up" ; 14
, "C-stick Down" ; 15
, "C-stick Left" ; 16
, "C-stick Right" ; 17
, "Light Shield" ; 18
, "Mid Shield" ; 19
, "Start" ; 20
, "D-pad Up" ; 21
, "D-pad Down" ; 22
, "D-pad Left" ; 23
, "D-pad Right" ; 24
, "Debug"] ; 25
Menu, Tray, Click, 1
Menu, Tray, Add, Edit Controls, ShowGui
Menu, Tray, Default, Edit Controls
for index, element in hotkeys{
Gui, Add, Text, xm vLB%index%, %element% Hotkey:
IniRead, savedHK%index%, hotkeys.ini, Hotkeys, %index%, %A_Space%
If savedHK%index% ;Check for saved hotkeys in INI file.
Hotkey,% savedHK%index%, Label%index% ;Activate saved hotkeys if found.
Hotkey,% savedHK%index% . " UP", Label%index%_UP ;Activate saved hotkeys if found.
;TrayTip, B0XX, Label%index%_UP, 3, 0
;TrayTip, B0XX, % savedHK%A_Index%, 3, 0
;TrayTip, B0XX, % savedHK%index% . " UP", 3, 0
checked := false
if(!InStr(savedHK%index%, "", false)){
checked := true
}
StringReplace, noMods, savedHK%index%, ~ ;Remove tilde () and Win (#) modifiers...
StringReplace, noMods, noMods, #,,UseErrorLevel ;They are incompatible with hotkey controls (cannot be shown).
Gui, Add, Hotkey, x+5 w50 vHK%index% gGuiLabel, %noMods% ;Add hotkey controls and show saved hotkeys.
if(!checked)
Gui, Add, CheckBox, x+5 vCB%index% gGuiLabel, Prevent Default Behavior ;Add checkboxes to allow the Windows key (#) as a modifier..
else
Gui, Add, CheckBox, x+5 vCB%index% Checked gGuiLabel, Prevent Default Behavior ;Add checkboxes to allow the Windows key (#) as a modifier..
} ;Check the box if Win modifier is used.
;----------Start Hotkey Handling-----------
; Create an object from vJoy Interface Class.
vJoyInterface := new CvJoyInterface()
; Was vJoy installed and the DLL Loaded?
if (!vJoyInterface.vJoyEnabled()) {
; Show log of what happened
Msgbox % vJoyInterface.LoadLibraryLog
ExitApp
}
myStick := vJoyInterface.Devices[1]
; Alert User that script has started
TrayTip, B0XX, Script Started, 3, 0
; state variables
buttonUp := false
buttonDown := false
buttonLeft := false
buttonRight := false
buttonA := false
buttonB := false
buttonL := false
buttonR := false
buttonX := false
buttonY := false
buttonZ := false
buttonLightShield := false
buttonMidShield := false
buttonModX := false
buttonModY := false
buttonCUp := false
buttonCDown := false
buttonCLeft := false
buttonCRight := false
mostRecentVertical := ""
mostRecentHorizontal := ""
mostRecentVerticalC := ""
mostRecentHorizontalC := ""
simultaneousHorizontalModifierLockout := false
; b0xx constants
coordsOrigin := [0, 0]
coordsVertical := [0, 1]
coordsVerticalModX := [0, 0.5375]
coordsVerticalModY := [0, 0.7375]
coordsHorizontal := [1, 0]
coordsHorizontalModX := [0.6625, 0]
coordsHorizontalModY := [0.3375, 0]
coordsQuadrant := [0.7, 0.7]
coordsQuadrantModX := [0.7375, 0.3125]
coordsQuadrantModY := [0.3125, 0.7375]
coordsAirdodgeVertical := coordsVertical
coordsAirdodgeVerticalModX := coordsVerticalModX
coordsAirdodgeVerticalModY := coordsVerticalModY
coordsAirdodgeHorizontal := coordsHorizontal
coordsAirdodgeHorizontalModX := coordsHorizontalModX
coordsAirdodgeHorizontalModY := coordsHorizontalModY
coordsAirdodgeQuadrant := [0.7, 0.6875]
coordsAirdodgeQuadrant12 := [0.7, 0.7]
coordsAirdodgeQuadrant34 := [0.7, 0.6875]
coordsAirdodgeQuadrantModX := [0.6375, 0.375]
coordsAirdodgeQuadrant12ModY := [0.475, 0.875]
coordsAirdodgeQuadrant34ModY := [0.5, 0.85]
coordsFirefoxModXCDown := [0.7, 0.3625] ; ~27 deg
coordsFirefoxModXCLeft := [0.7875, 0.4875] ; ~32 deg
coordsFirefoxModXCUp := [0.7, 0.5125] ; ~36 deg
coordsFirefoxModXCRight := [0.6125, 0.525] ; ~41 deg
coordsFirefoxModYCRight := [0.6375, 0.7625] ; ~50 deg
coordsFirefoxModYCUp := [0.5125, 0.7] ; ~54 deg
coordsFirefoxModYCLeft := [0.4875, 0.7875] ; ~58 deg
coordsFirefoxModYCDown := [0.3625, 0.7] ; ~63 deg
coordsExtendedFirefoxModX := [0.9125, 0.3875] ; ~23 deg
coordsExtendedFirefoxModXCDown := [0.875, 0.45] ; ~27 deg
coordsExtendedFirefoxModXCLeft := [0.85, 0.525] ; ~32 deg
coordsExtendedFirefoxModXCUp := [0.7375, 0.5375] ; ~36 deg
coordsExtendedFirefoxModXCRight := [0.6375, 0.5375] ; ~40 deg
coordsExtendedFirefoxModYCRight := [0.5875, 0.7125] ; ~50 deg
coordsExtendedFirefoxModYCUp := [0.5875, 0.8] ; ~54 deg
coordsExtendedFirefoxModYCLeft := [0.525, 0.85] ; ~58 deg
coordsExtendedFirefoxModYCDown := [0.45, 0.875] ; ~63 deg
coordsExtendedFirefoxModY := [0.3875, 0.9125] ; ~67 deg
; Debug info
lastCoordTrace := ""
; Utility functions
up() {
global
return buttonUp and mostRecentVertical == "U"
}
down() {
global
return buttonDown and mostRecentVertical == "D"
}
left() {
global
return buttonLeft and mostRecentHorizontal == "L"
}
right() {
global
return buttonRight and mostRecentHorizontal == "R"
}
cUp() {
global
return buttonCUp and mostRecentVerticalC == "U" and not bothMods()
}
cDown() {
global
return buttonCDown and mostRecentVerticalC == "D" and not bothMods()
}
cLeft() {
global
return buttonCLeft and mostRecentHorizontalC == "L" and not bothMods()
}
cRight() {
global
return buttonCRight and mostRecentHorizontalC == "R" and not bothMods()
}
modX() {
global
; deactivate if either:
; - modY is also held
; - both left and right are held (and were pressed after modX) while neither up or down is active (
return buttonModX and not buttonModY and not (simultaneousHorizontalModifierLockout and not anyVert())
}
modY() {
global
return buttonModY and not buttonModX and not (simultaneousHorizontalModifierLockout and not anyVert())
}
anyVert() {
global
return up() or down()
}
anyHoriz() {
global
return left() or right()
}
anyQuadrant() {
global
return anyVert() and anyHoriz()
}
anyMod() {
global
return modX() or modY()
}
bothMods() {
global
return buttonModX and buttonModY
}
anyShield() {
global
return buttonL or buttonR or buttonLightShield or buttonMidShield
}
anyVertC() {
global
return cUp() or cDown()
}
anyHorizC() {
global
return cLeft() or cRight()
}
anyC() {
global
return cUp() or cDown() or cLeft() or cRight()
}
; Updates the position on the analog stick based on the current held buttons
updateAnalogStick() {
setAnalogStick(getAnalogCoords())
}
updateCStick() {
setCStick(getCStickCoords())
}
getAnalogCoords() {
global
if (anyShield()) {
coords := getAnalogCoordsAirdodge()
} else if (anyMod() and anyQuadrant() and (anyC() or buttonB)) {
coords := getAnalogCoordsFirefox()
} else {
coords := getAnalogCoordsWithNoShield()
}
return reflectCoords(coords)
}
reflectCoords(coords) {
x := coords[1]
y := coords[2]
if (down()) {
y := -y
}
if (left()) {
x := -x
}
return [x, y]
}
getAnalogCoordsAirdodge() {
global
if (neither(anyVert(), anyHoriz())) {
lastCoordTrace := "L-O"
return coordsOrigin
} else if (anyQuadrant()) {
if (modX()) {
lastCoordTrace := "L-Q-X"
return coordsAirdodgeQuadrantModX
} else if (modY()) {
lastCoordTrace := "L-Q-Y"
return up() ? coordsAirdodgeQuadrant12ModY : coordsAirdodgeQuadrant34ModY
} else {
lastCoordTrace := "L-Q"
return up() ? coordsAirdodgeQuadrant12 : coordsAirdodgeQuadrant34
}
} else if (anyVert()) {
if (modX()) {
lastCoordTrace := "L-V-X"
return coordsAirdodgeVerticalModX
} else if (modY()) {
lastCoordTrace := "L-V-Y"
return coordsAirdodgeVerticalModY
} else {
lastCoordTrace := "L-V"
return coordsAirdodgeVertical
}
} else {
if (modX()) {
lastCoordTrace := "L-H-X"
return coordsAirdodgeHorizontalModX
} else if (modY()) {
lastCoordTrace := "L-H-Y"
return buttonB ? coordsAirdodgeHorizontal: coordsAirdodgeHorizontalModY ; turnaround side-b nerf
} else {
lastCoordTrace := "L-H"
return coordsAirdodgeHorizontal
}
}
}
getAnalogCoordsWithNoShield() {
global
if (neither(anyVert(), anyHoriz())) {
lastCoordTrace := "N-O"
return coordsOrigin
} else if (anyQuadrant()) {
if (modX()) {
lastCoordTrace := "N-Q-X"
return coordsQuadrantModX
} else if (modY()) {
lastCoordTrace := "N-Q-Y"
return coordsQuadrantModY
} else {
lastCoordTrace := "N-Q"
return coordsQuadrant
}
} else if (anyVert()) {
if (modX()) {
lastCoordTrace := "N-V-X"
return coordsVerticalModX
} else if (modY()) {
lastCoordTrace := "N-V-Y"
return coordsVerticalModY
} else {
lastCoordTrace := "N-V"
return coordsVertical
}
} else {
if (modX()) {
lastCoordTrace := "N-H-X"
return coordsHorizontalModX
} else if (modY()) {
lastCoordTrace := "N-H-Y"
return buttonB ? coordsHorizontal : coordsHorizontalModY ; turnaround side-b nerf
} else {
lastCoordTrace := "N-H"
return coordsHorizontal
}
}
}
getAnalogCoordsFirefox() {
global
if (modX()) {
if (cUp()) {
lastCoordTrace := "F-X-U"
return buttonB ? coordsExtendedFirefoxModXCUp : coordsFirefoxModXCUp
} else if (cDown()) {
lastCoordTrace := "F-X-D"
return buttonB ? coordsExtendedFirefoxModXCDown : coordsFirefoxModXCDown
} else if (cLeft()) {
lastCoordTrace := "F-X-L"
return buttonB ? coordsExtendedFirefoxModXCLeft : coordsFirefoxModXCLeft
} else if (cRight()) {
lastCoordTrace := "F-X-R"
return buttonB ? coordsExtendedFirefoxModXCRight : coordsFirefoxModXCRight
} else {
lastCoordTrace := "F-X"
return coordsExtendedFirefoxModX
}
} else if (modY()) {
if (cUp()) {
lastCoordTrace := "F-Y-U"
return buttonB ? coordsExtendedFirefoxModYCUp : coordsFirefoxModYCUp
} else if (cDown()) {
lastCoordTrace := "F-Y-D"
return buttonB ? coordsExtendedFirefoxModYCDown : coordsFirefoxModYCDown
} else if (cLeft()) {
lastCoordTrace := "F-Y-L"
return buttonB ? coordsExtendedFirefoxModYCLeft : coordsFirefoxModYCLeft
} else if (cRight()) {
lastCoordTrace := "F-Y-R"
return buttonB ? coordsExtendedFirefoxModYCRight : coordsFirefoxModYCRight
} else {
lastCoordTrace := "F-Y"
return coordsExtendedFirefoxModY
}
}
}
setAnalogStick(coords) {
global
convertedCoords := convertCoords(coords)
myStick.SetAxisByIndex(convertedCoords[1], 1)
myStick.SetAxisByIndex(convertedCoords[2], 2)
}
getCStickCoords() {
global
if (neither(anyVertC(), anyHorizC())) {
coords := [0, 0]
} else if (anyVertC() and anyHorizC()) {
coords := [0.525, 0.85]
} else if (anyVertC()) {
coords := [0, 1]
} else {
if (modX() and up()) {
coords := [0.9, 0.5]
} else if (modX() and down()) {
coords := [0.9, -0.5]
} else {
coords := [1, 0]
}
}
return reflectCStickCoords(coords)
}
reflectCStickCoords(coords) {
x := coords[1]
y := coords[2]
if (cDown()) {
y := -y
}
if (cLeft()) {
x := -x
}
return [x, y]
}
setCStick(coords) {
global
convertedCoords := convertCoords(coords)
myStick.SetAxisByIndex(convertedCoords[1], 4)
myStick.SetAxisByIndex(convertedCoords[2], 5)
}
; Converts coordinates from melee values (-1 to 1) to vJoy values (0 to 32767).
convertCoords(coords) {
mx = 10271 ; Why this number? idk, I would have thought it should be 16384 * (80 / 128) = 10240, but this works
my = -10271
bx = 16448 ; 16384 + 64
by = 16320 ; 16384 - 64
return [ mx * coords[1] + bx
, my * coords[2] + by ]
}
setAnalogR(value) {
global
; vJoy/Dolphin does something strange with rounding analog shoulder presses. In general,
; it seems to want to round to odd values, so
; 16384 => 0.00000 (0) <-- actual value used for 0
; 19532 => 0.35000 (49) <-- actual value used for 49
; 22424 => 0.67875 (95) <-- actual value used for 94
; 22384 => 0.67875 (95)
; 22383 => 0.66429 (93)
; But, extremely inconsistently, I have seen the following:
; 22464 => 0.67143 (94)
; Which no sense and I can't reproduce.
convertedValue := 16384 * (1 + (value / 255))
myStick.SetAxisByIndex(convertedValue, 3)
}
neither(a, b) {
return (not a) and (not b)
}
validateHK(GuiControl) {
global lastHK
Gui, Submit, NoHide
lastHK := %GuiControl% ;Backup the hotkey, in case it needs to be reshown.
num := SubStr(GuiControl,3) ;Get the index number of the hotkey control.
If (HK%num% != "") { ;If the hotkey is not blank...
StringReplace, HK%num%, HK%num%, SC15D, AppsKey ;Use friendlier names,
StringReplace, HK%num%, HK%num%, SC154, PrintScreen ; instead of these scan codes.
;If CB%num% ; If the 'Win' box is checked, then add its modifier (#).
;HK%num% := "#" HK%num%
If (!CB%num% && !RegExMatch(HK%num%,"[#!^+]")) ; If the new hotkey has no modifiers, add the () modifier.
HK%num% := "" HK%num% ; This prevents any key from being blocked.
checkDuplicateHK(num)
}
If (savedHK%num% || HK%num%) ;Unless both are empty,
setHK(num, savedHK%num%, HK%num%) ; update INI/GUI
}
checkDuplicateHK(num) {
global
Loop,% hotkeys.Length()
If (HK%num% = savedHK%A_Index%) {
dup := A_Index
TrayTip, B0XX, Hotkey Already Taken, 3, 0
Loop,6 {
GuiControl,% "Disable" b:=!b, HK%dup% ;Flash the original hotkey to alert the user.
Sleep,200
}
GuiControl,,HK%num%,% HK%num% :="" ;Delete the hotkey and clear the control.
break
}
}
setHK(num,INI,GUI) {
If INI{ ;If previous hotkey exists,
Hotkey, %INI%, Label%num%, Off ; disable it.
Hotkey, %INI% UP, Label%num%_UP, Off ; disable it.
}
If GUI{ ;If new hotkey exists,
Hotkey, %GUI%, Label%num%, On ; enable it.
Hotkey, %GUI% UP, Label%num%_UP, On ; enable it.
}
IniWrite,% GUI ? GUI:null, hotkeys.ini, Hotkeys, %num%
savedHK%num% := HK%num%
;TrayTip, Label%num%,% !INI ? GUI " ON":!GUI ? INI " OFF":GUI " ON`n" INI " OFF"
}
#MenuMaskKey vk07 ;Requires AHK_L 38+
#If ctrl := HotkeyCtrlHasFocus()
*AppsKey:: ;Add support for these special keys,
*BackSpace:: ; which the hotkey control does not normally allow.
*Delete::
*Enter::
*Escape::
*Pause::
*PrintScreen::
*Space::
*Tab::
modifier := ""
If GetKeyState("Shift","P")
modifier .= "+"
If GetKeyState("Ctrl","P")
modifier .= "^"
If GetKeyState("Alt","P")
modifier .= "!"
Gui, Submit, NoHide ;If BackSpace is the first key press, Gui has never been submitted.
If (A_ThisHotkey == "*BackSpace" && %ctrl% && !modifier) ;If the control has text but no modifiers held,
GuiControl,,%ctrl% ; allow BackSpace to clear that text.
Else ;Otherwise,
GuiControl,,%ctrl%, % modifier SubStr(A_ThisHotkey,2) ; show the hotkey.
validateHK(ctrl)
return
#If
HotkeyCtrlHasFocus() {
GuiControlGet, ctrl, Focus ;ClassNN
If InStr(ctrl,"hotkey") {
GuiControlGet, ctrl, FocusV ;Associated variable
Return, ctrl
}
}
;----------------------------Labels
;Show GUI from tray Icon
ShowGui:
Gui, show,, Dynamic Hotkeys
GuiControl, Focus, LB1 ; this puts the windows "focus" on the checkbox, that way it isn't immediately waiting for input on the 1st input box
return
GuiLabel:
If %A_GuiControl% in +,^,!,+^,+!,^!,+^! ;If the hotkey contains only modifiers, return to wait for a key.
return
If InStr(%A_GuiControl%,"vk07") ;vk07 = MenuMaskKey (see below)
GuiControl,,%A_GuiControl%, % lastHK ;Reshow the hotkey, because MenuMaskKey clears it.
Else
validateHK(A_GuiControl)
return
;-------macros
Pause::Suspend
^!r:: Reload
SetKeyDelay, 0
#MaxHotkeysPerInterval 200
^!s::
Suspend
If A_IsSuspended
TrayTip, B0XX, Hotkeys Disabled, 3, 0
Else
TrayTip, B0XX, Hotkeys Enabled, 3, 0
Return
; Analog Up
Label1:
buttonUp := true
mostRecentVertical := "U"
updateAnalogStick()
updateCStick()
return
Label1_UP:
buttonUp := false
updateAnalogStick()
updateCStick()
return
; Analog Down
Label2:
buttonDown := true
mostRecentVertical := "D"
updateAnalogStick()
updateCStick()
return
Label2_UP:
buttonDown := false
updateAnalogStick()
updateCStick()
return
; Analog Left
Label3:
buttonLeft := true
mostRecentHorizontal := "L"
if (buttonRight) {
simultaneousHorizontalModifierLockout := true
}
updateAnalogStick()
return
Label3_UP:
buttonLeft := false
simultaneousHorizontalModifierLockout := false
updateAnalogStick()
return
; Analog Right
Label4:
buttonRight := true
mostRecentHorizontal := "R"
if (buttonLeft) {
simultaneousHorizontalModifierLockout := true
}
updateAnalogStick()
return
Label4_UP:
buttonRight := false
simultaneousHorizontalModifierLockout := false
updateAnalogStick()
return
; ModX
Label5:
buttonModX := true
simultaneousHorizontalModifierLockout := false ; Lockout is order dependant, only applies if modifier isn't pressed after horizontals
updateAnalogStick()
updateCStick()
return
Label5_UP:
buttonModX := false
simultaneousHorizontalModifierLockout := false
updateAnalogStick()
updateCStick()
return
; ModY
Label6:
buttonModY := true
updateAnalogStick()
return
Label6_UP:
buttonModY := false
updateAnalogStick()
return
; A
Label7:
buttonA := true
myStick.SetBtn(1,5)
return
Label7_UP:
buttonA := false
myStick.SetBtn(0,5)
return
; B
Label8:
buttonB := true
myStick.SetBtn(1, 4)
updateAnalogStick()
return
Label8_UP:
buttonB := false
myStick.SetBtn(0, 4)
updateAnalogStick()
return
; L
Label9:
buttonL := true
myStick.SetBtn(1, 1)
updateAnalogStick()
return
Label9_UP:
buttonL := false
myStick.SetBtn(0, 1)
updateAnalogStick()
return
; R
Label10:
buttonR := true
myStick.SetBtn(1, 3)
updateAnalogStick()
return
Label10_UP:
buttonR := false
myStick.SetBtn(0, 3)
updateAnalogStick()
return
; X
Label11:
buttonX := true
myStick.SetBtn(1, 6)
return
Label11_UP:
buttonX := false
myStick.SetBtn(0, 6)
return
; Y
Label12:
buttonY := true
myStick.SetBtn(1, 2)
return
Label12_UP:
buttonY := false
myStick.SetBtn(0, 2)
return
; Z
Label13:
buttonZ := true
myStick.SetBtn(1, 7)
updateAnalogStick()
return
Label13_UP:
buttonZ := false
myStick.SetBtn(0, 7)
updateAnalogStick()
return
; C Up
Label14:
buttonCUp := true
if (bothMods()) {
; Pressing ModX and ModY simultaneously changes C buttons to D pad
myStick.SetBtn(1, 9)
} else {
mostRecentVerticalC := "U"
updateCStick()
updateAnalogStick()
}
return
Label14_UP:
buttonCUp := false
myStick.SetBtn(0, 9)
updateCStick()
updateAnalogStick()
return
; C Down
Label15:
buttonCDown := true
if (bothMods()) {
; Pressing ModX and ModY simultaneously changes C buttons to D pad
myStick.SetBtn(1, 11)
} else {
mostRecentVerticalC := "D"
updateCStick()
updateAnalogStick()
}
return
Label15_UP:
buttonCDown := false
myStick.SetBtn(0, 11)
updateCStick()
updateAnalogStick()
return
; C Left
Label16:
buttonCLeft := true
if (bothMods()) {
; Pressing ModX and ModY simultaneously changes C buttons to D pad
myStick.SetBtn(1, 10)
} else {
mostRecentHorizontalC := "L"
updateCStick()
updateAnalogStick()
}
return
Label16_UP:
buttonCLeft := false
myStick.SetBtn(0, 10)
updateCStick()
updateAnalogStick()
return
; C Right
Label17:
buttonCRight := true
if (bothMods()) {
; Pressing ModX and ModY simultaneously changes C buttons to D pad
myStick.SetBtn(1, 12)
} else {
mostRecentHorizontalC := "R"
updateCStick()
updateAnalogStick()
}
return
Label17_UP:
buttonCRight := false
myStick.SetBtn(0, 12)
updateCStick()
updateAnalogStick()
return
; Lightshield (Light)
Label18:
buttonLightShield := true
setAnalogR(49)
return
Label18_UP:
buttonLightShield := false
setAnalogR(0)
return
; Lightshield (Medium)
Label19:
buttonMidShield := true
setAnalogR(94)
return
Label19_UP:
buttonMidShield := false
setAnalogR(0)
return
; Start
Label20:
myStick.SetBtn(1, 8)
return
Label20_UP:
myStick.SetBtn(0, 8)
return
; D Up
Label21:
myStick.SetBtn(1, 9)
return
Label21_UP:
myStick.SetBtn(0, 9)
return
; D Down
Label22:
myStick.SetBtn(1, 11)
return
Label22_UP:
myStick.SetBtn(0, 11)
return
; D Left
Label23:
myStick.SetBtn(1, 10)
return
Label23_UP:
myStick.SetBtn(0, 10)
return
; D Right
Label24:
myStick.SetBtn(1, 12)
return
Label24_UP:
myStick.SetBtn(0, 12)
return
; Debug
Label25:
debugString := getDebug()
Msgbox % debugString
Label25_UP:
return
getDebug() {
global
activeArray := []
pressedArray := []
flagArray := []
appendButtonState(activeArray, pressedArray, up(), buttonUp, "Up")
appendButtonState(activeArray, pressedArray, down(), buttonDown, "Down")
appendButtonState(activeArray, pressedArray, left(), buttonLeft, "Left")
appendButtonState(activeArray, pressedArray, right(), buttonRight, "Right")
appendButtonState(activeArray, pressedArray, modX(), buttonModX, "ModX")
appendButtonState(activeArray, pressedArray, modY(), buttonModY, "ModY")
appendButtonState(activeArray, pressedArray, buttonA, false, "A")
appendButtonState(activeArray, pressedArray, buttonB, false, "B")
appendButtonState(activeArray, pressedArray, buttonL, false, "L")
appendButtonState(activeArray, pressedArray, buttonR, false, "R")
appendButtonState(activeArray, pressedArray, buttonX, false, "X")
appendButtonState(activeArray, pressedArray, buttonY, false, "Y")
appendButtonState(activeArray, pressedArray, buttonZ, false, "Z")
appendButtonState(activeArray, pressedArray, buttonLightShield, false, "LightShield")
appendButtonState(activeArray, pressedArray, buttonMidShield, false, "MidShield")
appendButtonState(activeArray, pressedArray, CUp(), buttonCUp, "C-Up")
appendButtonState(activeArray, pressedArray, CDown(), buttonCDown, "C-Down")
appendButtonState(activeArray, pressedArray, CLeft(), buttonCLeft, "C-Left")
appendButtonState(activeArray, pressedArray, CRight(), buttonCRight, "C-Right")
conditionalAppend(flagArray, simultaneousHorizontalModifierLockout, "SHML")
activeButtonList := stringJoin(", ", activeArray)
pressedButtonList := stringJoin(", ", pressedArray)
flagList := stringJoin(", ", flagArray)
trace1 := lastCoordTrace
analogCoords := getAnalogCoords()
cStickCoords := getCStickCoords()
trace2 := lastCoordTrace
trace := trace1 == trace2 ? trace1 : Format("{1}/{2}", trace1, trace2)
debugFormatString =
(
Analog Stick: [{1}, {2}]
C Stick: [{3}, {4}]
Active held buttons:
{5}
Disabled held buttons:
{6}
Flags:
{7}
Trace:
{8}
)
return Format(debugFormatString
, analogCoords[1], analogCoords[2]
, cStickCoords[1], cStickCoords[2]
, activeButtonList, pressedButtonList, flagList
, trace)
}
appendButtonState(activeArray, pressedArray, isActive, isPressed, name) {
if (isActive) {
activeArray.Push(name)
} else if (isPressed) {
pressedArray.Push(name)
}
}
conditionalAppend(array, condition, value) {
if (condition) {
array.Push(value)
}
}
; From https://www.autohotkey.com/boards/viewtopic.php?t=7124
stringJoin(sep, params) {
for index,param in params
str .= param . sep
return SubStr(str, 1, -StrLen(sep))
}