Professional Documents
Culture Documents
Hom 16th
Hom 16th
au3"
Global $gValid = 1 ; Keeps track of whether all user inputs are valid
numbers or not
Global $gMode = -1 ; Three states of $gMode: -1, 0, and 1, for halt
override, in-progress, and ready.
Global $gSens = 0.022
Global $gPartition = 480
Global $gDelay = 10
Global $gCycle = 22
Global $gResidual = 0.0 ; Residual accumulator
Global $gBounds[2] = [0,0] ; Upper/lower bounds of increment
MakeGUI()
Func MakeGUI()
Global $idGUI = GUICreate("Sensitivity Matcher", 295, 235,-1,-
1,BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX))
GUISetIcon("shell32_16739.ico")
GUICtrlCreateLabel( "Select preset yaw:" , 0, 7, 95, 15,
$SS_RIGHT )
GUICtrlCreateLabel( "Sens" , 5, 50, 80, 15,
$SS_CENTER)
GUICtrlCreateLabel( "×" , 85, 33, 15, 15,
$SS_CENTER)
GUICtrlCreateLabel( "Yaw (deg)" , 100, 50, 95, 15,
$SS_CENTER)
GUICtrlCreateLabel( "=" , 195, 33, 15, 15,
$SS_CENTER)
GUICtrlCreateLabel( "Increment" , 210, 50, 80, 15,
$SS_CENTER)
GUICtrlCreateGraphic( 5, 70, 285, 2,
$SS_SUNKEN) ; horizontal line
GUICtrlCreateLabel( "Repeater Function Options" , 5, 80, 285, 15,
$SS_CENTER)
GUICtrlCreateLabel( "One Revolution of" , 0, 102, 95, 15,
$SS_RIGHT )
GUICtrlCreateLabel( "counts." , 200, 102, 60, 15,
$SS_LEFT )
GUICtrlCreateLabel( "Move Partitions of" , 0, 127, 95, 15,
$SS_RIGHT )
GUICtrlCreateLabel( "counts" , 200, 127, 60, 15,
$SS_LEFT )
GUICtrlCreateLabel( "at a Frequency of" , 0, 152, 95, 15,
$SS_RIGHT )
GUICtrlCreateLabel( "Hz" , 200, 152, 60, 15,
$SS_LEFT )
GUICtrlCreateLabel( "for a Cycle of" , 0, 177, 95, 15,
$SS_RIGHT )
GUICtrlCreateLabel( "revolutions." , 200, 177, 60, 15,
$SS_LEFT )
FirstLaunchCheck()
SetupRawinput($idGUI)
GUISetState(@SW_SHOW)
KeybindSetter("enable","turn")
Do
Switch $idMsg[0]
Case $sCycle
$gResidual = 0
$gCycle = _GetNumberFromString(GuiCtrlRead($sCycle))
Case $sTickRate
$gResidual = 0
$gDelay =
10*Ceiling(100/_GetNumberFromString(GuiCtrlRead($sTickRate)))
GUICtrlSetData( $sTickRate , 1000/$gDelay )
Case $sPartition
$gResidual = 0
$lPartition = _GetNumberFromString(GuiCtrlRead($sPartition))
$gPartition = $lPartition
If $lastYawPresets == "Measure any game" Then
$gPartition = UpdatePartition($gPartition,$gSens,$gBounds,$gDelay)
EndIf
Case $sSens
$gResidual = 0
$gSens = _GetNumberFromString( GuiCtrlRead($sSens) ) *
_GetNumberFromString( GuiCtrlRead($sYaw) )
$lastgSens = $gSens
$idMsg[0] = -1
GUICtrlSetData( $sCounts, String( 360/$gSens ) )
_GUICtrlEdit_SetSel( $sCounts, 0, 0 )
GUICtrlSetData( $sIncr , String( $gSens ) )
_GUICtrlEdit_SetSel( $sIncr , 0, 0 )
Case $idSave
If $gValid Then
If MsgBox(1,"Save values","Save current values to startup default?") ==
1 Then
KeybindSetter("save")
IniWrite($gSettingIni,"Default","sens",_GetNumberFromString(GuiCtrlRead($sSens)))
IniWrite($gSettingIni,"Default","yaw" ,_GetNumberFromString(GuiCtrlRead($sYaw)))
IniWrite($gSettingIni,"Default","part",_GetNumberFromString(GuiCtrlRead($sPartition
)))
IniWrite($gSettingIni,"Default","freq",_GetNumberFromString(GuiCtrlRead($sTickRate)
))
IniWrite($gSettingIni,"Default","cycl",_GetNumberFromString(GuiCtrlRead($sCycle)))
If NOT ($idGUICalc == "INACTIVE") Then
IniWrite($gSettingIni,"Default","cpi" ,_GetNumberFromString(GuiCtrlRead($lCalculato
r[1])))
MsgBox(0,"Success","Saved CPI, Sens, Yaw, Partition, Frequency,
Cycle, and Hotkeys.")
Else
MsgBox(0,"Success","Saved Sens, Yaw, Partition, Frequency, Cycle, and
Hotkeys.")
EndIf
EndIf
Else
HelpMessage()
EndIf
Case $idCalc
If $idGUICalc == "INACTIVE" Then
$idGUICalc = HandyCalculator("INITIALIZE",$lCalculator,$idMsg)
Else
GUISetState(@SW_RESTORE,$idGUICalc)
GUIDelete($idGUICalc)
$idGUICalc="INACTIVE"
$g_isCalibratingCPI = false
EndIf
Case $idHelp
If $lastYawPresets == "Measure any game" Then
HelpMessage("measure")
Else
HelpMessage()
EndIf
EndSwitch
HandyCalculator($idGUICalc,$lCalculator,$idMsg)
EventMeasurementStatsWindow($idMsg)
$gMode = Abs($gMode) ; if override then ready, if ready or in progress
then no change.
$gValid = InputsValid($sSens, $sPartition, $sYaw, $sTickRate, $sCycle)
Until GetEvent($idMsg)
EndFunc
$sInput[1]=GUICtrlCreateInput( IniRead($gSettingIni,"Default","cpi",800)
, 85, 30, 80, 20)
$sInput[2]=GUICtrlCreateInput( _GetNumberFromString(GUICtrlRead($sInput[1]))*$gS
ens/25.4, 20,107, 75, 20)
$sInput[3]=GUICtrlCreateInput( _GetNumberFromString(GUICtrlRead($sInput[1]))*$gS
ens*60 ,105,107, 75, 20)
$sInput[4]=GUICtrlCreateInput(360/_GetNumberFromString(GUICtrlRead($sInput[1]))/
$gSens*2.54, 20,170, 75, 20)
$sInput[5]=GUICtrlCreateInput(360/_GetNumberFromString(GUICtrlRead($sInput[1]))/
$gSens ,105,170, 75, 20)
$sInput[6]=GUICtrlCreateCheckbox("Lock physical sensitivity", 35,208,130)
$sInput[7]=GUICtrlCreateButton("Calibrate Mouse CPI", 45,53,110,23)
$sInput[8]=GUICtrlCreateButton("Share",164,74,32,17)
$sInput[9]=GUICtrlCreateLabel("", 10,58,35,15,$SS_RIGHT)
Local $hToolTip=_GUIToolTip_Create(0)
_GUIToolTip_SetDelayTime($hToolTip, $TTDT_AUTOPOP, 30000)
_GUIToolTip_SetDelayTime($hToolTip, $TTDT_RESHOW, 500)
_GUIToolTip_SetMaxTipWidth($hToolTip, 500)
Local $hInc = GUICtrlGetHandle($sInput[0])
_GUIToolTip_AddTool($hToolTip, 0, "Degree Per Count",
$hInc)
Local $hCPI = GUICtrlGetHandle($sInput[1])
_GUIToolTip_AddTool($hToolTip, 0, "Count Per Inch", $hCPI)
Local $hDgm = GUICtrlGetHandle($sInput[2])
_GUIToolTip_AddTool($hToolTip, 0, "degree per mm =
incre*CPI/25.4", $hDgm)
Local $hMPI = GUICtrlGetHandle($sInput[3])
_GUIToolTip_AddTool($hToolTip, 0, "Minute[of arc] Per Inch
= incre*CPI*60", $hMPI)
Local $hCcm = GUICtrlGetHandle($sInput[4])
_GUIToolTip_AddTool($hToolTip, 0, "cm per revolution =
2.54 * 360°/(incre*CPI)", $hCcm)
Local $hCin = GUICtrlGetHandle($sInput[5])
_GUIToolTip_AddTool($hToolTip, 0, "inch per revolution =
360°/(incre*CPI)", $hCin)
Local $hCal = GUICtrlGetHandle($sInput[7])
_GUIToolTip_AddTool($hToolTip, 0, "Click to start
recording mouse movement, then hit space to end the measurement.", $hCal)
GUICtrlSetState($sInput[1],$GUI_FOCUS)
GUISetState(@SW_SHOW)
For $i = 0 to 5
_GUICtrlEdit_SetSel($sInput[$i], 0, 0 )
Next
EndIf
Local $cpi = _GetNumberFromString( GUICtrlRead($sInput[1]) )
Local $lock= GUICtrlRead($sInput[6])
Switch $idMsg[0]
Case $sInput[1]
IniWrite($gSettingIni,"Default","cpi",$cpi)
If $lock == $GUI_UNCHECKED Then
$idMsg[0] = -1
Else
$gSens = _GetNumberFromString( GUICtrlRead($sInput[3]) ) /
$cpi / 60
EndIf
Case $sInput[2]
$gSens = _GetNumberFromString( GUICtrlRead($sInput[2]) ) /
$cpi * 25.4
$idMsg[0] = -1
Case $sInput[3]
$gSens = _GetNumberFromString( GUICtrlRead($sInput[3]) ) /
$cpi / 60
$idMsg[0] = -1
Case $sInput[4]
$gSens = 1 / _GetNumberFromString( GUICtrlRead($sInput[4]) ) /
$cpi * 2.54 * 360
$idMsg[0] = -1
Case $sInput[5]
$gSens = 1 / _GetNumberFromString( GUICtrlRead($sInput[5]) ) /
$cpi * 360
$idMsg[0] = -1
Case $sInput[6]
If $lock == $GUI_CHECKED Then
Local $readonly = 1
Else
Local $readonly = 0
EndIf
For $i = 2 to 5
GUICtrlSendMsg($sInput[$i],$EM_SETREADONLY,$readonly,0)
Next
Case $sInput[7]
if $g_isCalibratingCPI then
Local $deltaMouse = $g_mousePathBuffer
Local $calibratedCPI = Sqrt(($deltaMouse[0]*$deltaMouse[0]) +
($deltaMouse[1]*$deltaMouse[1]))/5
GUICtrlSetData($sInput[7], "Calibrate Mouse CPI")
GUICtrlSetData($sInput[9], "" )
if $calibratedCPI>0 and MsgBox(260,"", "You moved {" & $deltaMouse[0]
& ", " & $deltaMouse[1] & "} counts over 5 inches or 127 mm." & @crlf & @crlf _
& "This gives " & $calibratedCPI & " CPI." & @crlf & @crlf
_
& "Confirm entry?" ) == 6 then
$cpi=$calibratedCPI
GUICtrlSetData($sInput[1],$cpi)
IniWrite($gSettingIni,"Default","cpi",$cpi)
If $lock == $GUI_UNCHECKED Then
$idMsg[0] = -1
Else
$gSens = _GetNumberFromString( GUICtrlRead($sInput[3]) )
/ $cpi / 60
EndIf
else
; restore cpi
endif
else
GUICtrlSetData($sInput[7], "Move 5 inches..." )
$g_mousePathBuffer[0] = 0
$g_mousePathBuffer[1] = 0
endif
$g_isCalibratingCPI = not $g_isCalibratingCPI
EndSwitch
If $idMsg[0] == -1 Then
GUICtrlSetData($sInput[0],String( $gSens ))
If $lock == $GUI_CHECKED Then
GUICtrlSetData($sInput[1],String(_GetNumberFromString(GUICtrlRead($sInput[3]))/
$gSens/60))
Else
GUICtrlSetData($sInput[2],String( $gSens*$cpi/25.4))
GUICtrlSetData($sInput[3],String( $gSens*$cpi*60 ))
GUICtrlSetData($sInput[4],String(360/$gSens/$cpi*2.54))
GUICtrlSetData($sInput[5],String(360/$gSens/$cpi ))
EndIf
For $i = 0 to 5
_GUICtrlEdit_SetSel($sInput[$i], 0, 0 )
Next
EndIf
if $g_isCalibratingCPI then
Local $labeldelta = $g_mousePathBuffer
Local $labelCPI = round(Sqrt(($labeldelta[0]*$labeldelta[0]) +
($labeldelta[1]*$labeldelta[1]))/5)
if _GetNumberFromString(GUICtrlRead($sInput[9]))<>$labelCPI then
GUICtrlSetData($sInput[9], $labelCPI )
endif
endif
Return $idGUICalc
EndIf
EndFunc
IniWrite($gYawListIni,GUICtrlRead($sYawPresets),"uncrty","+/-"&BoundUncertainty($gS
ens,$gBounds,"%")&"%")
IniWrite($gReportFile,GUICtrlRead($sYawPresets),"uncrty","+/-"&BoundUncertainty($gS
ens,$gBounds,"%")&"%")
IniWrite($gReportFile,GUICtrlRead($sYawPresets),"yaw" ,
GUICtrlRead($sYaw) )
IniWrite($gReportFile,GUICtrlRead($sYawPresets),"sens" ,
GUICtrlRead($sSens) )
EndIf
$lastYawPresets = GUICtrlRead($sYawPresets)
; update preset memory
_GUICtrlComboBox_ResetContent( $sYawPresets)
; clear yaw list to rebuild from ini
GUICtrlSetData( $sYawPresets,
LoadYawList($gYawListIni)) ; reinitialization
_GUICtrlComboBox_SelectString( $sYawPresets, "/ "&$lastYawPresets )
; select the new preset
Else
; if user input name is void
If $lastYawPresets == "Measure any game" Then
; if pre-cancel preset is measure
KeybindSetter("enable","measure")
; re-enable measure binds
_GUICtrlComboBox_DeleteString( $sYawPresets, 0 )
; delete first item and
_GUICtrlComboBox_InsertString( $sYawPresets, "< Swap yaw & sens >",
0 ) ; set to swap
EndIf
_GUICtrlComboBox_SetEditText( $sYawPresets, $lastYawPresets )
; restore box to last selected
Return "Advanced Info"
; restore button label
EndIf
Case Else
GUICtrlSetData($sYaw,String(IniRead($gYawListIni,StringTrimLeft(GUICtrlRead($sYawPr
esets),2),"yaw",GuiCtrlRead($sYaw))))
EndSwitch
DestroyMeasurementStatsWindow()
Return "Instructions"
EndFunc