2023-07-14 10:27:33 -05:00
#Include , func . ahk
Menu , Tray , Icon , shell32 . dll , 283 ; Set the tray icon to a keyboard
Menu , Tray , Add , & Mouse Mover , Mouse_Mover ; Add item to the tray to move the mouse
Menu , Tray , Add , Settings , D3K_Settings ; Add item to the tray to move the mouse
Menu , Tray , Add , %A_AhkVersion% , docs
;------------------------------------------------------------------------------
; Global Variables
;------------------------------------------------------------------------------
If ( glovar )
{
SetTimer , GloVar , 2000 ; Check every 2 seconds
GloVar:
glovarini := A_MyDocuments " \GloVar.ini " ; Location of the ini that the user modifies
glovarscript := A_Temp " \GloVar.ahk " ; Doesn't need to be anywhere useful as it doesn't contain any external references
;FileGetTime, gvMod, %glovarini%, M
glovarstart := " #SingleInstance force`n#NoTrayIcon`nSendMode, Input`nFileEncoding, UTF-8`n "
If ( WinActive ( " GloVar.ini " ) ) ; Only run when the window isn't active, prevents accidential editing by this while the user is
{
Return
}
FileGetTime , gvModNew , %glovarini% , M
If ! ( gvModNew = gvMod ) ; Those two lines mean the rest of this only executes if there were changes to the ini.
{
SetTimer , GloVar , Off
hotstrings := " "
glovar_array := ini_load ( glovarini )
For sec in glovar_array
{
For key , value in glovar_array [ sec ]
{
If ( value )
{
sec := StrReplace ( sec , " § " , " " ) ; AHK can't handle spaces in nested array names, so they're substituted with § when entered into the array. This reverses that.
StringCaseSense , Off ; Make sure the capitalization doesn't matter
Switch sec
{
Case " Serial Numbers " :
StringUpper , value , value ; Makes it uppercase
ini_write ( glovarini , key , value )
Case " Info " :
If ( key = " case " )
{
StringUpper , value , value ; Makes it uppercase, just in case it was manually typed
value := Trim ( value , " () " )
ini_write ( glovarini , key , value ) ; Writes the properly formatted case number to glovar.ini
}
Case " Clear " : ; Will clear the ini and save its and the documentation file's contents to a log
temp := FileOpen ( docfile , " r " )
doctemp := temp . Read ( )
temp . Close ( )
temp := FileOpen ( glovarini , " r " )
initemp := temp . Read ( )
temp . Close ( )
initemp := RegExReplace ( initemp , " i)(?<=\[)clear(?=\]) " , " Info " ) ; Replace the "clear" section we set with Info, case insensitive
CurrTime := GetDateTime ( " en " ) ; get the current date and time as "YYYY-MM-DD at HH:MM GMT"
temp := FileOpen ( A_MyDocuments " /D3KLog.txt " , " a " )
writethis := " Case on " . CurrTime . " `n `n `n " . doctemp . " `n `n " . initemp ; Save the current time, what was in the doc file, and glovarini to a variable
temp . Write ( " `n `n " writethis " `n `n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ " )
temp . Close ( )
temp := FileOpen ( " glovarsource " , " r " )
glovarsource := temp . Read ( )
temp . Close ( )
temp := FileOpen ( glovarini , " w " )
temp . Write ( glovarsource ) ; Overwrite .ini for a clean slate
temp . Close ( )
temp := FileOpen ( docfile , " w " ) ; Overwrites documentation for a clean slate
temp . Close ( )
script := FileOpen ( glovarscript , " w " )
script . Write ( glovarstart )
script . Close ( )
Run , %A_AhkPath% %glovarscript% ; Just in case. Don't want an old version running.
ToolTip , Cleared
Sleep , 500
ToolTip
FileGetTime , gvMod , %glovarini% , M ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
SetTimer , GloVar , On
Goto , GloVar ; Don't do anything else below this line, Break wasn't taking "GloVar" as a variable
Case ( RegExMatch ( sec , " i)sdrbr(\d*) " , m ) ? sec : ! sec ) : ; for cases with Stolen displays
If ( m1 ) ; sometimes there are multiple stolen displays, this is to account for that.
{
writethis := " [Serial Numbers] "
Loop , % m1
writethis .= " `n s " A_Index " =`nr " A_Index " =`ncc " A_Index " =`nv " A_Index " = "
writethis .= " `n [Info] "
Loop , % m1
writethis .= " `n case " A_Index " = "
} Else {
writethis := " [Serial Numbers]`ns=`nr=`ncc=`nv=`n[Info]`ncase= " glovar_array [ sec , " case " ]
}
temp := FileOpen ( glovarini , " w " )
temp . Write ( writethis )
temp . Close ( )
script := FileOpen ( glovarscript , " w " )
script . Write ( glovarstart )
script . Close ( )
SetTimer , GloVar , On
Goto , GloVar ; Don't do anything else below this line, Break wasn't taking "GloVar" as a variable
}
hotstrings .= " `n :*:$ " key " :: " value
}
}
}
file := FileOpen ( glovarini , " r " )
temp := file . Read ( )
file . Close ( )
temp := RegExReplace ( temp , " `a m)^[\s\R]* " ) ; Get rid of empty lines
temp := RegExReplace ( temp , " m)[ \t]+$ " ) ; Get rid of extra space at the end of strings
temp := Trim ( temp , " `t`r`n " ) ; Remove pesky newlines and extra space at the end
file := FileOpen ( glovarini , " w " )
file . Write ( temp )
file . Close ( )
script := FileOpen ( glovarscript , " w " )
script . Write ( glovarstart hotstrings )
script . Close ( )
Run , %A_AhkPath% %glovarscript%
ToolTip , GloVars updated
Sleep , 500
ToolTip
FileGetTime , gvMod , %glovarini% , M ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
SetTimer , GloVar , On
}
Return
}
;------------------------------------------------------------------------------
; Settings window
;------------------------------------------------------------------------------
D3K_Settings:
! + \: : Run Settings . ahk ; Alt+Shift+\
Return
;------------------------------------------------------------------------------
; Mouse Mover
;------------------------------------------------------------------------------
Mouse_Mover:
If ( msmv_active = True )
{
Run , %A_AhkPath% " msmv.ahk " " off "
msmv_active := False ; Have to do this cause AHK doesn't have a builtin function to detect if something is checked or not.
Menu , Tray , Uncheck , & Mouse Mover
}
Else
{
Run , %A_AhkPath% " msmv.ahk " " on "
msmv_active := True
Menu , Tray , Check , & Mouse Mover
}
Return
;------------------------------------------------------------------------------
; DTAC Solution Opener
;------------------------------------------------------------------------------
#If ( mansol ) ; checks from the variable thats set from the .sett_ini file
!+S:: Run Mansol_Opener . ahk ; Alt+Shift+S
#If
;------------------------------------------------------------------------------
; Case Formatter
;------------------------------------------------------------------------------
#If ( CaseFormatter )
Pause : : Run Case_Formatter . ahk ; The Pause|Break key
#If
;-------------------------------------------------------------------------------
; Special Characters
;-------------------------------------------------------------------------------
#If ( ger )
!s:: Send { U + 00 DF } ;Alt+S scharfes s / Eszett / ß
!a:: Send { U + 00E4 } ;Alt+a ä
+!A:: Send { U + 00 C4 } ;Alt+A Ä
!o:: Send { U + 00 F6 } ;Alt+o ö
+!O:: Send { U + 00 D6 } ;Alt+O Ö
!u:: Send { U + 00 FC } ;Alt+u ü
+!U:: Send { U + 00 DC } ;Alt+U Ü
#If
;-------------------------------------------------------------------------------
; Capitalise dates
;-------------------------------------------------------------------------------
: : monday : : Monday
: : tuesday : : Tuesday
: : wednesday : : Wednesday
: : thursday : : Thursday
: : friday : : Friday
: : saturday : : Saturday
: : sunday : : Sunday
: : january : : January
: : february : : February
: : april : : April
: : june : : June
: : july : : July
: : august : : August
: : september : : September
: : october : : October
: : november : : November
: : december : : December
; German
#If ( ger )
::montag:: Montag
::dienstag:: Dienstag
::mittwoch:: Mittwoch
::donnerstag:: Donnerstag
::freitag:: Freitag
::samstag:: Samstag
::sonntag:: Sonntag
::januar:: Januar
::februar:: Februar
::märz:: März
::mai:: Mai
::juni:: Juni
::juli:: Juli
::oktober:: Oktober
::dezebmer:: Dezember
#If
;------------------------------------------------------------------------------
; Copypastas
;------------------------------------------------------------------------------
; STWA Applied
: * : ] cmy : :
Send STWA applied { Enter 2 } Status : Providing information { Enter 2 } Comments : { Enter 2 } Thank you , { Enter } %name% { Enter 2 } Tier 2 internal steps : { Space } { Enter 2 } SQL : { Enter }
Return
; STWA not available
: * : ] cmn : :
Send STWA not available { Enter 2 } Status : Providing information { Enter 2 } Comments : { Enter 2 } Thank you , { Enter } %name% { Enter 2 } Tier 2 internal steps : { Space } { Enter 2 } SQL : { Enter }
Return
; Need info
: * : ] cmr : :
Send STWA available { Enter 2 } Status : Requesting information { Enter 2 } Comments : { Enter 2 } Thank you , { Enter } %name% { Enter 2 } Tier 2 internal steps : { Space } Verify information { Enter 2 } SQL : { Enter }
Return
: * : ] sdrbr : :
glovar_array := ini_load ( glovarini )
For sec in glovar_array
{
For key , value in glovar_array [ sec ]
{
If ( value )
{
stln_ %key% := value
}
}
}
If ( glovar_array [ " Info " ] . Count ( ) > 1 )
{
Send Stolen Display Replacement Basics Requests { Tab }
Send Received some requests for replacement Basics for Stolen displays @
} Else {
Send %stln_case% { Tab }
Send Received a request for replacement Basics for a Stolen display @
}
Sleep , 1000
Send Stellar
Sleep , 1500
Send { Down } { Tab } : { Enter 2 }
Sleep , 1000
Send { ShiftDown } { Tab 2 } { ShiftUp }
Sleep , 1000
Send { Right 17 }
Sleep , 1000
Send { Enter }
Sleep , 1000
Send { Right }
Send { Enter }
Sleep , 1000
If ( glovar_array [ " Info " ] . Count ( ) > 1 )
{
Loop , % glovar_array [ " Info " ] . Count ( ) {
If ( A_Index < glovar_array [ " Info " ] . Count ( ) )
{
table := " ^{b}Case " A_Index " {Tab}^{b} " stln_case %A_Index% " {Tab}Stolen{Tab} " stln_s %A_Index% " {Tab}Replacement{Tab} " stln_r %A_Index% " {Enter} " stln_cc %A_Index% " {Tab}Machine PIN{Tab} " stln_v %A_Index% " {Tab}Model, Year{Tab 2}Should it qualify?{Tab 2} "
} Else {
table := " ^{b}Case " A_Index " {Tab}^{b} " stln_case %A_Index% " {Tab}Stolen{Tab} " stln_s %A_Index% " {Tab}Replacement{Tab} " stln_r %A_Index% " {Enter} " stln_cc %A_Index% " {Tab}Machine PIN{Tab} " stln_v %A_Index% " {Tab}Model, Year{Tab 2}Should it qualify? "
} ; That way it doesn't put the extra line at the very end
Send %table%
}
} Else {
Send Case { Tab } %stln_case% { Tab } Stolen { Tab } %stln_s% { Tab } Replacement { Tab } %stln_r% { Enter } %stln_cc% { Tab } Machine PIN { Tab } %stln_v% { Tab } Model , Year { Tab 2 } Should it qualify ? { Up 2 } { Tab }
}
Return
; Transferring to DTAC
: * : ] DTAC : :
Send The ISG Global Support Center has determined that this case is hardware related `; therefore , this case is being transferred from the Global Support Center to the ISG DTAC group . A DTAC technician will now work this case via the DTAC system and provide a recommendation in the case Text if more information is needed or if a solution has been found . Please continue to update or check on the progress of this case by using the DTAC system Case Text section moving forward .
Return
; Transferring to Tier2
: * : ] rrt : :
Send This case was unable to be resolved and has been transferred to another team . Our Tier 2 team is investigating the issue to find a short - term resolution . We will update you as soon as we have a recommendation .
Return
; Update after 5 business days
: * : ] upd : :
Send A short - term resolution still has not been identified . We are requesting an immediate update on this case from our Tier 2 team . We will contact you as soon as we have a status update .
Return
; Requesting info
: * : ] req : :
Send A request has been made for additional information in this case . Please provide the following information as soon as possible so this case can be resolved .
Return
; Dealer defect
: * : ] ddefect : :
Send We have communicated your issue to the Product Support and Development Teams . We do not have a timeframe in which your issue will be resolved . At this time , we are closing the case as those teams track the issue . If you have any questions , please have your field team contact the appropriate Product Support Representative .
Return
; Customer defect
: * : ] cdefect : :
Send We have communicated your issue to the Product Support and Development Teams . We do not have a timeframe in which your issue will be resolved . At this time , we are closing the case as those teams track the issue . If you have any questions , please contact your preferred dealer and the field team can contact the appropriate Product Support Representative .
Return
; Workbasket shortcuts, place mouse over Transfer button before typing
: * : ] pd : :
Send PCDSC
Send { Click }
Return
: * : ] pr : :
Send PCRRT
Send { Click }
Return
: * : ] p2 : :
Send PCTIER2
Send { Click }
Return
;------------------------------------------------------------------------------
; Email
;------------------------------------------------------------------------------
: * : ] email : :
Send Hello , { Enter 2 } { Space 3 }
Return
; German
#If ( ger )
: * : [ email : :
Send Hallo , { Enter 2 } { Space 3 }
Return
#If
;------------------------------------------------------------------------------
; Profile email paste
;------------------------------------------------------------------------------
; So when editing Profiles, it won't let you paste in the email field. We don't like that. Make sure to let go of all keys immediatley after pressing this
#If ( mjdpaste )
#v::
sleep , 750
SendInput %clipboard%
sleep , 500
send # ; to make sure the start menu isn't open for some reason
Return
#If
;------------------------------------------------------------------------------
; Common Terms autocorrect and replacement
;------------------------------------------------------------------------------
; JD Names
#If ( jdpn )
: * : [ xx : : XXXXXXXXXXXXX ; I'm not gonna try and find the right amount of X's to appease the CCMS demons
: * : ] xx : : XXXXXXXXXXXXX
; English
: * : ] at : : AutoTrac
: * : ] ba : : Basics & AutoTrac
: * : ] sf : : StarFire
: * : ] jdl : : JDLink
: * : ] jdp : : JDParts
: * : ] mjd : : MyJohnDeere
: * : ] opsc : : Operations Center
: * : ] seccon : : Section Control
: * : ] gs : : GreenStar
: * : ] cc : : CommandCenter
: * : ] fc : : Field Connect
: * : ] rs : : RowSense
: * : ] sub : : subscription
: * : ] ss : : Stellar Support
: * : ] tman : : Technical Manual
: * : ] oman : : Operator 's Manual
: * : ] hl3 : : HarvestLab 3000
: * : ] hlo : : Original HarvestLab
: * : ] bin : : Virtual Inventory
: * : ] warrep : : Warranty Reports
: * : ] tcsm : : Territory Customer Support Manager
: * : ] jdsm : : John Deere Software Manager
: * : ] jddm : : John Deere Data Manager
: * : ] serva : : Service Advisor
: * : ] muc : : Master Unlock Code
: * : ] asmn : : Asset Manager
: * : ] bsm : : Base Station Manager
: * : ] sas : : See & Spray
::rowsense:: RowSense
: * : comar : : COMAR
::mrtk:: mRTK
::rda:: RDA
::rtk:: RTK
::autotrac:: AutoTrac
: * : ccms : : CCMS
: * : dtac : : DTAC
::tcsm:: TCSM
::itec:: iTEC Pro
::ssu:: SSU
::atu:: ATU
: * : mtg : : MTG
::wdt:: WDT
::itc:: iTC
: * : vin : : Machine PIN ; Not actually vehicles, so they don't have VINs
::gs2:: GS2
::gs3:: GS3
::sf1:: SF1
::sf2:: SF2
::sf3:: SF3
::sf4:: SF4
::xid:: xID
::pmcalc:: PMCalc
::vat:: VAT
: * : racf : : RACF
::igrade:: iGrade
: * : JDCP : : JDCP
: * : ISOBUS : : ISOBUS
; German
#If ( ger )
: * : [ at : : AutoTrac
: * : [ ba : : Basics & AutoTrac
: * : [ sf : : StarFire
: * : [ jdl : : JDLink
: * : [ jdp : : JDParts
: * : [ mjd : : MyJohnDeere
: * : [ opsc : : Einsatzzentrale
: * : [ seccon : : Teilbreitensteuerung
: * : [ gs : : GreenStar
: * : [ cc : : CommandCenter
: * : [ fc : : Field Connect
: * : [ rs : : RowSense
: * : [ sub : : Abonnement
: * : [ ss : : Stellar Support
: * : [ tman : : Technische Betriebsanleitung
: * : [ oman : : Betriebsanleitung
: * : [ hl3 : : HarvestLab 3000
: * : [ hlo : : Originales HarvestLab
: * : [ bin : : Virtuellen Bestand
: * : [ warrep : : Warranty Reports
: * : [ tp : : TouchPoint
: * : [ tcsm : : Technischer Bezirksleiter
: * : [ jdsm : : John Deere Software Manager
: * : [ jddm : : John Deere Data Manager
: * : [ serva : : Service Advisor
: * : [ muc : : Master Unlock Code
: * : [ asmn : : Asset Manager
: * : [ bsm : : Base Station Manager
#If
;------------------------------------------------------------------------------
; QoL Improvements
;------------------------------------------------------------------------------
: * : ] me : :
Send , % Format ( " {:U} " , A_UserName )
Return
: * : [ me : :
Send , % Format ( " {:U} " , A_UserName )
Return
#If ! ( email = " LastnameFirstname@JohnDeere.com " )
: * : @me : :
Send , %email%
Return
#If
#j:: ; Open the downloads folder on Win+J
Run , C : \Users \%A_UserName% \Downloads
Return
: * : [ now : :
: * : ] now : :
SendInput , % GetDateTime ( " ISO8601 " ) ; Send the current time/date in ISO8601 format
Return
: * : [ today : :
: * : ] today : :
SendInput , % GetDateTime ( " date " ) ; Send the current date in ISO8601 format
Return
: * : [ deg : : { ASC 248 }
: * : ] deg : : { ASC 248 }
: * : [ eq : : { ASC 247 }
: * : ] eq : : { ASC 247 }
: * : [ shrug : : ¯ \_ ( ツ ) _ / ¯
: * : ] shrug : : ¯ \_ ( ツ ) _ / ¯
: * : [ ltd : : License to Deere ™
: * : ] ltd : : License to Deere ™
docs:
run https : / / www . autohotkey . com / docs / AutoHotkey . htm
Return
F19:: Run D3K . ahk